Ответ 1
Подумайте, что означают слова "ребенок" и "потомок" на английском языке:
- Моя дочь и мой ребенок, и мой потомок
- Моя внучка не является моим ребенком, но она является моим потомком.
Я немного запутался между этими двумя селекторами.
Селектор потомков:
div p
выбрать все p
пределах div
независимо от того, является ли он немедленным descedent? Итак, если p
находится внутри другого div
он все равно будет выбран?
Затем дочерний селектор:
div > p
Какая разница? Ребенок означает немедленного ребенка? Например.
<div><p>
против
<div><div><p>
оба будут выбраны или нет?
Подумайте, что означают слова "ребенок" и "потомок" на английском языке:
Да, вы правы. div p
будет соответствовать следующему примеру, но div > p
не будет.
<div><table><tr><td><p> <!...
Первый называется селектор потомков, а второй называется дочерний селектор.
Bascailly, "a" выбирает все b внутри a, в то время как "a > b" выбирает b, что только дети для a, он не будет выбирать b, что является дочерним элементом b, что является дочерним элементом.
Этот пример иллюстрирует разницу:
div span{background:red}
div>span{background:green}
<div><span>abc</span><span>def<span>ghi</span></span></div>
Цвет фона abc и def будет зеленым, но ghi будет иметь красный цвет фона.
ВАЖНО: Если вы измените порядок правил на:
div>span{background:green}
div span{background:red}
Все буквы будут иметь красный фон, потому что селектор потомков также выбирает дочерний элемент.
Помните, что селектор дочерних элементов не поддерживается в Internet Explorer 6. (Если вы используете селектор в селекторе jQuery/Prototype/YUI etc, а не в таблице стилей, он все равно работает)
В теории: ребенок => непосредственный потомок предка (например, Джо и его отец)
Descendant => любой элемент, который произошел от определенного предка (например, Джо и его прапрадед)
На практике: попробуйте этот HTML:
<div class="one">
<span>Span 1.
<span>Span 2.</span>
</span>
</div>
<div class="two">
<span>Span 1.
<span>Span 2.</span>
</span>
</div>
с этим CSS:
span { color: red; }
div.one span { color: blue; }
div.two > span { color: green; }
div p
Выбирает все элементы 'p', где родитель является элементом 'div'
div > p
Это означает, что дети Выбирает все элементы "p", где родительский элемент "div"
Выбор CSS и применение стиля к определенному элементу могут быть выполнены путем перемещения через элемент dom [Пример
.a .b .c .d{
background: #bdbdbd;
}
div>div>div>div:last-child{
background: red;
}
<div class='a'>The first paragraph.
<div class='b'>The second paragraph.
<div class='c'>The third paragraph.
<div class='d'>The fourth paragraph.</div>
<div class='e'>The fourth paragraph.</div>
</div>
</div>
</div>