Ich werde ein wenig aufgeregt, wenn ich auf perfekte Anwendungen für :nth-child oder :nth-of-type stoße (lesen Sie über den Unterschied). Je besser Sie sie verstehen, desto mehr CSS-Nerdrgasmen können Sie erleben!
In diesen einfachen „Rezepten“ (eigentlich: Ausdrücken) werde ich willkürlich eine flache Liste von Listenelementen und zufällig ausgewählte Zahlen verwenden. Aber es sollte ziemlich offensichtlich sein, wie man sie ändert, um ähnliche Auswahlen zu erzielen.
Nur das fünfte Element auswählen

li:nth-child(5) {
color: green;
}
Um das erste Element auszuwählen, können Sie :first-child verwenden, oder ich wette, Sie können erraten, wie Sie das obige ändern können, um dies ebenfalls zu tun.
Alle bis auf die ersten fünf auswählen

li:nth-child(n+6) {
color: green;
}
Wenn es hier mehr als 10 Elemente gäbe, würden alle über 5 ausgewählt werden.
Nur die ersten fünf auswählen

li:nth-child(-n+5) {
color: green;
}
Jeden vierten auswählen, beginnend mit dem ersten

li:nth-child(4n-7) { /* or 4n+1 */
color: green;
}
Nur ungerade oder gerade auswählen

li:nth-child(odd) {
color: green;
}

li:nth-child(even) {
color: green;
}
Das letzte Element auswählen

li:last-child {
color: green;
}
Wählt die 10. aus, da wir hier 10 Elemente haben, aber wenn es 8 gäbe, würde es die 8. auswählen, oder wenn es 1.290 gäbe, würde es die 1.290. auswählen.
Das vorletzte Element auswählen

li:nth-last-child(2) {
color: green;
}
Wählt die 9. aus, da wir hier 10 Elemente haben, aber wenn es 30 Elemente gäbe, würde es die 29. auswählen.
Willst du spielen?
Browser-Unterstützung
Interessanterweise wurde :first-child von IE 7 unterstützt, aber erst ab IE 9 werden die restlichen Elemente unterstützt. Abgesehen von IE gibt es kaum Bedenken hinsichtlich der Browserunterstützung, und wenn Sie sich um IE sorgen, dann verwenden Sie Selectivizr. Wenn Browserunterstützung für Sie interessant oder wichtig ist, schauen Sie sich unbedingt When can I use… an, das diese Dinge sehr gut verfolgt.
Einfach voll nützlich !! Danke
Schöne Liste, aber bin ich farbenblind oder vermischt du Grün und Rot? Trotzdem eine schöne Liste. Schade, dass IE dies erst ab IE9 unterstützt (wie Sie erwähnt haben hier)
Eigentlich Chris, hast du die Farbe mitgebracht, die bedeutet, dass der Text grün sein soll, und in den Beispielen gibt es keinen Text ^^.
Ich meine rot :P
Das habe ich auch bemerkt, es ist definitiv nur da, um die Situation zu veranschaulichen, aber es war albern, eine grüne Kugel zu sehen und sofort zu lesen: Farbe: rot!
Ohhh, ich verstehe. Zuerst dachte ich, was zum Teufel reden diese Leute. Ich habe das Wort „rot“ in „grün“ geändert, damit es weniger seltsam erscheint. Beide sind nur hypothetisch.
Toller Artikel, Chris! Ich wusste tatsächlich nicht, dass nth-child diese Werte als Parameter akzeptiert. Ich muss wirklich mehr mit CSS3 herumspielen, da ich es noch nicht produktiv nutzen möchte.
Viele Kindergarten-Szenarien kommen mir in den Sinn, wenn ich mir die ungerade nummerierte Ball-Reihe ansehe. Übrigens. Waren Sie es, der diesen Hintergrund-Trick mit Texturen und Primzahlen gemacht hat? Vielleicht etwas für nth-child zur Lösung?
Zur Information, der Artikel über Primzahlen-Hintergründe – http://designfestival.com/the-cicada-principle-and-why-it-matters-to-web-designers/
Danke für eine weitere großartige Erklärung, Chris. Wenn ich mich nicht irre und korrigieren Sie mich, wenn ich falsch liege, aber hat jQuery nicht bereits die meiste Unterstützung für CSS3-Pseudo-Selektoren, die bereits in Sizzle integriert sind?
Es hat :nth-child, aber nicht :nth-of-type. Sie können alle zu jQuery mit diesem hinzufügen: https://github.com/keithclark/JQuery-Extended-Selectors/blob/master/jquery-extra-selectors.js
Wenn Sie sich auf den Selectivizr-Link unten beziehen, ist das etwas anderes. Das ist eine Bibliothek, die die tatsächliche CSS, die Sie schreiben, zum Laufen bringt.
Es gibt jQuery-Plugins, um Browser dazu zu bringen, Selektoren zu unterstützen, die sie nicht nativ unterstützen, wie http://www.selectivizr.com. jQuery hat eine leicht andere Syntax für $(einige_Selektoren).
Schauen Sie sich http://standardista.com/jquery/#slcjQuery an (und weiter unten auf dieser Seite) für einige reine jQuery-Selektoren.
Ah, das ergibt jetzt mehr Sinn.
Vielleicht eine überflüssige Lösung für IE, aber Sie können auch Chrome Frame verwenden, um dies (und CSS-Gradients, Animationen und all den Rest) dort zu ermöglichen.
Danke für diese Ressource! Ich habe nach einer Anleitung gesucht, die die verschiedenen Optionen für :nth-child-Selektoren klar darlegt, und das ist die beste, die ich je gesehen habe. :nth-child sind ein entscheidender Bestandteil von gutem CSS und ich werde es auf jeden Fall nutzen. Nochmals vielen Dank!
Chris, gibt es eine Lösung für ältere IE-Versionen?
Danke
Ja Mann, schau dir den letzten Absatz des Artikels an.
OK!!!
Die letzte „Browser-Unterstützung“
Ich bin neu in dieser Methode, aber ich gebe ihr trotzdem eine faire Chance und ich glaube, ich habe nur an der Oberfläche gekratzt.
Gute Arbeit!!
Kann das ins Chinesische übersetzt werden?
Großartig! Es ist sehr nützlich für mich.
Vielen Dank – ich habe danach gesucht, wie man nth-child verwendet!
Chris, dieser Artikel war großartig, so leicht verständlich und so nützlich.
Übrigens, ich weiß, dass du deine Statistiken beobachtet hast, um zu wissen, welche Auflösung deine Besucher nutzen. Im Moment benutze ich ein Blackberry 9800 und ich kann nicht glauben, wie gut Ihre Website auf den Bildschirm passt und wie gut sie funktioniert, großartige Arbeit !! Ich musste die ganze Zeit keinen horizontalen Scrollbalken verwenden, wie es bei den meisten dieser Blogs passiert, also danke dafür :)
Ich glaube, das liegt an den Media-Queries in ihrem CSS. Die Seite klappt je nach Größe des Fensters/Viewports zusammen. Laden Sie die Hauptseite in einem Desktop-Browser und verkleinern Sie die Fensterbreite, die Seite passt sich an eine große Anzahl von Breiten an.
Toller Artikel Chris, es gibt einige Dinge, die ich noch nicht wusste!
Hallo Chris,
Ich möchte nur „Danke“ sagen. Ihre Artikel sind echte Lebensretter. Und es ist so fantastisch und großartig, alle notwendigen CSS-Tricks auf einer Website zu finden.
DANKE!
Angelika (aka Lintzy)
IE 7 unterstützt
:first-childnur teilweise. Wenn ein HTML-Kommentar dem ersten Element vorausgeht, wird der:first-child-Selektor nicht wirksam.Auch wenn alte Browser diese Eigenschaften nicht unterstützen, können Sie immer noch jQuery verwenden.
Schöne Feature-Liste. IE enttäuscht wie üblich
Danke Chris! Ich teile deine Begeisterung für neue :nth-child-Anwendungen!
Ich habe keine Website, die ich Ihnen zeigen kann, nur einige CSS-Stile, die ich ausgearbeitet habe. Zwei neue Anwendungen für mich. Ich brauchte CSS, um unterschiedliche Verhaltensweisen beim Hovern zu zeigen, um Text links und dann auf halbem Weg rechts anzuzeigen. Anstatt eine lange Erklärung zu geben, was ich tatsächlich getan habe, können Sie sich den Code und die Anwendung hier ansehen.
Das zweite Beispiel verwendet ungerade/gerade für etwas anderes als das Einfärben abwechselnder Spalten/Zeilen in einem Tabellenlayout. Ich habe eine Spalte mit Screenshots genommen, sie links und rechts (ungerade/gerade) positioniert und dann ungerade/gerade Hover verwendet, um das Bild basierend auf ungerade/gerade zu vergrößern, damit die Vergrößerung korrekt angezeigt wird. Das ist hier.
Wenn niemand anderes sehen kann, wie Chris‘ Erklärung, wie all die verschiedenen nth-child-Beispiele nützlich miteinander verbunden werden können, denken Sie darüber nach: eine Lautstärkeregelung oder ein anderer Schieberegler. Erstes Kind, Lautsprecher hervorgehoben, Lautstärke maximal. Vorletztes Kind, nth-last-child(2), wieder hervorgehoben, minimale Lautstärke. Letztes Kind, Lautsprecher stumm (normalerweise als durchgestrichenes Rot angezeigt). Ich kann es kaum erwarten, es zu codieren!
Bitte haben Sie Nachsicht, wenn ich hier nicht ganz auf dem neuesten Stand bin. Ich weiß, dass es möglicherweise nicht alle Browser abdeckt. Ich bin erst seit etwa 1-1/2 Monaten dabei.
Schöner Artikel.
Ich liebe es auch, :nth-child jetzt zu verwenden, wenn ich Websites codiere. Weniger Code-Bloat und es ist überraschend, wie oft es nützlich ist.
Hallo Chris
Danke für den Hinweis auf Selectivizr, ich habe gerade die WordPress-Plugin-Version für meine :nth-child-Navbar verwendet – funktioniert einwandfrei
Selectivizr (http://selectivizr.com/) ist ein großartiges Dienstprogramm, das CSS3-Pseudo-Klassen und Attributselektoren in Internet Explorer 6-8 emuliert, sehr sehenswert, gutes JS für PE
Nur um das ein wenig zu erweitern – ich denke, es wäre schön, eine weitere Demo hinzuzufügen, um zu zeigen, wie man von hinten einer Liste zurückgeht. Sie haben :nth-last-child(2) – aber um die letzten 3 Elemente auszuwählen (unabhängig von der Größe der Liste) benötigen Sie: :nth-last-child(-n+3). Danke für eine weitere großartige Demo.
Sehr gut…
Bester Artikel, den ich dazu gesehen habe! Danke Chris.
Ich bin auf diese Seite gestoßen, als ich sehen wollte, ob der
:nth-child-Selektor verwendet werden kann, um einen Bereich von Spalten in einer Tabelle zu stylen (d. h. Spalten 4-6). Ich konnte die Aufgabe mit einer Kombination aus:nth-childund:nth-last-childbewältigen. Um die bereitgestellten Beispiele zu imitieren, wäre dies ungefähr so:Ich dachte, ich poste das, falls jemand anderes nach einem „nth-child-Bereich“-Selektor sucht.
Danke für das coole CSS-Tutorial. Ich versuche etwas anderes, ich möchte jede 4. div-Elementgruppe auswählen
wie 1-4 haben unterschiedlichen Hintergrund, 5-8 haben unterschiedlichen Hintergrund, 9-12 haben den gleichen wie 1-4, 13-16 haben den gleichen wie 5-8. Bitte helfen Sie mir, wie ich das erreichen kann. Hinweis: Die Gesamtzahl der div ist variabel.
danke
Ich würde also gerne eine bestimmte Menge Text in einem Absatz ausblenden, wenn ein bestimmter Breakpoint erreicht wird. Ich gehe davon aus, dass die hier erwähnte Methode das nicht bewältigt, oder? Gibt es eine Methode, die das über CSS3 erledigt, oder geht das nur über PHP oder JS?