Можно ли выбрать последние n элементов с nth-child? - PullRequest
114 голосов
/ 30 января 2011

Используя стандартный список, я пытаюсь выбрать последние 2 элемента списка. У меня есть различные перестановки An+B, но, кажется, ничто не может выбрать последние 2:

li:nth-child(n+2) {} /* selects from the second onwards */
li:nth-child(n-2) {} /* selects everything */
li:nth-child(-n+2) {} /* selects first two only */
li:nth-child(-n-2) {} /* selects nothing */

Я знаю о новых селекторах CSS3, таких как :nth-last-child(), но я бы предпочел что-то, что работает в нескольких браузерах, если это возможно (не особенно заботится об IE).

Ответы [ 5 ]

233 голосов
/ 01 июля 2011

Это выберет два последних элемента списка:

li:nth-last-child(-n+2) {color:red;}
<ul>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
</ul>
55 голосов
/ 30 января 2011

nth-last-child звучит так, как будто оно было специально разработано для решения этой проблемы, поэтому я сомневаюсь, что есть более совместимая альтернатива.Поддержка выглядит довольно прилично , хотя.

11 голосов
/ 16 июля 2012

:nth-last-child(-n+2) должен сделать трюк

1 голос
/ 30 января 2011

Из-за определения семантики nth-child я не понимаю, как это возможно без учета длины списка задействованных элементов.Смысл семантики заключается в том, чтобы разрешить разделение группы дочерних элементов на повторяющиеся группы ( edit - благодаря BoltClock) или на первую часть некоторой фиксированной длины, за которой следует «остальные».Вы как бы хотите противоположности того, что nth-last-child дает вам.

0 голосов
/ 30 января 2011

Если вы используете jQuery в своем проекте или хотите включить его, вы можете вызвать nth-last-child через его API селектора (это симуляция, которая будет проходить через браузер). Вот ссылка на nth-last-child плагин. Если вы выбрали этот метод нацеливания на интересующие вас элементы:

$('ul li:nth-last-child(1)').addClass('last');

А затем снова примените стиль к классу last вместо псевдоселекторов nth-child или nth-last-child, и вы получите гораздо более согласованное взаимодействие между браузерами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...