CSS-Auswahl für andere als das erste und das letzte Kind

105

Ich mache eine sehr fortgeschrittene Website. Meine Frage: Ist es möglich, alle anderen Kinder außer dem :first-childund dem auszuwählen :last-child? Ich weiß, dass es einen :not()Selektor gibt, aber er funktioniert nicht mit mehr als einem, der nicht in Klammern steht. Das habe ich:

#navigation ul li:not(:first-child, :last-child) {
    background: url(images/UISegmentBarButtonmiddle@2x.png);
    background-size: contain;
}
Daniel
quelle
Sie sind mächtig mutig, dies zu benutzen. Beachten Sie, dass es nur in modernen Browsern funktioniert und definitiv nicht in dem Anti-Browser, den jeder verwendet.
los
2
@ Radu: "Ich mache eine sehr fortgeschrittene Website" Keine Überraschung dort ...
BoltClock
1
@BoltClock, richtig, nur sagen ... Wort der Warnung. Wenn das Ziel jedoch die iOS-Safari ist, wie der Name des Bildes andeutet, sollte sie sicher sein.
los
1
Jetzt verstehe ich, warum diese Frage so vertraut aussieht ... stackoverflow.com/questions/7403129/combining-not-selectors
BoltClock
"Anti-Browser"? Ist das das neue Google Ultron, von dem ich immer wieder höre?
Jonathan Dumaine

Antworten:

260

Versuchen Sie es #navigation ul li:not(:first-child):not(:last-child).

Salman von Abbas
quelle
DU BIST GROSSARTIG! Danke!
Daniel
1
rofl, die Dummheit von mir, dies not()sogar zu versuchen, bevor ich
google
1
Das ist falsch: not (A and B)ist nicht gleich (not A) and (not B), das wäre lieber (not A) or (not B). Es funktioniert nicht.
Hibou57
2
Nein, was Salman Abbas gesagt hat, ist richtig. Sie denken an das Komma; #navigation ul li: nicht (: erstes Kind), #navigation ul li: nicht (: letztes Kind)
user847074
20

Sicher wird es funktionieren, Sie müssen nur zwei "Nicht" -Selektoren verwenden.

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

Es wird nach dem ersten fortgesetzt und sagt "nicht das erste Kind" und "nicht das letzte Kind".

animuson
quelle