:第一个孩子定位所有子元素

问题描述:

我有一个无序列表,其ID为“导航”和一些子列表项元素。:第一个孩子定位所有子元素

我想选择第一个项目与:first-child,但它是应用我用这个CSS到所有其他列表项目。

ul#navigation li:first-child{ 
    background:#fff; 
} 

因此,重申:这是给每个列表项目一个白色的背景。我只想选择第一个元素。出了什么问题?

+2

对我来说工作得很好:http://jsfiddle.net/HyKFJ/。发布您的HTML。 – Blender

+0

我正要这样做,但意识到我正在用链接包围每个列表项目。我想保持这种方式,因为我希望整个李是一个链接,但这会导致这个问题。 –

+1

@MarkLyons不要用链接包围你的'li';而是将链接'display'属性设置为'block'。 – Sampson

根据该意见,你的问题是,您的标记看起来像这样:

<ul id="navigation"> 
    <a href="http://google.com"> 
     <li>Google</li> 
    </a> 
</ul> 

注意如何每li将这种模式下:first-child。我建议你在你的列表项目中使用更合适的嵌套锚点结构。如果你想锚,填补了列表项,设置其显示到块:

<ul id="navigation"> 
    <li><a href="http://google.com">Google</a></li> 
</ul> 

并结合CSS:

#navigation a { display: block } 

一旦你有了到位的结构性变化,你的选择应该定位第一个列表项:

/* > to target only immediate list items */ 
#navigation > li:first-child { 
    background: red; 
} 
+0

这可以工作,但在链接中添加'display:block'并不会在div的整个区域中生效。 –

+0

@MarkLyons对列表项目来说,填充/边距可能会妨碍您的审美。你可以把你的页面在线,或者在http://jsfiddle.net上做一个演示吗? – Sampson

+0

是的,李有一个顶部和底部填充。我在链接中添加了'width:100%',并将填充移至链接样式。一切顺利,谢谢! –