2012-12-26 57 views
3

我只是搞乱了新的HTML5标签和伪选择器,并注意到该部分:唯一 - 子选择器似乎不起作用。我正在使用最新版本的Chrome(23.0)进行测试。为什么CSS部分:独生子选择器不起作用?

我的代码是:

<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>​ 

和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; 

    }​ 

从理论上讲,文本“第一个孩子的测试”应为黄色,因为在第二,仅次于一个DIV部分,但它没有得到字体的黄色。

如果我将选择器更改为div:only-child,它将工作得很好。

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

任何理由,这是不工作?

感谢

+0

您似乎没有任何'section'元素是'only-child'。你期待什么规则匹配? – robertc

回答

7

此规则:

section:only-child 

匹配一个section元件,其是一个only-child

此规则(注意的空间):

section :only-child 

匹配其是sectiononly-child的元件。 Is this what you expected

+0

不断被空间咬伤......谢谢@robertc,那正是我想要的。 – GR7

+4

更确切地说,如果你想要'section' **的唯一子**,你应该使用'>'而不是空格:'section>:only-child'。后面跟着':only-child'的空格表示其父代的唯一孩子,其中父代可能是或者可能不是'section'。 – BoltClock

1

x:only-childx元素其父唯一的孩子 - 而不是x只有一个孩子。

相关问题