У меня возникают некоторые проблемы с иерархией CSS (не уверен, правильно ли назвать ее иерархией). Я пытаюсь создать нижний бит HTML.
<body>
<section id="content">
<article>
<ul class="posts-list">
<li class="post-item">
<h2>[post title]</h2>
<p class="item-description">...</p>
<p class="item-meta">...</p>
</li>
...
</ul>
</article>
</section>
</body>
Поскольку содержимое раздела # изменяется на каждой странице, я хотел бы поддерживать согласованные стили для всех из них, поэтому я написал несколько "глобальных" правил CSS.
#content {
color: #000;
margin-left: 300px;
max-width: 620px;
padding: 0px 10px;
position: relative;
}
#content p,
#content li {
color: #111;
font: 16px / 24px serif;
}
Я хотел бы по-разному стиль HTML внутри ul.posts-list
, поэтому я написал эти правила.
li.post-item > * {
margin: 0px;
}
.item-description {
color: #FFF;
}
.item-meta {
color: #666;
}
Однако я столкнулся с некоторыми проблемами. Вот как Chrome предоставляет CSS:
По какой-то причине правила #content p, #content li
переопределяют мои правила для .item-description
и .item-meta
. Мое впечатление заключалось в том, что имена классов/идентификаторов считаются конкретными и, следовательно, более приоритетными. Однако, похоже, я неправильно понимаю, как работает CSS. Что я здесь делаю неправильно?
Изменить: Кроме того, где я могу узнать больше о том, как работает эта иерархия?