В моих тестах стили для правила div > ul
также применяются к div ul li ul
элементам. Почему дочерний селектор >
не всегда применяется?Понимание селектора дочерних элементов CSS>
У меня есть решение для этого, но я хочу понять, почему мне нужно использовать это решение.
В CSS я понимаю, что a b
выберет каждый элемент, который соответствует b
, который является потомком элемента, который соответствует a
. Элемент a
может отображаться в любом месте иерархии над элементом b
.
Я думал, что понял, что a > b
будет выбирать только те элементы, которые соответствуют b
, если они являются неотложными дочерними элементами элемента, который соответствует a
. Элемент a
должен быть прямым родителем элемента b
.
Однако в тесте ниже стиль font-weight: bold;
применяется ко всем изделиям ul
, даже если они не являются непосредственными дочерними элементами элемента div
. Чтобы этот стиль не применялся, мне нужно сначала установить конфликтный стиль, как и для свойства color
.
Какова логика в CSS, которая заставляет ее работать так, как она делает?
div ul {
color: black;
}
div > ul {
font-weight: bold;
color: red
}
<div>
<ul>
<li>red and BOLD 1</li>
<li>red and BOLD 2</li>
<li>red and BOLD 3
<ul>
<li>black and BOLD 1</li>
<li>black and BOLD 2</li>
</ul>
</li>
<li>red and BOLD 4</li>
</ul>
</div>
Свойство шрифта наследуется. См. Http://jsfiddle.net/tts7x7gz/1/, а затем удалите '>' в 'div> ul'. См. Также http://www.w3.org/TR/CSS21/propidx.html – j08691