使用最后一个子选择器

Mir*_*ral 106 css css-selectors

我的目标是在最后应用CSS li,但它没有这样做.

#refundReasonMenu #nav li:last-child {
    border-bottom: 1px solid #b5b5b5;
}
Run Code Online (Sandbox Code Playgroud)
<div id="refundReasonMenu">
    	<ul id="nav">
    		<li><a id="abc" href="#">abcde</a></li>
    		<li><a id="def" href="#">xyz</a></li>
    	</ul>
    </div>
Run Code Online (Sandbox Code Playgroud)

如何选择只有最后一个孩子?

Vot*_*ple 171

:last-child伪类仍然无法可靠地跨浏览器使用.特别是,Internet Explorer版本<9和Safari <3.2绝对不支持它,尽管Internet Explorer 7和Safari 3.2 确实支持它:first-child.

您最好的选择是明确地last-child向该项添加(或类似)类,然后应用li.last-child.

  • last-child适用于所有现代浏览器,这意味着它在任何版本的IE中都不起作用. (92认同)
  • IE8也不支持`:last-child`.并不是*那个好奇的.`:first-child`是一个CSS2伪类,`:last-child`是一个CSS3伪类. (46认同)
  • fyi,IE**9**[支持`:last-child`](http://msdn.microsoft.com/en-us/library/cc351024%28v=vs.85%29.aspx#pseudoclasses). (25认同)
  • IE7拒绝承认其他私生子 (21认同)
  • @mercator好奇的是:第一个孩子在CSS2中实现了但是:最后一个孩子一直待到CSS3 ......同时添加它们似乎很明显. (6认同)
  • @Cobby这是一个解析的东西.:first-child更容易实现,因为它不需要预见.请参阅http://snook.ca/archives/html_and_css/css-parent-selectors (3认同)

Bra*_*lva 76

另一个可能对您有用的解决方案是扭转这种关系.因此,您将为所有列表项设置边框.然后,您将使用first-child来消除第一个项目的边框.在所有浏览器中静态支持第一个子节点(意味着它不能通过其他代码动态添加,但是first-child是CSS2选择器,而在CSS3规范中添加了last-child)

注意:如果列表中只有2个项目(如示例),则此方法仅适用于您的预期方式.任何第3项及其上都将应用边框.

  • 开箱即用的+1思考:-)我刚刚将我的最后一个子元素转换为第一个子元素,并通过border-right更改为border-left以用于菜单分隔符.现在IE8喜欢我的CSS. (2认同)

Tar*_*rik 43

如果你认为你可以使用Javascript,那么从jQuery支持last-child,你可以使用jQuery的css方法,它会支持几乎所有的浏览器

示例代码:

$(function(){
   $("#nav li:last-child").css("border-bottom","1px solid #b5b5b5")
})
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到更多信息:http://api.jquery.com/css/#css2

  • Wayyy更喜欢做`$("#nav li:last-child").addClass('last-child')`这样你就可以在你的样式表中保留样式. (95认同)
  • 谈论脏. (8认同)

ccp*_*zza 19

如果列表项的数量是固定的,您可以使用相邻的选择器,例如,如果您只有三个<li>元素,则可以选择最后一个<li>:

#nav li+li+li {
    border-bottom: 1px solid #b5b5b5;
}
Run Code Online (Sandbox Code Playgroud)

  • 你的选择器错了.`li + #nav li`在`li`之后的`#nav`里面选择`li`.你的选择器应该只是`#nav li + li + li`. (3认同)

nzi*_*nab 13

如果您发现自己经常需要CSS3选择器,您可以随时使用您网站上的选择性库:

http://selectivizr.com/

它是一个JS脚本,它将几乎所有CSS3选择器的支持添加到浏览器中,否则它们将无法支持它们.

<head>用IE条件将它扔进你的标签:

<!--[if (gte IE 6)&(lte IE 8)]>
  <script src="/js/selectivizr-min.js" type="text/javascript"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)