У меня возникли некоторые проблемы с "иерархией" 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. Что я здесь делаю неправильно?
Изменить :Кроме того, где я могу узнать больше о том, как работает эта иерархия?