使用CSS时,我可以通过以下方式查询元素:
div > .class
div .class
div + .class
但是,我不能完全区分这些DOM
个查询之间的确切区别。他们都指向儿童元素吗?我知道">"和" " (空间)做。
但在什么情况下我会使用每种?
答案 0 :(得分:12)
在CSS中,这些被称为 Combinators ,意味着三种不同的东西:
div > .class
:被称为Child selector,将选择div
的直接子项并且具有类.class
的所有元素。
div .class
:被称为Descendant selectors,会选择div中的所有元素并拥有类.class
。
div + .class
:被称为Adjacent sibling selector,会匹配紧跟div
后的任何元素并拥有类.class
。
示例:强>
在以下示例中:
<div>
<p class="test">
<a href="#" class="test">
Testing link</a>
<img class="test"/>
</p>
<span class="test">A span</span>
</div>
<h4 class="test">A title</h4>
div > .test
仅匹配<p>
和<span>
元素。div .test
将匹配<p>
,<a>
,<img>
和<span>
元素。div + .test
仅匹配<h4>
元素,因为它会立即跟随<div>
。<强>演示:强>
div .test {
background: yellow;
}
div>.test {
background: red;
}
div+.test {
background: green;
}
<div>
<p class="test">
Pragraph
<a href="#" class="test">
link</a>
<img class="test" width="50px" height="50px" />
</p>
<span class="test">Span</span>
</div>
<h4 class="test">Title</h4>