Korzystając z listy standardowej, próbuję wybrać ostatnie 2 elementy listy. Mam różne permutacje, An+B
ale nic nie wydaje się wybierać ostatnich 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 */
Jestem świadomy nowych selektorów CSS3, takich jak, :nth-last-child()
ale wolałbym coś, co działa w kilku innych przeglądarkach, jeśli to możliwe (nie obchodzi mnie szczególnie IE).
css
css-selectors
Niezadowolony Kozioł
źródło
źródło
:nth-last-child()
jest mniej więcej takie samo, jak:nth-child()
w quirksmode.org . Ponadto,:nth-child()
i:nth-last-child()
oba zostały wprowadzone w CSS3, nie są starsze ani nowsze w tym sensie.nth-child
trików zostało podsumowanych w css-tricksOdpowiedzi:
Spowoduje to wybranie dwóch ostatnich iem z listy:
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>
źródło
:nth-last-child()
którym już wspomniano.nth-last-child
wygląda na to, że został specjalnie zaprojektowany do rozwiązania tego problemu, więc wątpię, czy istnieje bardziej kompatybilna alternatywa. Wsparcie wygląda jednak całkiem przyzwoicie .źródło
:nth-last-child(-n+2)
powinien załatwić sprawęźródło
Ze względu na definicję semantyki
nth-child
nie widzę, jak jest to możliwe bez uwzględnienia długości listy elementów, których to dotyczy. Celem semantyki jest umożliwienie segregacji paczki elementów potomnych na powtarzające się grupy ( edytuj - dzięki BoltClock) lub na pierwszą część o określonej długości, a następnie „resztę”. W pewnym sensie chcesz czegoś przeciwnego, conth-last-child
ci daje.źródło
:nth-child()
możesz wybrać pierwszem
elementy, określając:nth-child(-n+m)
.Jeśli używasz jQuery w swoim projekcie lub chcesz go dołączyć, możesz wywołać go
nth-last-child
za pomocą jego interfejsu API selektora (jest to symulowane, że będzie przechodzić przez przeglądarkę). Oto link donth-last-child
wtyczki. Jeśli wybrałeś tę metodę kierowania na elementy, które Cię interesowały:$('ul li:nth-last-child(1)').addClass('last');
A potem ponownie
last
stylizuj klasę zamiastnth-child
lubnth-last-child
pseudoselektorów, będziesz mieć znacznie bardziej spójne działanie w różnych przeglądarkach.źródło