#menu > li
在您的 CSS 中使用,而不是#menu li
将边框限制为第一组。
IE
#menu > li
{
border-left: 1px solid black;
}
更新
根据 OP 发布的小提琴 - http://jsfiddle.net/DrJsr/3/,标记为:
<ul id="menu">
<li>first set<li>
<ul>
<li>second set</li>
<li>second set</li>
</ul>
<li>first set<li>
<li>first set<li>
</ul>
上面有几个问题:
- 一些 LI 没有关闭。这会导致一些浏览器误认为它是另一个 li 的开始
- 第二组的 UL 是主 UL 的直接子级 - 这在 HTML 中无效 - 理想情况下,第二个 UL 应该是主 UL 内的其中一个 LI 的子级
现在,关于边界 - 它实际上确实工作正常。如果您使用 Firebug 或 Chrome 检查第二组的 UL,您会看到浏览器自动添加一个 LI 来包装第二组的 UL,从而自动使 HTML 有效。
即您的 HTML 自动变为:
<ul id="menu">
<li>first set</li>
<li> <!-- this is added by browser and this LI will have a left border since it falls under #menu > li -->
<ul>
<li>second set</li>
<li>second set</li>
</ul>
</li>
<li>first set</li>
<li>first set</li>
</ul>
这个新的 LI 落入#menu > li
并呈现左边框。如果您检查 Firebug,您会看到您看到的左边框是为这个新的 LI 渲染的。