CSS规则来设置第一个列表项的样式

sip*_*wiz 5 css

我正在尝试将CS​​S样式应用于顶部列表项,但无法以所需方式应用规则.在下面的示例中,我正在尝试删除第一个li项目的顶部边框.如果我将style="border-top: none;"内联放在locationMenuTopItem元素上,但是我需要使用样式块来实现它.

为什么#locationMenu li区块覆盖了#locationMenuTopItem区块?

<html>
<head>
 <style>
 #locationMenu li {
    border-top: 1px solid #e1e1e1;    
}

#locationMenuTopItem {
   border-top: none;
}
</style>
</head>
<body>
<ul id="locationMenu">
     <li id="locationMenuTopItem"><a href="#">Top Menu</a>
         <ul>
           <li><a href="#">Sub Menu 1</a></li>
           <li><a href="#">Sub Menu 2</a></li>
           <li><a href="#">Sub Menu 3</a></li>
         </ul>
     </li>
     <li><a href="#">Top Menu 2</a></li>
     <li><a href="#">Top Menu 3</a></li>
   </ul>
</body>
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 13

为什么"#locationMenu li"会阻止#locationMenuTopItem块?

它更具体

#locationMenu > li:first-child 
Run Code Online (Sandbox Code Playgroud)

应该做的工作,而不必添加额外的ID.(虽然不在IE6中)


Mar*_*nix 5

这可能是一个可能的答案:

#locationMenu li,
#locationMenu li:first-child ul li
{
    border-top: 1px solid #e1e1e1;    
}

#locationMenu li:first-child
{
    border-top:none;
}
Run Code Online (Sandbox Code Playgroud)

它是超支的,因为#locationMenu li比#locationMenuTopItem更深.连续的语句越多,它就越深.


Yi *_*ang 1

由于CSS的特殊性- 选择#locationMenu li比. 使用将在这里工作。#locationMenuTopItem#locationMenu #locationMenuTopItem

这是 Andy Clarke 提供的图形指南,可以提供帮助:http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html