ice*_*l89 292 css css-selectors
我在这两个选择器之间有点困惑.
是后代选择器:
div p
Run Code Online (Sandbox Code Playgroud)
选择p一个div是否是一个直接的后代?所以,如果p它在另一个内部div仍然会被选中?
然后是子选择器:
div > p
Run Code Online (Sandbox Code Playgroud)
有什么不同?孩子是指直系孩子吗?例如.
<div><p>
Run Code Online (Sandbox Code Playgroud)
VS
<div><div><p>
Run Code Online (Sandbox Code Playgroud)
会被选中还是不被选中?
Ric*_*dle 457
试想一下英文中"孩子"和"后代"的含义:
Çağ*_*kin 45
是的,你是对的.div p将匹配以下示例,但div > p不会.
<div><table><tr><td><p> <!...
Run Code Online (Sandbox Code Playgroud)
Ign*_*526 23
Bascailly," AB "选择所有B的内部,而" A> B "选择B的东西只是孩子的一个,也不会选择b什么是孩子b是什么的孩子一个.
这个例子说明了不同之处:
div span{background:red}
div>span{background:green}
<div><span>abc</span><span>def<span>ghi</span></span></div>
Run Code Online (Sandbox Code Playgroud)
abc和def的背景颜色为绿色,但ghi将具有红色背景颜色.
重要提示:如果您将规则的顺序更改为:
div>span{background:green}
div span{background:red}
Run Code Online (Sandbox Code Playgroud)
所有字母都有红色背景,因为后代选择器也会选择孩子.
Sno*_*ash 10
从理论上讲: 孩子=>祖先的直系后裔(例如乔和他的父亲)
后代=>任何来自特定祖先的元素(例如乔和他的曾祖父)
在实践中:尝试这个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>
Run Code Online (Sandbox Code Playgroud)
用这个CSS:
span { color: red; }
div.one span { color: blue; }
div.two > span { color: green; }
Run Code Online (Sandbox Code Playgroud)
请注意,Internet Explorer 6中不支持子选择器.(如果在jQuery/Prototype/YUI等选择器中使用选择器而不是样式表中它仍然有效)