Here's我使用的网页作为CSS的参考,请注意我今天早上才开始学习HTML / CSS。
我对两个选择器感到困惑,引用了网站,&#34; div p&#34;选择器selects all <p> elements inside <div> elements
和&#34; div&gt; P&#34;选择器selects all <p> elements where the parent is a <div> element
。
这两者有什么区别?如果可能的话,这两个选择器不可互换使用的例子将会有所帮助。
答案 0 :(得分:26)
div > p
仅选择<p>
的直接子项<div>
元素。
所以:
div > p
将选择此段落:
<div>
<p>This is a paragraph</p>
</div>
但不会选择此段:
<div>
<table>
<tr>
<td>
<p>This will not get selected</p>
</td>
</tr>
</table>
</div>
答案 1 :(得分:8)
选择p
内的所有div
代码表示p
内的所有div
代码...其中第二个代表p
代码这只是div
以下的一个级别。
来自The 30 CSS Selectors you Must Memorize#8:
标准X Y和X之间的差异> Y是后者只会选择直接的孩子。例如,请考虑以下标记。
考虑这个例子:
<强> HTML 强>
<div class="one">
<p>asdf</p>
<div>
<p>asdf</p>
</div>
</div>
<div class="two">
<p>asdf</p>
<div>
<p>asdf</p>
</div>
</div>
<强> CSS 强>
div.one p {
margin: 20px;
background-color:#F00;
}
div.two > p {
margin: 20px;
background-color:#0F0;
}
在第一个标签中,两个p
标记都会显示为红色(#F00
),因为它会选择p
中的所有div
标记。在第二个中,只有第一个p
标记为蓝色(#0F0
),因为它只选择直接后代。
答案 2 :(得分:1)
div p
是后代选择器,它将匹配层次结构中p
更高的div
个元素。使用子选择器的div > p
仅匹配直接父级为p
的{{1}}个元素。
答案 3 :(得分:0)
案例1 :"div p"
表示将选择所有<p>
<div>
<p id=1>
<p id=2>
<p id=3></p>
</p>
</p>
</div>
案例2 :"div > p"
仅选择<p id=1>
,即所有p
代码div
作为直接父母
答案 4 :(得分:0)
div p
会将任何p
与祖先div
匹配,后者不必是其父级。所以这些都匹配:
<div><p>Matches</p></div>
<div><form><p>Matches</p></form></div>
<div><section><blockquote><p>Matches</p></blockquote></section></div>
div > p
只会将p
与直接父div
匹配。像这样:
<div><p>Matches</p></div>
(您会注意到div > p
匹配的所有内容也与div p
匹配。)