如何使用css nth-child选择列表中的最后2项?

时间:2011-07-07 01:32:51

标签: css css3 css-selectors

有可能吗?如果没有,有没有办法用jQuery做到这一点?

4 个答案:

答案 0 :(得分:143)

CSS3可以实现。考虑标记:

<ul>
    <li><a href="">First item</a></li>
    <li>Second item</li>
    <li><a href="">Test</a></li>
    <li><a href="">Test</a></li>
    <li><a href="">Pre-last item</a></li>
    <li><a href="">Last item</a></li>
</ul>

要选择最后两个LI元素:

ul > li:nth-last-of-type(-n+2) {
    background: green;
}

适用于所有当代浏览器,包括IE9,但不包括IE8及以下版本。要添加对这些浏览器的支持,您可以考虑使用Selectivizr.js

答案 1 :(得分:15)

:last-child,
:nth-last-child(2) {
  ruleset
}

也会玩。

答案 2 :(得分:1)

不幸的是,这是不可能的。。忽略这个答案和look at spliters answer below

如果有可能的话,那就像......

ul li:last-child+li {...}

但是这不起作用,因为+会选择最后一个孩子后的直接兄弟(当然没什么)。没有立即之前的选择器。

使用jQuery实现这一目标有不同的方法,最高效的是...

var lastItems = $("#list li");
lastItems.slice(lastItems.length - 2).addClass("whatever");

http://jsfiddle.net/qkzdJ/

答案 3 :(得分:0)

对我来说是这样的: li:not(:nth-last-child(-n+2))