2012-01-07 50 views
1

我的div里面的li元素:李:悬停初学者的言论

<ul id="tabs"> 
    <li id="tab-1"> <div id="xxx"></div> </li> 
    .... 
</ul> 

如果在CSS我在li元素应用悬停效果

#tabs li:hover {....} 

的效果,符合市场预期,加李和孩子的div,

但是如果我做一个空间里和结肠

#tabs li :hover {....} 

效果只适用于小孩div

这是正常的吗?我是一名脚本初学者,通过阅读不同的教程,我得到的印象是,执行脚本时,空白并不会产生变化。我在Chrome,Safari和Firefox中测试了这个功能。

+0

HTML和CSS不是脚本语言,而是标记语言。他们不执行任何操作,而是描述架构和样式。 – Rob 2012-01-08 13:34:33

回答

5

#tabs li :hover {....} = #tabs li *:hover {....}(* =通用选择器)。

空格分隔子选择符。当您连接多个选择器时,这是有意义的:

说,你想选择一个<div class="foo">,但不是<a class="foo"><div>。正确的选择器将是div.foo(元素<div>与类foo)。

如果在点之前添加空格,则应选择foo类的元素,该元素是<div>的子元素。

回到你的情况。

<div id="tabs"> #tabs     #tabs 
    <li>   li:hover    li 
     <div>  div     *:hover 
       = #tabs li:hover div = #tabs li *:hover 
+0

注意:空格选择**所有**后代。如果你想匹配直接的孩子,使用'>':'#tabs> li:hover> div' – 2012-01-07 15:42:42

+0

Tnx作为快速回复。它现在有意义。 – vucibatina 2012-01-07 20:30:30

+0

@ user1136011 *(对已编辑问题的评论)*代码块可以用四个空格前缀文本标记;反引号(')用于标记内联代码。另外,如果您的问题已得到解答,请将答案标记为“已接受”,以便其他人可以看到问题已解决。 – 2012-01-07 20:34:17

0

这是正常的行为。 CSS中的空间是分隔符。在这种情况下,您选择li后代。