Какой смысл использовать этот синтаксис
div.card > div.name
В чем разница между этим
div.card div.name
css
css-selectors
Рэнди Майер
источник
источник
Ответы:
A > B
будет выбирать только B, которые являются прямыми дочерними элементами для A (то есть между ними нет других элементов).A B
выберет любые B, которые находятся внутри A, даже если между ними есть другие элементы.источник
>
является дочерним селектором. Он определяет только непосредственные дочерние элементы, а не потомков (включая внуков, правнуков и т. Д.), Как во втором примере без>
.Дочерний селектор не поддерживается IE 6 и ниже. Большая таблица совместимости здесь .
источник
div.card > div.name
совпадает,<div class='card'>....<div class='name'>xxx</div>...</div>
но не совпадает<div class='card'>....<div class='foo'> ... <div class='name'>xxx</div>..</div>....</div>
div.card div.name
соответствует обоим.То есть
>
селектор гарантирует, что выбранный элемент с правой стороны>
является непосредственным дочерним элементом элемента с левой стороны.Синтаксис без
>
совпадений,<div class='name'>
который является потомком (не только потомком)<div class='card'>
.источник
A> B выбирает B, если он является прямым потомком A, тогда как AB выбирает B, является ли он прямым потомком B или нет.
источник
> против космоса
Рассмотрим два сценария
div > span { }
vs.div span { }
Здесь
<space>
выбираются все<span>
элементы<div>
элемента, даже если они находятся внутри другого элемента. > Выбирает всех дочерних элементов<div>
элементов элемента, но если они находятся внутри другого элемента.> (Больше чем):
Этот просто выбирает
<span>World!</span>
и не заглядывает<span>
внутрь<p>
тег.Космос
Он выбирает все теги span, даже если они вложены в другой тег.
источник