Ich habe ein div
-Tag, das mehrere ul
-Tags enthält.
Ich kann CSS-Eigenschaften nur für das erste ul
-Tag festlegen:
div ul:first-child {
background-color: #900;
}
Meine folgenden Versuche, die CSS-Eigenschaften für jeden anderen ul
-Tag außer dem ersten festzulegen, funktionieren jedoch nicht:
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 schreibe ich in CSS: "jedes Element außer dem ersten"?
Eine der von Ihnen geposteten Versionen funktioniert eigentlich für alle modernen Browser (wobei CSS-Selektoren Level 3 werden unterstützt ):
div ul:not(:first-child) {
background-color: #900;
}
Wenn Sie ältere Browser unterstützen müssen oder durch die Einschränkung von :not
-Selektor behindert werden (dies akzeptiert nur einen einfachen Selektor als Argument), können Sie eine andere Methode verwenden:
Definieren Sie eine Regel, die einen größeren Geltungsbereich hat als Sie beabsichtigen, und "widerrufen" Sie sie dann bedingt, indem Sie ihren Geltungsbereich auf das beschränken, was Sie beabsichtigen:
div ul {
background-color: #900; /* applies to every ul */
}
div ul:first-child {
background-color: transparent; /* limits the scope of the previous rule */
}
Wenn Sie den Bereich einschränken, verwenden Sie den Standardwert für jedes von Ihnen festgelegte CSS-Attribut.
Diese CSS2-Lösung ("any ul
after another ul
") funktioniert ebenfalls und wird von mehreren Browsern unterstützt.
div ul + ul {
background-color: #900;
}
Im Gegensatz zu :not
und :nth-sibling
wird der benachbarte Gleichheitsselektor von IE7 + unterstützt.
Wenn Sie diese Eigenschaften nach dem Laden der Seite durch JavaScript geändert haben, sollten Sie einige bekannte Fehler in den Implementierungen von IE7 und IE8 überprüfen. Siehe diesen Link .
Für jede statische Webseite sollte dies einwandfrei funktionieren.
Da :not
von IE6-8 nicht akzeptiert wird, würde ich Ihnen folgendes vorschlagen:
div ul:nth-child(n+2) {
background-color: #900;
}
Sie wählen also jedes ul
in seinem übergeordneten Element außer dem ersten.
Siehe Chris Coyers "Nützlich: n-te-Rezepte" Artikel für weitere nth-child
Beispiele .
div li~li {
color: red;
}
Unterstützt IE7
not(:first-child)
scheint nicht mehr zu funktionieren. Zumindest bei den neueren Versionen von Chrome und Firefox.
Versuchen Sie stattdessen Folgendes:
ul:not(:first-of-type) {}
Sie können einen beliebigen Selektor mit not
verwenden.
p:not(:first-child){}
p:not(:first-of-type){}
p:not(:checked){}
p:not(:last-child){}
p:not(:last-of-type){}
p:not(:first-of-type){}
p:not(:nth-last-of-type(2)){}
p:not(nth-last-child(2)){}
p:not(:nth-child(2)){}
Ich hatte kein Glück mit einigen der oben genannten,
Dies war die einzige, die tatsächlich für mich gearbeitet hat
ul:not(:first-of-type) {}
Dies funktionierte für mich, als ich versuchte, die erste Schaltfläche auf der Seite so anzuzeigen, dass sie nicht durch eine Rand-Links-Option beeinflusst wird.
dies war die Option, die ich zuerst ausprobiert habe, aber sie hat nicht funktioniert
ul:not(:first-child)
Wie ich verwendet habe, ist ul:not(:first-child)
eine perfekte Lösung.
div ul:not(:first-child) {
background-color: #900;
}
Warum ist das perfekt, weil wir mit ul:not(:first-child)
CSS auf innere Elemente anwenden können. Wie li, img, span, a
-Tags usw.
Aber wenn andere Lösungen verwendet werden:
div ul + ul {
background-color: #900;
}
und
div li~li {
color: red;
}
und
ul:not(:first-of-type) {}
und
div ul:nth-child(n+2) {
background-color: #900;
}
Diese beschränken nur ul-Level-CSS. Nehmen wir an, wir können CSS nicht auf li
als div ul + ul li anwenden.
Für Elemente der inneren Ebene funktioniert die erste Lösung perfekt.
div ul:not(:first-child) li{
background-color: #900;
}
und so weiter ...
Sie können Ihren Selektor mit :not
verwenden, wie unten gezeigt, Sie können jeden Selektor innerhalb der :not()
verwenden.
any_CSS_selector:not(any_other_CSS_selector){
/*YOUR STYLE*/
}
any_CSS_selector:not(:first-child){
/*YOUR STYLE*/
}
any_CSS_selector:not(:first-of-type){
/*YOUR STYLE*/
}
any_CSS_selector:not(:checked){
/*YOUR STYLE*/
}
any_CSS_selector:not(:last-child){
/*YOUR STYLE*/
}
any_CSS_selector:not(:last-of-type){
/*YOUR STYLE*/
}
any_CSS_selector:not(:first-of-type){
/*YOUR STYLE*/
}
any_CSS_selector:not(:nth-last-of-type(2)){
/*YOUR STYLE*/
}
any_CSS_selector:not(:nth-last-child(2)){
/*YOUR STYLE*/
}
any_CSS_selector:not(:nth-child(2)){
/*YOUR STYLE*/
}