为什么CSS部分:only-child选择器不起作用?

GR7*_*GR7 3 html css css-selectors pseudo-class css3

我只是搞乱了新的HTML5标签和伪选择器,并注意到部分:only-child选择器似乎不起作用.我在最新版本的Chrome(23.0)上测试了这个.

我的代码是:

<section id="s1">
    <div id="div1">abc</div>
    <div id="div2">
        <span>first span</span>
        <span class="sp">second span</span>
    </div>
</section>

<section>
    <div>first child test</div>
</section>?
Run Code Online (Sandbox Code Playgroud)

而CSS是:

section {
background-color: brown;
width: 400px;
height: 200px;
}

#s1 {
position: relative; 
background-color: rgba(0,255,0,0.5); 
border: 1px solid #000; width: 50%;
}

#div1 {
background-color: #0f0; 
position: relative;
}

#div2 {
background-color: #0ff; 
width: 200px; 
color: red;
}

#div2 .sp {
color: white;
text-decoration:line-through;
}

section:only-child {
color: yellow;

    }?
Run Code Online (Sandbox Code Playgroud)

理论上,文本"第一个子测试"应该是黄色的,因为第二部分只有一个div,但它没有获得字体的黄色.

如果我将选择器更改为div:only-child,它将正常工作.

你可以在这里看到jsfiddle:http://jsfiddle.net/KwzZs/3/

为什么这不起作用?

谢谢

rob*_*rtc 7

这条规则:

section:only-child
Run Code Online (Sandbox Code Playgroud)

匹配一个section元素only-child.

这个规则(注意空间):

section :only-child
Run Code Online (Sandbox Code Playgroud)

匹配其是一个元件only-child的一个section. 这是你所期望的吗?

  • 更确切地说,如果你想要`section`**的唯一的孩子**你应该使用`>`而不是空格:`section>:only-child`.后跟`:only-child`的空格表示其父项的唯一子项,其中父项可能是也可能不是`section`. (4认同)