CSS的后代(-1)


161

我正在寻找一个CSS选择器,该选择器使我可以选择列表的最后一个子元素。

<ul>
     <li>1</li>
     <li>2</li>
     <li>3</li>
     <li>4</li>
     <li>5</li> <!-- select the pre last item dynamically no matter how long this list is -->
     <li>6</li>
</ul>

静态方法:

ul li:nth-child(5)

动态方法:

ul li:last-child(-1)

哪一个当然不能验证,nth-last-child似乎也没有提供动态方式。


11
通常称为“倒数第二”。还有另一个花哨的词:“倒数第二个”。
BoltClock

2
@BoltClock我喜欢“倒数第二个”这个词。现在,我将在一个时髦的Facebook更新中使用它。
Andrew Barber '02


2
感谢每个人都提到倒数第二个-这在Google上以“ css倒数第二个”排名第一。
chakeda '18

Answers:


303

可以使用:nth-last-child();实际上,除了:nth-last-of-type()我,我不知道您还能使用什么。我不确定您所说的“动态”是什么意思,但是如果您的意思是当更多孩子添加到列表中时,样式是否适用于倒数第二个新孩子,是的。互动小提琴。

ul li:nth-last-child(2)

好的,行得通!代码解释器(jsfiddle)未对其进行验证。感谢
Hedde van der Heide '02

4
@David Allen:我认为他不在乎是否已经尝试使用:nth-child(5)and :last-child。像这样的评论应该在问题上或者保持自我。
BoltClock

1
他可能不知道不支持的问题。我只是突出显示它。...我使用jQuery给出了答案,我很高兴地说它不能与禁用JavaScript的用户一起使用。但是使用IE7 / 8的人比禁止使用JS的人多
-David Allen

1
@David,我相信selectivrz或modernizr插件可以解决该问题,我将不得不查看文档
Hedde van der Heide 2012年

@ArgsKwargs很棒的评论从未听说过selectivizr。让我们知道它是否支持nth-last-child
David Allen

1

除非可以使PHP用类标记该元素,否则最好使用jQuery。

jQuery(document).ready(function () {
  $count =  jQuery("ul li").size() - 1;
  alert($count);
  jQuery("ul li:nth-child("+$count+")").css("color","red");
});

6
jQuery不能:nth-last-child()仅仅因为John认为没有人使用它而实现,这实在令人讨厌。
BoltClock

我宁愿贴上python ;-) ontopic的标签:这样的CSS看起来不错,也许jsfiddle也认为没人使用它:-)
Hedde van der Heide

@ArgsKwargs:奇怪为什么在jsFiddle中不起作用。取决于浏览器来解释它。它没有自己的CSS引擎。
BoltClock

@BoltClock不要误会我的意思,它确实起作用,代码帮助程序(颜色可视化)仅表示未完成的内容(因此我什至没有尝试)
Hedde van der Heide 2012年

我不认为任何代码都未公开。但我知道你的意思了“色可视化”是什么
大卫·艾伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.