Это может быть основной вопрос, но для меня он все еще запутан, где я могу использовать +
или >
в CSS.
Я вижу много селекторов типа li > a
или div + span
и т.д., но я не уверен, в чем разница и когда их использовать?
Это может быть основной вопрос, но для меня он все еще запутан, где я могу использовать +
или >
в CSS.
Я вижу много селекторов типа li > a
или div + span
и т.д., но я не уверен, в чем разница и когда их использовать?
Знак означает выбор прямого потомка
Пример:
CSS
div > ul {
list-style: none;
}
HTML
Здесь стиль будет применяться к <ul>
<div>
<ul>
</ul>
</div>
Знак + означает смежный родной брат
Пример:
CSS
p + p
{
font-weight: bold;
}
HTML
Здесь стиль будет применяться к последнему <p>
<div>
<p></p>
<p></p>
</div>
Селекторы подробно описаны в спецификации W3 CSS, но вот дайджест:
Непосредственный дочерний селектор
Селектор >
- это непосредственный селектор для детей. В вашем примере li > a
правило будет выбирать любой элемент <a>
, который является непосредственным дочерним элементом элемента <li>
.
Правило выбрало бы якорь в этом примере:
<ul>
<li><a href="#">An anchor</a></li>
</ul>
Смежный селектор sibling
Селектор +
- это соседний селектор для брака. В вашем примере div + span
правило будет выбирать любые элементы <span>
, которым сразу предшествует элемент <div>
, и где оба они имеют один и тот же родительский элемент.
Элемент span будет выбран в этом случае:
<article>
<div>A preceding div element</div>
<span>This span would be selected</span>
</article>
>
- это селектор direct child. В вашем примере li > a
это будет выбирать только теги <a>
, которые являются прямыми потомками <li>
.
+
означает братьев и сестер выбранных элементов. В вашем примере div + span
будет выбирать любой <span>
рядом с <div>
(с тем же родителем).
li > a
будет выбирать только элементы a
, которые являются прямыми потомками элементов li
. div + span
будет выбирать только элементы span
, которые следуют за элементом div
.
Подробнее в @bažmegakapa ссылка: http://www.w3.org/TR/CSS2/selector.html#pattern-matching
Я не уверен в знаке +, но знак > css означает прямой дочерний элемент, рассмотрим это
div > h1 { color: red; }
Это создаст все теги h1, которые являются прямым дочерним элементом div.
<h1>BLAH</h1>
<div>
<h1>BLAH</h1>
</div>
В этом случае первый h1 будет оставлен в покое, второй, поскольку он является прямым потомком тега div, будет красным.