Selektor CSS dla innego niż pierwsze dziecko i ostatnie dziecko

105

Robię bardzo zaawansowaną stronę internetową. Moje pytanie: czy można wybrać wszystkie inne dzieci oprócz :first-childi :last-child? Wiem, że jest:not() selektor, ale nie działa z więcej niż jednym nie w nawiasach. Oto co mam:

#navigation ul li:not(:first-child, :last-child) {
    background: url(images/UISegmentBarButtonmiddle@2x.png);
    background-size: contain;
}
Daniel
źródło
Jesteś bardzo odważny, aby tego użyć. Zwróć uwagę, że będzie działać tylko w nowoczesnych przeglądarkach i na pewno nie będzie działać w przeglądarce internetowej, której wszyscy używają.
pozbyć się
2
@Radu: „Tworzę bardzo zaawansowaną stronę internetową” Nie ma w tym nic dziwnego ...
BoltClock
1
@BoltClock, racja, tylko mówię ... Słowo ostrzeżenia. Ale tak czy inaczej, jeśli celem jest iOS Safari, jak sugeruje nazwa obrazu, to powinno być bezpieczne.
pozbyć się
1
Teraz widzę, dlaczego to pytanie wygląda tak znajomo ... stackoverflow.com/questions/7403129/combining-not-selectors
BoltClock
„anty-przeglądarka”? Czy to nowy Google Ultron, o którym ciągle słyszę?
Jonathan Dumaine

Odpowiedzi:

262

Spróbuj #navigation ul li:not(:first-child):not(:last-child).

Salman von Abbas
źródło
JESTEŚ NIESAMOWITY! Dziękuję Ci!
Daniel,
1
rofl, głupota z mojej strony, not()nawet próbując tego przed googlowaniem: P genius
SidOfc
1
To źle: not (A and B)nie równa się (not A) and (not B), raczej tak byłoby (not A) or (not B). To nie działa.
Hibou57
2
Nie, to, co powiedział Salman Abbas, jest słuszne. Myślisz o przecinku; #navigation ul li: not (: first-child), #navigation ul li: not (: last-child)
user847074
20

Jasne, że zadziała, wystarczy użyć dwóch selektorów „nie”.

#navigation ul li:not(:first-child):not(:last-child) {

Będzie kontynuował linię po pierwszym, mówiąc „nie pierwsze dziecko” i „nie ostatnie dziecko”.

animuson
źródło