我有一些CSS代码:
.welcome div {
font-size: 20px;
}
它实现了我的期望,但我也可以像下面这样编写:
.welcome > div {
font-size: 20px;
}
会做完全相同的事情。
使用其中一个而不是另一个是否有任何原因,还是它们只是完成相同任务的两种不同方式?
我有一些CSS代码:
.welcome div {
font-size: 20px;
}
它实现了我的期望,但我也可以像下面这样编写:
.welcome > div {
font-size: 20px;
}
会做完全相同的事情。
使用其中一个而不是另一个是否有任何原因,还是它们只是完成相同任务的两种不同方式?
>
选择一个子元素,而使用空格将选择任何级别的嵌套元素。␣
/空格...<div class="welcome">
<section>
<div>This will be selected</div>
</section>
<div>This will be selected as well</div>
</div>
Demo (使用␣
/空格)
.welcome div {
font-size: 20px;
color: #f00;
}
>
。<div class="welcome">
<section>
<div>This won't be selected</div>
</section>
<div>This will be selected</div>
</div>
div
元素,它是一个 子元素,属于含有 .welcome
类名的元素,但它不会选中嵌套在 section
标签内部的 div
,因为它是外部 div
的 孙子元素(而非子元素)。
Demo 2 (使用 >
)
.welcome > div {
font-size: 20px;
color: #f00;
}
来自MDN:(对于␣
)
␣
组合器(表示空格,或更准确地说是一个或多个空格字符)结合两个选择器,使得组合选择器仅匹配第二个选择器所匹配的元素中,存在一个祖先元素匹配第一个选择器的元素。后代选择器类似于子选择器,但它们不要求匹配元素之间的关系严格为父子关系。
来自MDN:(对于>
)
>
组合器分离两个选择器,并仅匹配由第一个选择器匹配的元素的直接子元素中,由第二个选择器匹配的元素。相比之下,当两个选择器与后代选择器组合时,组合选择器表达式会匹配由第二个选择器匹配的元素中,存在由第一个选择器匹配的祖先元素,无论DOM上跨越多少级。
它们意思不同。
.welcome div
的意思是选择任何一个是 .welcome
后代的 div
元素。所以它会选择所有这些 div
元素:
<section class="welcome">
<div>Me</div>
<div>And me
<div>And me
<div>And me too!</div>
</div>
</div>
</section>
.welcome > div
只选择.welcome
下直接的子元素div
。所以:
.welcome > div
只会匹配 .welcome
下一级的 div
元素。
<section class="welcome">
<div>It selects me</div>
<div>And me
<div>But not me
<div>And not me either!</div>
</div>
</div>
</section>
请阅读http://css-tricks.com/child-and-sibling-selectors/和https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/Selectors
欢迎 div 将影响“欢迎”类内的所有 div…如果您使用选择器“>”,它将仅影响“欢迎”的子元素。
例如:
<div class="welcome">
<div class="one">
<div class="two">
</div>
</div>
<div class="other">
</div>
.welcome div
.welcome>div
if you use
.welcome div
{
font-size: 20px;
}
CSS将应用于.welcome的所有div后代元素。
如果您使用
.welcome > div
{
font-size: 20px;
}
CSS只会应用于直接的子级div元素,而不是它们的后代元素。
请查看链接http://jsfiddle.net/65rL6/
希望这有帮助!