nicht:first-child-Selektor
Ich habe eine div
tag mit mehreren ul
tags.
Ich bin in der Lage, CSS-Eigenschaften für die erste ul
tag nur:
div ul:first-child {
background-color: #900;
}
Jedoch meine folgenden versuche, die CSS-Eigenschaften für jede andere ul
tag außer dem ersten nicht funktionieren:
div ul:not:first-child {
background-color: #900;
}
div ul:not(:first-child) {
background-color: #900;
}
div ul:first-child:after {
background-color: #900;
}
Wie kann ich schreiben CSS: "jedes element, außer dem ersten"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer der Versionen, die Sie geschrieben tatsächlich funktioniert für alle modernen Browser (wo CSS Selektoren level 3 sind unterstützt):
Wenn Sie Bedarf an Unterstützung von älteren Browsern, oder wenn Sie gehindert werden, durch die
:not
Selektor Einschränkung (es akzeptiert nur ein einfache Selektor als argument), dann können Sie verwenden eine andere Technik:Definieren Sie eine Regel, hat eine größere Tragweite als das, was Sie wollen und dann "widerrufen" es bedingt eine Beschränkung Ihres Geltungsbereichs auf das, was Sie tun wollen:
Wenn die Begrenzung des Umfangs Nutzung der default-Wert für jedes CSS-Attribut, das Sie einstellen.
Diese CSS2-Lösung ("alle
ul
nach dem anderenul
") funktioniert auch und wird unterstützt von mehr Browsern.Im Gegensatz zu
:not
und:nth-sibling
, die adjacent sibling selector wird unterstützt von IE7+.Wenn Sie JavaScript änderungen dieser Eigenschaften nach dem laden der Seite, sollten Sie einen Blick auf einige bekannte Fehler in der IE7 und IE8 Implementierungen dieser. Finden Sie unter diesem link.
Für alle statischen web-Seite, dies sollte perfekt funktionieren.
ul ul div ul
(wo diese Elemente Geschwister sind), nur das zweite ul ausgewählt werden, da die Letzte nicht über einul
zurück, um sichSeit
:not
wird nicht akzeptiert IE6-8, würde ich dir empfehlen diese:So Holen Sie jeden
ul
im übergeordneten element außer dem ersten.Siehe Chris Coyer ' s "Nützlich :nth-child Rezepte" Artikel für mehr
nth-child
Beispiele.Unterstützt IE7
not(:first-child)
scheint nicht mehr zu funktionieren. Zumindest mit den neueren Versionen von Chrome und Firefox.Stattdessen versuchen Sie dies:
ul:not(:first-child)
bedeutet wörtlich "alleul
element, das ist nicht das erste Kind seiner Eltern", so wird es nicht passen auch der 1.ul
wenn es vorausgeht einem anderen element (p
, Position usw.). Im Gegenteil,ul:not(:first-of-type)
bedeutet "jederul
element außer der 1.ul
im container". Sie haben Recht, dass die OP wohl nötig letztere Verhalten, aber Ihre Erklärung ist ziemlich irreführend.Können Sie jede Auswahl mit
not
Hatte ich nicht das Glück mit einigen der oben genannten,
Diese war die einzige, die wirklich für mich gearbeitet
ul:not(:first-of-type) {}
Dieser arbeitete für mich, wenn ich versuchte, die erste Schaltfläche angezeigt, auf der Seite nicht beeinflusst werden durch einen margin-left-option.
war dies die option ich zuerst versucht aber es hat nicht funktioniert
ul:not(:first-child)
Können Sie Ihre Auswahl mit
:not
wie Balg, die Sie verwenden können jeder Selektor innerhalb der:not()
Da ich
ul:not(:first-child)
ist die perfekte Lösung.Warum ist dies eine perfekte, weil durch die Verwendung
ul:not(:first-child)
können wir die CSS auf innere Elemente. Wieli, img, span, a
tags etc.Aber wenn andere Lösungen:
und
und
und
Diese Schränken nur ul-level CSS. Nehmen wir an, wir können nicht CSS anzuwenden auf
li
als `div ul + ul-li'.Für die inneren Elemente die erste Lösung funktioniert perfekt.
und so weiter ...