Nicht alle, aber mehr als genug
Menschen, die XHTML und CSS aus Büchern lernen, stellen häufig fest, dass CSS-Ereignisse nicht vollständig beschrieben werden. Insbesondere sind nur Veranstaltungen wie z.B schweben, aktiv, besucht. Es gibt viele weitere CSS-Ereignisse und die Möglichkeiten, die sie bieten, sind sehr groß.
Hier nicht gezeigt volle Liste Events, aber nur solche, die ein moderner Webdesigner wirklich braucht.
Wenn Sie einem Block ein After-Event zuweisen, wird der im Stylesheet definierte generierte Code nach dem Block ausgegeben. Um den Code zu definieren, wird der CSS-Befehl verwendet - Inhalt, dessen Syntax Inhalt ist: „XHTML-Code“.
Diese. Der gesamte Befehl könnte so aussehen:
#someId:after
(Inhalt: „XHTML-Code“) :before Funktioniert genauso wie after, gibt jedoch den Code vor dem Element aus: first-child Legt den Stil für das erste untergeordnete Element eines anderen Elements fest.
Nehmen wir an, dass durch die Anwendung dieses Ereignisses auf das h1-Tag die erste und nur die erste Überschrift der Ebene 1 mit dem entsprechenden Stil gerendert wird. Es ist besonders effektiv, dieses Ereignis für Stile verschachtelter Tags (mehrstufig) zu verwenden, beispielsweise wie folgt:
body ol li:first-child(...)(d. h. in allen ol-Listen wird das erste li-Element, aber nicht das ul, mit den angegebenen Stileinstellungen angezeigt)
:last-child Stilt das letzte untergeordnete Element eines anderen Elements. :focus Legt den Stil für Formularelemente fest, die den Fokus erhalten, d. h. diejenigen, auf die Sie klicken. Beispielsweise können Sie das aktive Texteingabefeld vom inaktiven Texteingabefeld unterscheiden. :hover Stil für das Element, über das der Mauszeiger bewegt wird. Kann mit allen Blöcken und Texten verwendet werden (bisher haben wir nur Links berücksichtigt). :lang( X) Weist ein Element einer bestimmten Sprache zu, ohne den Inhalt des Elements in irgendeiner Weise zu ändern. Dieser Tag kann beispielsweise verwendet werden, um Links zu verschiedenen Quellen hervorzuheben. Anstatt X Es wird eine zweistellige internationale Bezeichnung der Sprache, also der Name, platziert Domänenzone. Für Russland ist es zum Beispiel so ru, für Amerika uns, usw. Wenn ein Element mehrere Sprachen gleichzeitig definieren muss, müssen diese durch einen Bindestrich ohne Leerzeichen getrennt werden (in der Reihenfolge der absteigenden Bedeutung der Stile, die jede Sprache definiert). :visited Legt den Stil eines besuchten Links fest:nth-child(x) Legt den Stil für bestimmte Elemente oder ein bestimmtes Element fest. x kann ausgedrückt werden:
- Nummer. In diesem Fall wird nur 1 Element ausgewählt
- Ausdrücke ungerade (alle ungeraden Elemente) oder gerade (alle gerade Elemente).
- Ausdruck an+b, wobei sich n nicht ändert, a und b beliebige Zahlen sind. Zum Beispiel 7n+4. Alle Elemente, die bei Division durch 7 einen Rest von 4 ergeben, werden ausgewählt (4, 11, 18 usw.). Wenn a oder b in diesem Fall gleich 0 sind, können sie weggelassen werden. Die n Elemente werden von 0 bis n-1 gezählt
Tauchen Sie tief in die CSS-Selektoren ein
Die oben beschriebenen Materialien werden für viele ausreichen, aber nicht für jeden. Auf den Websites großer Unternehmen, öffentlicher Projekte, soziale Netzwerke Es werden sehr komplexe CSS-Selektoren verwendet und manchmal reicht die oben beschriebene Funktionalität nicht aus. Darüber hinaus muss CSS mit serverseitigen Programmiersprachen interagieren, d. h. Oft wird CSS für bestimmte Seiten automatisch generiert. Gleichzeitig muss es korrekt und korrekt funktionieren.
Wir haben die Vererbung von Elementen erwähnt. Jetzt werden wir es genauer analysieren.
CSS kann Regeln definieren für verschiedene Arten Vererbung oder die Zugehörigkeit von Elementen zu einem übergeordneten Element. Alle dienen nur dazu, Elemente auszuwählen, auf die die Regel angewendet wird.
Kombinatoren (Herstellung einer Verbindung zwischen Stilen basierend auf Vererbung) | |
---|---|
Benachbartes Geschwisterkind (+) | Dieser Kombinator definiert zwei Elemente, die unmittelbar aufeinander folgen (es gibt zwischen ihnen keine anderen Elemente mit demselben übergeordneten Element wie diese beiden Elemente, aber es kann Elemente geben, die sie erben) und dasselbe übergeordnete Element haben. Der Stil wird auf beide Elemente gleichzeitig angewendet. Aufnahmesyntax (Leerzeichen sind nicht enthalten) E+F(...) wobei E das erste Element und F das zweite Element ist. Zum Beispiel, h1+h2(Schriftfamilie:Serif) Dieser Eintrag definiert den Stil nur für aufeinanderfolgende h1- und h2-Elemente, die dasselbe übergeordnete Element haben. Wenn nach h2 ein weiterer h2-Tag steht, wird der Stil nicht darauf angewendet. |
Kind (>) Kombinator | Der Kombinator identifiziert alle Elemente, die direkte Nachkommen eines Elements sind. Unterstützt mehrere Verschachtelungsebenen, zum Beispiel: Körper > div > p(...) Das heißt, der Stil wird nur auf Absätze angewendet, die untergeordnete Elemente aller Divs sind, die direkt zum Body-Tag gehören. |
Nachfahre | Definiert eine beliebige Verbindung zwischen Elementen. Das heißt, Elemente sollten keine direkten Nachkommen sein, sondern lediglich Nachkommen eines Elements. Syntax (Platzbedarf): E F(...) Zum Beispiel: table.table1 td(...) Das heißt, der Stil wird in allen untergeordneten Spalten der Tabelle mit der Klasse table1 definiert, auch wenn andere Tabellen in dieser Tabelle vorhanden sind. Der Stil wird auch auf die Spalten der untergeordneten Tabellen angewendet. |
Allgemeines Geschwister (~) | Syntax E~F. Der Kombinator erfüllt die gleiche Funktion wie Adjacent Sibling, außer dass es zwischen E und F eine beliebige Anzahl von Elementen derselben Verschachtelungsebene und mehr als ein F geben kann. |
Attribute. Attributselektoren. Erstellen Sie Ihre eigenen Attribute | |
Gleichheit [=] | Jedes Tag kann ein Attribut haben (z. B. ein ID-Attribut, das fast jedes Tag haben kann, oder ein Breitenattribut (nur für Blöcke)). Sie können Ihr eigenes Attribut erstellen, bei dem es sich um eine Textzeichenfolge handelt. Zum Beispiel attr. Das Erstellen eigener Attribute ist für Attributselektoren in CSS nützlich. Attribute können in Verbindung mit Kombinatoren verwendet werden. Gleichheit gibt den Stil für alle Elemente an, deren angegebenes Attribut genau dem angegebenen Wert entspricht. Syntax: {...} Wie Sie sehen, sind hier keine Tags definiert. Stile werden für alle Elemente definiert, die das Attribut haben att gleich dem Wert val. Att und val können Bezeichnerwerte (für att können beispielsweise alle erlernten Attribute vorhanden sein, für val keine, Block usw.) und String-Werte annehmen, d. h. nur ein Wort (z. B. definiert alle Elemente mit dem Eintrag<... attr="test" ...="">). |
Existenz | Identifiziert alle Elemente, die ein Attribut haben, unabhängig von seinem Wert. Syntax: {...} att – Attribut (oder String-Wert, d. h. ein eigenes Attribut) |
Präfix [^=] | Definiert Elemente, die über ein att-Attribut verfügen, das einen Wert annimmt, der mit val beginnt. Syntax: {...} att – Attribut (oder String-Wert, d. h. sein eigenes Attribut), val – Attributwert Ein sehr gutes Beispiel: Wikipedia. Auf dieser Website sind alle Links, die zu anderen Websites als Wikipedia führen, mit einem Symbol (Pfeil) versehen. Hier ist eine Beispielaufnahme, mit der Sie diesen Stil schreiben können: :after(Inhalt" |
Suffix [$=] | Definiert Elemente, die über ein att-Attribut verfügen, das einen Wert annimmt, der auf val endet. Syntax {...} Dieses Attribut wird seit Kurzem dazu verwendet, Bilder vor verschiedenen Links zu platzieren, die dem Benutzer visuell anzeigen, an welche Datei oder Seite der Link ihn weiterleitet. Zum Beispiel vor Links zu PDF-Dateien Sie können ein PDF-Symbol einfügen. Beispiel: :before(content:" ![]() |
Teilzeichenfolge [*=] | Aufnahmesyntax: {...} Wählt alle Elemente mit dem att-Attribut aus, deren Wert den Teilstring val enthält. „54“ ist beispielsweise die Teilzeichenfolge „132 54 6“, „val“ – Teilzeichenfolge „value“ usw. |
Leerzeichen [~=] | Whitespace ist dasselbe wie Substring, allerdings muss der Substring ein Wort sein, d. h. in der Zeichenfolge von Leerzeichen umgeben. |
Bindestrich [|=] | Identisch mit Teilzeichenfolge, außer dass die Teilzeichenfolge Teil des Attributs sein und durch einen Bindestrich von den anderen Teilen getrennt werden muss. Beispiel: {...} wählt alle Tags mit dem lang-Attribut aus, deren Wert en enthält, zum Beispiel en-ru, ru-de-en usw. |
Damit ist die Untersuchung von XHTML+CSS abgeschlossen. In den nächsten Lektionen geht es um JavaScript.
CSS (Cascading Style Sheets) ist eine Stylesheet-Sprache, mit der Sie strukturierten Dokumenten (z. B. HTML-Dokumenten und XML-Anwendungen) Stile (z. B. Schriftarten und Farben) hinzufügen können. Typischerweise werden CSS-Stile verwendet, um den Stil von darin geschriebenen Elementen von Webseiten und Benutzeroberflächen zu erstellen und zu ändern HTML-Sprachen und XHTML, kann aber auch auf jede Art von XML-Dokument angewendet werden, einschließlich XML, SVG und XUL. Durch die Trennung des Dokumentpräsentationsstils vom Dokumentinhalt erleichtert CSS die Erstellung von Webseiten und die Pflege von Websites.
CSS unterstützt medienspezifische Stylesheets, sodass Autoren die Präsentation ihrer Dokumente an visuelle Browser, Hörgeräte, Drucker, Braillegeräte, Handheld-Geräte und mehr anpassen können.
Cascading Style Sheets beschreiben Regeln für die Formatierung von Elementen mithilfe von Eigenschaften und den zulässigen Werten für diese Eigenschaften. Für jedes Element können Sie eine begrenzte Menge an Eigenschaften verwenden; andere Eigenschaften haben keine Auswirkung darauf.
Eine Stildeklaration besteht aus zwei Teilen: Wähler Und Anzeigen. In HTML wird bei Elementnamen die Groß-/Kleinschreibung nicht beachtet, daher funktioniert „h1“ genauso wie „H1“. Die Deklaration besteht aus zwei Teilen: dem Eigenschaftsnamen (z. B. Farbe) und dem Eigenschaftswert (Grau). Der Selektor teilt dem Browser mit, welches Element formatiert werden soll, und der Deklarationsblock (Code in geschweiften Klammern) listet die Formatierungsbefehle – Eigenschaften und ihre Werte – auf.
![](https://i2.wp.com/html5book.ru/wp-content/uploads/2014/12/css_osnovy.png)
Obwohl das bereitgestellte Beispiel nur versucht, einige Eigenschaften zu beeinflussen, die zum Rendern eines HTML-Dokuments erforderlich sind, gilt es als eigenständiges Stylesheet. In Kombination mit anderen Stylesheets (ein grundlegendes Merkmal von CSS besteht darin, dass Stylesheets kombiniert werden) bestimmt die Regel die endgültige Darstellung des Dokuments.
Arten von Cascading Style Sheets und ihre Besonderheiten
1. Arten von Stylesheets
1.1. Externes Stylesheet
Externes Stylesheet repräsentiert Textdatei mit der Erweiterung .css, die eine Reihe von CSS-Stilen für Elemente enthält. Die Datei wird in einem Code-Editor erstellt, genau wie eine HTML-Seite. Die Datei kann nur Stile ohne HTML-Markup enthalten. Ein externes Stylesheet wird über ein Tag mit einer Webseite verbunden , befindet sich innerhalb des Abschnitts
. Diese Stile funktionieren für alle Seiten der Website.Sie können jeder Webseite mehrere Stylesheets hinzufügen, indem Sie mehrere Tags nacheinander hinzufügen , was den Zweck dieses Stylesheets im Medien-Tag-Attribut angibt. rel="stylesheet" gibt die Art des Links an (Link zu einem Stylesheet).
Das Attribut type="text/css" ist im HTML5-Standard nicht erforderlich und kann daher weggelassen werden. Wenn das Attribut fehlt, ist der Standardwert type="text/css" .
1.2. Interne Stile
Interne Stile in einen Abschnitt eingebettet
HTML-Dokument und werden innerhalb des Tags definiert. Interne Stile haben Vorrang vor externen, sind jedoch den Inline-Stilen (angegeben über das style-Attribut) unterlegen....
1.3. Integrierte Stile
Wenn wir schreiben Inline-Stile, schreiben wir den CSS-Code in die HTML-Datei, direkt in das Element-Tag, indem wir das style-Attribut verwenden:
Achten Sie auf diesen Text.
Solche Stile wirken sich nur auf das Element aus, für das sie festgelegt sind.
1.4. @import-Regel
@import-Regel Ermöglicht das Laden externer Stylesheets. Damit die @import-Direktive funktioniert, muss sie im Stylesheet (extern oder intern) vor allen anderen Regeln erscheinen:
Die @import-Regel wird auch zum Einbinden von Webfonts verwendet:
@import-URL (https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,cyrillic);
2. Arten von Selektoren
Selektoren stellen die Struktur einer Webseite dar. Sie helfen bei der Erstellung von Regeln für die Formatierung von Webseitenelementen. Selektoren können Elemente, deren Klassen und Bezeichner sowie Pseudoklassen und Pseudoelemente sein.
2.1. Universeller Selektor
Entspricht jedem HTML-Element. Mit * (margin: 0;) werden beispielsweise die Ränder für alle Site-Elemente zurückgesetzt. Der Selektor kann auch in Kombination mit einer Pseudoklasse oder einem Pseudoelement verwendet werden: *:after (CSS-Stile) , *:checked (CSS-Stile) .
2.2. Elementauswahl
Mit Elementselektoren können Sie alle Elemente formatieren dieser Art auf allen Seiten der Website. Beispielsweise legt h1 (Schriftfamilie: Lobster, cursive;) den allgemeinen Formatierungsstil für alle h1-Überschriften fest.
2.3. Klassenauswahl
Mit Klassenselektoren können Sie Stile für ein oder mehrere Elemente mit demselben Klassennamen angeben, die an verschiedenen Stellen auf der Seite oder auf platziert werden verschiedene Seiten Website. Um beispielsweise einen Titel mit der Überschrift „class“ zu erstellen, müssen Sie das Attribut „class“ mit dem Wert „headline“ zum öffnenden Tag hinzufügen
und legen Sie den Stil für die angegebene Klasse fest. Mit einer Klasse erstellte Stile können auf andere Elemente angewendet werden, die nicht unbedingt diesem Typ angehören.
.headline ( Texttransformation: Großbuchstaben; Farbe: Hellblau; )
Wenn ein Element über mehrere Klassenattribute verfügt, werden deren Werte mit Leerzeichen verkettet.
Anweisungen zur Verwendung eines Personalcomputers
2.4. ID-Auswahl
Mit der ID-Auswahl können Sie formatieren eins spezifisches Element. Der ID-Wert muss eindeutig sein, darf nur einmal auf einer einzelnen Seite vorkommen und muss mindestens ein Zeichen enthalten. Der Wert darf keine Leerzeichen enthalten.
Es gibt keine weiteren Einschränkungen hinsichtlich der Form der ID; insbesondere können Bezeichner alle Zahlen sein, mit einer Zahl beginnen, mit einem Unterstrich beginnen, nur Satzzeichen enthalten usw.
Die eindeutige ID eines Elements kann für verschiedene Zwecke verwendet werden, unter anderem als Möglichkeit, mithilfe von Fragment-IDs auf bestimmte Teile eines Dokuments zu verweisen, als Möglichkeit, bei der Skripterstellung auf ein Element abzuzielen, und als Möglichkeit, ein bestimmtes Element über CSS zu formatieren .
#sidebar ( width: 300px; float: left; )
2.5. Nachkommenselektor
Nachkommenselektoren wenden Stile auf Elemente innerhalb eines Containerelements an. Beispielsweise wählt ul li (text-transform: Uppercase;) alle li-Elemente aus, die untergeordnete Elemente aller ul-Elemente sind.
Wenn Sie die Nachkommen eines bestimmten Elements formatieren möchten, müssen Sie diesem Element eine Stilklasse zuweisen:
p.first a (Farbe: grün;) – dieser Stil wird auf alle Links angewendet, die vom Absatz mit der ersten Klasse abgeleitet sind;
p .first a (Farbe: grün;) – Wenn Sie ein Leerzeichen hinzufügen, werden Links, die sich innerhalb eines .first-Klassentags befinden, das ein untergeordnetes Element des Elements ist, formatiert
First a (Farbe: grün;) – dieser Stil wird auf jeden Link angewendet, der sich innerhalb eines anderen Elements befindet, das durch class.first bezeichnet wird.
2.6. Kinderauswahl
Ein untergeordnetes Element ist ein direktes untergeordnetes Element seines enthaltenden Elements. Ein Element kann mehrere untergeordnete Elemente haben, aber jedes Element kann nur ein übergeordnetes Element haben. Mit der untergeordneten Auswahl können Sie Stile nur anwenden, wenn das untergeordnete Element unmittelbar nach dem übergeordneten Element steht und keine anderen Elemente dazwischen liegen, d. h. das untergeordnete Element ist in nichts anderem verschachtelt.
Beispielsweise wählt p > strong alle starken Elemente aus, die untergeordnete Elemente des p-Elements sind.
2.7. Schwesterauswahl
Schwesternschaft entsteht zwischen Elementen, die ein gemeinsames Elternteil haben. Mit Geschwisterselektoren können Sie Elemente aus einer Gruppe von Elementen derselben Ebene auswählen.
h1 + p – wählt alle ersten Absätze aus, die unmittelbar auf ein beliebiges Tag folgen
ohne Auswirkungen auf die übrigen Absätze;
h1 ~ p – wählt alle Absätze aus, die Schwesterabsätze einer h1-Überschrift sind und unmittelbar darauf folgen.
2.8. Attributauswahl
Attributselektoren wählen Elemente basierend auf dem Attributnamen oder Attributwert aus:
[Attribut] – alle Elemente, die das angegebene Attribut enthalten – alle Elemente, für die das Alt-Attribut angegeben ist;
selector[attribute] – Elemente dieses Typs, die das angegebene Attribut enthalten, img – nur Bilder, für die das alt-Attribut angegeben ist;
selector[attribute="value"] – Elemente dieses Typs, die das angegebene Attribut mit einem bestimmten Wert enthalten, img – alle Bilder, deren Titel das Wort Blume enthält;
selector[attribute~="value"] – Elemente, die teilweise einen bestimmten Wert enthalten, wenn beispielsweise mehrere Klassen für ein Element angegeben sind, getrennt durch ein Leerzeichen, p – Absätze, deren Klassenname feature enthält;
selector[attribute|="value"] – Elemente, deren Liste von Attributwerten mit dem angegebenen Wort beginnt, p – Absätze, deren Klassenname feature ist oder mit feature beginnt;
selector[attribute^="value"] – Elemente, deren Attributwert mit dem angegebenen Wert beginnt, a – alle Links, die mit http:// beginnen;
selector[attribute$="value"] – Elemente, deren Attributwert mit dem angegebenen Wert endet, img – alle Bilder im PNG-Format;
selector[attribute*="value"] – Elemente, deren Attributwert das angegebene Wort an einer beliebigen Stelle enthält, a – alle Links, deren Name book enthält.
2.9. Pseudoklassenselektor
Pseudoklassen sind Klassen, die nicht wirklich an HTML-Tags angehängt sind. Sie ermöglichen es Ihnen, CSS-Regeln auf Elemente anzuwenden, wenn ein Ereignis eintritt oder einer bestimmten Regel gehorcht. Pseudoklassen charakterisieren Elemente mit folgenden Eigenschaften:
:hover – jedes Element, über dem sich der Mauszeiger befindet;
:focus – ein interaktives Element, zu dem mit der Tastatur navigiert oder mit der Maus aktiviert wurde;
:active – Element, das vom Benutzer aktiviert wurde;
:valid – Formularfelder, deren Inhalt im Browser auf Übereinstimmung mit dem angegebenen Datentyp überprüft wurde;
:invalid – Formularfelder, deren Inhalt nicht mit dem angegebenen Datentyp übereinstimmt;
:enabled – alle aktiven Formularfelder;
:disabled – blockierte Formularfelder, d. h. in einem inaktiven Zustand;
:in-range – Formularfelder, deren Werte im angegebenen Bereich liegen;
:out-of-range – Formularfelder, deren Werte nicht innerhalb des angegebenen Bereichs liegen;
:lang() – Elemente mit Text in der angegebenen Sprache;
:not(selector) – Elemente, die den angegebenen Selektor nicht enthalten – Klasse, Bezeichner, Name oder Formularfeldtyp – :not() ;
:target ist ein Element mit dem #-Symbol, auf das im Dokument verwiesen wird;
:checked – ausgewählte (vom Benutzer ausgewählte) Formularelemente.
2.10. Struktureller Pseudoklassenselektor
Strukturelle Pseudoklassen wählen untergeordnete Elemente gemäß dem in Klammern angegebenen Parameter aus:
:nth-child(odd) – ungerade untergeordnete Elemente;
:nth-child(even) – gerade untergeordnete Elemente;
:nth-child(3n) – jedes dritte Element unter den Kindern;
:nth-child(3n+2) – wählt jedes dritte Element aus, beginnend mit dem zweiten Kind (+2);
:nth-child(n+2) – wählt alle Elemente ab dem zweiten aus;
:nth-child(3) – wählt das dritte untergeordnete Element aus;
:nth-last-child() – wählt in der Liste der untergeordneten Elemente das Element mit der angegebenen Position aus, ähnlich wie :nth-child() , jedoch beginnend beim letzten, in der entgegengesetzten Richtung;
:first-child – ermöglicht Ihnen, nur das allererste untergeordnete Element des Tags zu formatieren;
:last-child – ermöglicht die Formatierung des letzten untergeordneten Elements des Tags;
:only-child – wählt ein Element aus, das das einzige untergeordnete Element ist;
:empty – wählt Elemente aus, die keine untergeordneten Elemente haben;
:root – wählt das Element aus, das das Stammverzeichnis des Dokuments ist – das HTML-Element.
2.11. Pseudoklassenselektor für Strukturtypen
Zeigt einen bestimmten Typ eines untergeordneten Tags an:
:nth-of-type() – wählt Elemente ähnlich wie :nth-child() aus, berücksichtigt jedoch nur den Typ des Elements;
:first-of-type – wählt das erste untergeordnete Element eines bestimmten Typs aus;
:last-of-type – wählt das letzte Element dieses Typs aus;
:nth-last-of-type() – wählt ein Element des angegebenen Typs in einer Liste von Elementen entsprechend der angegebenen Position aus, beginnend am Ende;
:only-of-type – wählt ein einzelnes Element aus angegebenen Typ unter untergeordneten Elementen übergeordnetes Element.
2.12. Pseudoelementselektor
Pseudoelemente werden zum Hinzufügen von Inhalten verwendet, die mithilfe der Content-Eigenschaft generiert werden:
:first-letter – wählt den ersten Buchstaben jedes Absatzes aus, gilt nur für Blockelemente;
:first-line – wählt die erste Zeile des Elementtextes aus, gilt nur für Blockelemente;
:before – fügt generierten Inhalt vor dem Element ein;
:after – fügt generierten Inhalt nach dem Element hinzu.
3. Wahlkombination
Um Elemente für die Formatierung genauer auszuwählen, können Sie Kombinationen von Selektoren verwenden:
img:nth-of-type(even) – wählt alle geraden Bilder aus, alternativer Text was beinhaltet Wort-CSS.
4. Gruppierungsselektoren
Derselbe Stil kann auf mehrere Elemente gleichzeitig angewendet werden. Dazu müssen Sie die erforderlichen Selektoren auf der linken Seite der Deklaration durch Kommas getrennt auflisten:
H1, h2, p, span (Farbe: Tomate; Hintergrund: Weiß;)
5. Vererbung und Kaskade
Vererbung und Kaskade sind zwei grundlegende Konzepte in CSS, die eng miteinander verbunden sind. Bei der Vererbung erben Elemente Eigenschaften von ihrem übergeordneten Element (dem Element, das sie enthält). Die Kaskade manifestiert sich darin, wie verschiedene Typen Welche Stylesheets auf ein Dokument angewendet werden und wie sich widersprüchliche Regeln gegenseitig überschreiben.
5.1. Nachlass
Nachlass ist der Mechanismus, durch den bestimmte Eigenschaften von einem Vorfahren an seine Nachkommen weitergegeben werden. Die CSS-Spezifikation ermöglicht die Vererbung von Eigenschaften, die sich auf den Textinhalt der Seite beziehen, wie z. B. Farbe, Schriftart, Buchstabenabstand, Zeilenhöhe, Listenstil, Textausrichtung, Texteinzug, Texttransformation, Sichtbarkeit, Weiß -Leerzeichen und Wortabstand. In vielen Fällen ist dies praktisch, da Sie nicht für jedes Element auf der Webseite die Schriftgröße und die Schriftfamilie festlegen müssen.
Eigenschaften im Zusammenhang mit der Blockformatierung werden nicht vererbt. Dies sind Hintergrund, Rand, Anzeige, Float und Clear, Höhe und Breite, Rand, Min-Max-Höhe und -Breite, Umriss, Überlauf, Polsterung, Position, Textdekoration, vertikale Ausrichtung und Z-Index.
Zwangsvererbung
Sie können das Schlüsselwort inherit verwenden, um ein Element zu zwingen, einen beliebigen Eigenschaftswert seines übergeordneten Elements zu erben. Dies funktioniert auch für Eigenschaften, die nicht standardmäßig geerbt werden.
Wie CSS-Stile festgelegt werden und funktionieren
1) Stile können vom übergeordneten Element geerbt werden (geerbte Eigenschaften oder Verwendung des inherit-Werts);
2) Stile im Stylesheet unten überschreiben Stile in der Tabelle oben;
3) Stile aus verschiedenen Quellen können auf ein Element angewendet werden. Sie können im Browser-Entwicklermodus überprüfen, welche Stile angewendet werden. Klicken Sie dazu mit der rechten Maustaste auf das Element und wählen Sie „Code anzeigen“ (oder etwas Ähnliches). In der rechten Spalte werden alle Eigenschaften aufgelistet, die für dieses Element festgelegt oder von einem übergeordneten Element geerbt wurden, zusammen mit den Stildateien, in denen sie angegeben sind, und der Ordnungszahl der Codezeile.
![](https://i2.wp.com/html5book.ru/wp-content/uploads/2015/01/nasledovanie-stiley.png)
4) Beim Definieren eines Stils können Sie eine beliebige Kombination von Selektoren verwenden – einen Elementselektor, eine Elementpseudoklasse, eine Klasse oder einen Elementbezeichner.
div (border: 1px solid #eee;) #wrap (width: 500px;).box (float: left;).clear (clear: Both;)
5.2. Kaskade
Kaskadierung ist ein Mechanismus, der das Endergebnis steuert, wenn unterschiedliche CSS-Regeln auf dasselbe Element angewendet werden. Es gibt drei Kriterien, die die Reihenfolge bestimmen, in der Eigenschaften angewendet werden: die wichtige Regel, die Spezifität und die Reihenfolge, in der Stylesheets enthalten sind.
Regel!wichtig
Die Gewichtung einer Regel kann mit dem Schlüsselwort!important angegeben werden, das direkt nach dem Eigenschaftswert hinzugefügt wird, zum Beispiel span (font-weight: Bold!important;) . Die Regel muss am Ende der Deklaration vor der schließenden Klammer ohne Leerzeichen stehen. Eine solche Ankündigung hat Vorrang vor allen anderen Regeln. Mit dieser Regel können Sie einen Eigenschaftswert löschen und einen neuen für ein Element aus einer Gruppe von Elementen festlegen, wenn kein direkter Zugriff auf die Stildatei besteht.
Spezifität
Für jede Regel berechnet der Browser Selektorspezifität, und wenn ein Element widersprüchliche Eigenschaftsdeklarationen aufweist, wird die Regel mit der höchsten Spezifität berücksichtigt. Der Spezifitätswert besteht aus vier Teilen: 0, 0, 0, 0. Die Selektorspezifität ist wie folgt definiert:
für id wird 0, 1, 0, 0 hinzugefügt;
für Klasse 0 wird 0, 1, 0 hinzugefügt;
für jedes Element und Pseudoelement wird 0, 0, 0, 1 hinzugefügt;
für einen Inline-Stil, der direkt einem Element hinzugefügt wird – 1, 0, 0, 0 ;
Ein universeller Selektor hat keine Spezifität.
H1 (Farbe: hellblau;) /*Spezifität 0, 0, 0, 1*/ em (Farbe: silber;) /*Spezifität 0, 0, 0, 1*/ h1 em (Farbe: gold;) /*Spezifität: 0, 0, 0, 1 + 0, 0, 0, 1 = 0, 0, 0, 2*/ div#main p.about (Farbe: blau;) /*Spezifität: 0, 0, 0, 1 + 0 , 1, 0, 0 + 0, 0, 0, 1 + 0, 0, 1, 0 = 0, 1, 1, 2*/ .sidebar (Farbe: grau;) /*Spezifität 0, 0, 1, 0 */ #sidebar (Farbe: orange;) /*Spezifität 0, 1, 0, 0*/ li#sidebar (Farbe: Aqua;) /*Spezifität: 0, 0, 0, 1 + 0, 1, 0, 0 = 0, 1, 0, 1*/
Dadurch werden die spezifischeren Regeln auf das Element angewendet. Wenn ein Element beispielsweise zwei Spezifitäten mit den Werten 0, 0, 0, 2 und 0, 1, 0, 1 aufweist, gewinnt die zweite Regel.
Reihenfolge der verbundenen Tabellen
Sie können mehrere externe Stylesheets erstellen und diese mit einer Webseite verbinden. Wenn drin verschiedene Tische werden Treffen unterschiedliche Bedeutungen Eigenschaften eines Elements, dann wird als Ergebnis die Regel im unten aufgeführten Stylesheet auf das Element angewendet.
CSS-Selektoren Definieren Sie die Elemente, für die eine Reihe von CSS-Regeln gelten.
Grundlegende Selektoren
Universeller Selektor Wählt alle Elemente aus. Optional kann es auf einen bestimmten Namensraum oder auf alle Namensräume beschränkt werden.Syntax:* k. A. |* *|*
Beispiel:* stimmt mit allen Elementen des Dokuments überein. Typselektor Wählt alle Elemente aus, die den angegebenen Knotennamen haben.
Syntax: Elementname
Beispiel: Die Eingabe stimmt mit jedem Element überein und wird zum Erstellen interaktiver Steuerelemente für webbasierte Formulare verwendet, um Daten vom Benutzer zu akzeptieren. Je nach Gerät und Benutzeragent stehen verschiedenste Arten von Eingabedaten und Steuerungs-Widgets zur Verfügung. "> Element. Klassenselektor Wählt alle Elemente aus, die das angegebene Klassenattribut haben.
Syntax:. Klassenname
Beispiel:.index stimmt mit jedem Element überein, das die Klasse „index“ hat. ID-Selektor Wählt ein Element basierend auf dem Wert seines ID-Attributs aus. In einem Dokument sollte es nur ein Element mit einer bestimmten ID geben.
Syntax:# ID-Name
Beispiel:#toc entspricht dem Element mit der ID „toc“. Attributselektor Wählt alle Elemente aus, die das angegebene Attribut haben.
Syntax:[ attr ] [ attr = Wert ] [ attr ~= Wert ] [ attr |= Wert ] [ attr ^= Wert ] [ attr $= Wert ] [ attr *= Wert ]
Beispiel: stimmt mit allen Elementen überein, für die das Autoplay-Attribut festgelegt ist (auf einen beliebigen Wert).
Gruppierungsselektoren
Auswahlliste Die , ist eine Gruppierungsmethode, sie wählt alle übereinstimmenden Knoten aus.Syntax: A, B
Beispiel: div, span stimmen mit beiden überein und ) ist der generische Container für Flow-Inhalte. Es hat keine Auswirkung auf den Inhalt oder das Layout, bis es mit CSS gestaltet wird
Kombinatoren
Nachkommen-Kombinator Der (Leerzeichen-)Kombinator wählt Knoten aus, die Nachkommen des ersten Elements sind.Syntax: A B
Beispiel: div span stimmt mit allen Elementen überein, die sich in a befinden. ) ist der generische Container für Flow-Inhalte. Es hat keine Auswirkung auf den Inhalt oder das Layout, bis es mit CSS gestaltet wird
Syntax: A>B
Beispiel: ul > li stimmt mit allen Elementen überein, die zur Darstellung eines Elements in einer Liste verwendet werden
- Element. Allgemeiner Geschwisterkombinator Der ~-Kombinator wählt Geschwister aus. Das bedeutet, dass das zweite Element auf das erste folgt (wenn auch nicht unbedingt unmittelbar) und beide dasselbe übergeordnete Element haben.
- Dieses Element wird ausgewählt
-
Dieses Div wird ausgewählt
-
......
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Dieses Element wird ausgewählt
- Verständnis: Pseudoklassenausdrücke des n-ten Kindes auf SitePoint
- Zähmung fortgeschrittener CSS-Selektoren im Smashing Magazine
Syntax: A~B
Beispiel: p ~ span stimmt mit allen Elementen überein, die auf ein Element folgen, das einen Absatz darstellt
, sofort oder nicht. Kombinator für benachbarte Geschwister Der +-Kombinator wählt benachbarte Geschwister aus. Das bedeutet, dass das zweite Element direkt auf das erste folgt und beide dasselbe übergeordnete Element haben.
Syntax: A+B
Beispiel: h2 + p stimmt mit allen Elementen überein, die einen Absatz darstellen
Elemente, die direkt auf ein folgen
. Spaltenkombinator
Das || Der Kombinator wählt Knoten aus, die zu einer Spalte gehören.
Syntax: Ein || B
Beispiel: col || td stimmt mit allen Elementen überein, die eine Zelle einer Tabelle definieren, die Daten enthält. Es nimmt am Tabellenmodell teil Elemente, die zum Gültigkeitsbereich des Elements gehören, definieren eine Spalte innerhalb einer Tabelle und werden zum Definieren einer gemeinsamen Semantik für alle gemeinsamen Zellen verwendet. Es wird im Allgemeinen innerhalb von a gefunden Element."> .
Pseudo
Pseudoklassen: Pseudo ermöglichen die Auswahl von Elementen basierend auf Statusinformationen, die nicht im Dokumentbaum enthalten sind.
Beispiel: a:visited stimmt mit allen Elementen (oder Ankerelementen) überein und erstellt mit seinem href-Attribut einen Hyperlink zu Webseiten, Dateien, E-Mail-Adressen, Orten auf derselben Seite oder allem anderen, was eine URL ansprechen kann vom Benutzer besucht. Pseudoelemente The::pseudo stellen Entitäten dar, die nicht in HTML enthalten sind.
Beispiel: p::first-line entspricht der ersten Zeile aller Elemente, die einen Absatz darstellen Elemente.
Spezifikationen
Spezifikation
Status
Kommentar
Selektoren sind einer, wenn nicht der wichtigste Teil von CSS. Sie bilden eine Kaskade und definieren, wie Stile auf Seitenelemente angewendet werden sollen.
Bis vor Kurzem lag der Fokus von CSS nie wirklich auf Selektoren. Von Zeit zu Zeit aufgetaucht kleine Updates innerhalb der Selektorenspezifikation, aber es gab nie wirklich bahnbrechende Verbesserungen. Zum Glück in In letzter Zeit Den Selektoren wird immer mehr Aufmerksamkeit geschenkt, also werfen wir einen Blick darauf, wie man eine Auswahl trifft verschiedene Typen Elemente und Elemente in verschiedenen Zuständen.
CSS3 brachte neue Selektoren und eröffnete ein Ganzes neue Welt Möglichkeiten und Verbesserungen bestehender Praktiken. Hier besprechen wir sowohl alte als auch neue Selektoren und wie man sie am besten nutzt.
Typische Selektoren
Bevor wir uns eingehend mit einigen der komplexeren und in CSS3 angebotenen Selektoren befassen, werfen wir einen Blick auf einige der heute am häufigsten verfügbaren Selektoren. Zu diesen Selektoren gehören Typ-, Klassen- und Bezeichnerselektoren.
Wähler Typ Identifiziert ein Element anhand seines Typs, insbesondere anhand der Art und Weise, wie das Element in HTML deklariert wird. Wähler Klasse Identifiziert ein Element basierend auf dem Wert des Klassenattributs, das bei Bedarf erneut auf mehrere Elemente angewendet werden kann und dabei hilft, beliebte Stile zu teilen. Und endlich, Identifikator Definiert ein Element basierend auf dem Wert des ID-Attributs, das eindeutig ist und nur einmal auf einer Seite verwendet werden sollte.
H1 (...).Tagline (...) #intro (...)
Untergeordnete Selektoren
Untergeordnete Selektoren bieten eine Möglichkeit, ineinander verschachtelte Elemente auszuwählen und sie so zu Kindern ihres übergeordneten Elements zu machen. Diese Auswahl kann auf zwei verschiedene Arten erfolgen, mit einem untergeordneten Selektor oder einem direkten untergeordneten Selektor.
Nachkommenselektor
Der gebräuchlichste untergeordnete Selektor ist der Nachkommenselektor, der jedes Element abgleicht, das auf einen bestimmten Vorfahren folgt. Das untergeordnete Element muss im Dokumentbaum nicht unmittelbar nach dem Vorfahren stehen, wie bei einer Eltern-Kind-Beziehung, sondern kann sich an einer beliebigen Stelle innerhalb des Vorfahren befinden. Nachkommen-Selektoren werden durch Leerzeichen zwischen den einzelnen Elementen im Selektor erstellt, wodurch für jedes Element in der Liste eine neue Hierarchieebene entsteht.
Der Artikel-H2-Selektor ist ein Nachkommen-Selektor und wählt nur Elemente aus
, die sich innerhalb des Elements befinden . Bitte beachten Sie, egal wo das Element lebt während es sich innerhalb des Elements befindet , es wird immer ausgewählt. Darüber hinaus jedes Element außerhalb des Elements wird nicht ausgewählt.Nachfolgend finden Sie die Überschriften, aus denen die Zeilen 3 und 5 ausgewählt werden.
Artikel h2 (...)
...
Dieser Titel wird ausgewählt
Dieser Titel wird ausgewählt
Direkte Kinderauswahl
Manchmal gehen untergeordnete Selektoren zu weit und wählen mehr als gewünscht aus. Manchmal müssen nur die direkten untergeordneten Elemente eines übergeordneten Elements ausgewählt werden und nicht jede Instanz eines Elements, das tief in einem Vorfahren verschachtelt ist. In diesem Fall kann ein direkter untergeordneter Selektor verwendet werden, indem im Selektor ein Größer-als-Zeichen (>) zwischen dem übergeordneten und dem untergeordneten Element platziert wird.
Beispielsweise ist „article > p“ nur dann ein direkter untergeordneter Selektor, wenn die Elemente
Befindet sich direkt im Element . Jedes Element<р>außerhalb des Elements platziert oder in einem anderen Element als verschachtelt , wird nicht ausgewählt.
Unten ist der Absatz in Zeile 3 das einzige direkte untergeordnete Element seines übergeordneten Elements , deshalb wurde es ausgewählt.
Artikel > p (...)
Dieser Absatz wird ausgewählt
Verwandte Selektoren
Zu wissen, wie man untergeordnete Elemente auswählt, ist größtenteils nützlich und wird häufig verwendet. Möglicherweise müssen jedoch auch Geschwisterelemente ausgewählt werden, also Elemente, die einen gemeinsamen Vorfahren haben. Eine solche Auswahl kann mithilfe eines gemeinsamen Geschwisterselektors und benachbarter Selektoren erfolgen.
Generische Geschwisterauswahl
Mit der allgemeinen Geschwisterauswahl können Sie Elemente auswählen, die auf der Grundlage ihrer Geschwister ausgewählt werden sollen, d. h. derjenigen, die das gleiche gemeinsame übergeordnete Element haben. Sie werden durch die Verwendung des Tilde-Zeichens (~) zwischen zwei Elementen innerhalb eines Selektors erstellt. Das erste Element gibt an, dass das zweite Element ein gleichgeordnetes Element sein muss und beide das gleiche übergeordnete Element haben müssen.
Der h2~p-Selektor ist ein allgemeiner Geschwisterselektor, der nach Elementen sucht
Die nach irgendwelchen Elementen kommen
im selben Elternteil. Zum Element
Wurde ausgewählt, muss es nach jedem Element stehen
.
Die Absätze in den Zeilen 5 und 9 werden ausgewählt, weil sie nach einer Überschrift im Dokumentbaum stehen und dasselbe übergeordnete Element wie eine zugehörige Überschrift haben.
H2 ~ p(...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Angrenzende Selektoren
Manchmal ist es wünschenswert, etwas mehr Kontrolle zu haben, einschließlich der Möglichkeit, ein Geschwisterkind auszuwählen, das einem anderen Geschwisterkind direkt folgt. Ein benachbarter Selektor wählt nur Geschwisterelemente aus, die unmittelbar auf ein anderes Geschwisterelement folgen. Anstelle eines Tilde-Zeichens, wie es bei einem gemeinsamen Geschwisterselektor der Fall ist, verwendet ein Geschwisterselektor ein Pluszeichen (+) zwischen zwei Elementen im Selektor. Auch hier gibt das erste Element an, dass das zweite Element unmittelbar folgen und mit ihm in Beziehung stehen muss und dass beide Elemente dasselbe übergeordnete Element haben müssen.
Werfen wir einen Blick auf den benachbarten Selektor h2 + p. Es werden nur Elemente ausgewählt
Kommt unmittelbar nach den Elementen
. Beide müssen außerdem das gleiche übergeordnete Element haben.
Der Absatz in Zeile 5 wird ausgewählt, da er unmittelbar auf die entsprechende Überschrift folgt und sie denselben übergeordneten Absatz haben.
H2 + p(...)
...
Dieser Absatz wird ausgewählt
Beispiel für benachbarte Selektoren
Input ( display: none; ) label, ul ( border: 1px solid #cecfd5; border-radius: 6px; ) label ( color: #0087cc; Cursor: Zeiger; display: inline-block; Schriftgröße: 18px; padding: 5px 9px; Übergang: alle .15s easy; ) label:hover ( color: #ff7b29; ) input:checked + label ( box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); color: #9799a7 ; ) nav ( max-height: 0; Überlauf: versteckt; Übergang: alle .15s easy; ) input:checked ~ nav ( max-height: 500px; ) ul ( list-style: none; margin: 8px 0 0 0; padding: 0; width: 100px; ) li ( border-bottom: 1px solid #cecfd5; ) li:last-child ( border-bottom: 0; ) a ( color: #0087cc; display: block; padding: 6px 12px; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; )
Attributselektoren
Einige der zuvor besprochenen generischen Selektoren können auch als Attributselektoren definiert werden, bei denen ein Element basierend auf einem Klassen- oder ID-Wert ausgewählt wird. Diese Selektoren Klassenattribute und id sind weit verbreitet und ziemlich mächtig, aber das ist erst der Anfang. In den letzten Jahren sind weitere Attributselektoren entstanden, insbesondere mit CSS3, die große Fortschritte gemacht haben. Elemente können nun basierend darauf ausgewählt werden, ob ein Attribut vorhanden ist und welchen Wert es enthält.
Attributpräsenzselektor
Der erste Attributselektor identifiziert ein Element basierend darauf, ob das Attribut aktiviert ist oder nicht, unabhängig von seinem tatsächlichen Wert. Um ein Element basierend darauf auszuwählen, ob ein Attribut vorhanden ist oder nicht, geben Sie einfach den Attributnamen ein eckige Klammern() im Selektor. Nach jedem Typ- oder Klassenselektor können eckige Klammern stehen, abhängig vom gewünschten Grad an Spezifität.
A (...)
Attributselektor =
Um ein Element mit einem bestimmten und präzisen Wert zu identifizieren, kann derselbe Selektor wie zuvor verwendet werden, aber dieses Mal steht der gewünschte Wert in eckigen Klammern hinter dem Attributnamen. Innerhalb der eckigen Klammern sollte nach dem Gleichheitszeichen (=) ein Attributname stehen, wobei in den Anführungszeichen der gewünschte Attributwert steht.
A (...)
Attributselektor *=
Wenn wir versuchen, ein Element zu finden, das auf einem Teil eines Attributwerts basiert, aber keine exakte Übereinstimmung aufweist, kann das Sternchen (*) in den eckigen Klammern des Selektors verwendet werden. Das Sternchen muss unmittelbar nach dem Attributnamen und unmittelbar vor dem Gleichheitszeichen stehen. Das bedeutet, dass der folgende Wert nur im Attributwert erscheinen oder darin enthalten sein muss.
A (...)
Attributselektor ^=
Zusätzlich zur Auswahl eines Elements basierend auf dem Attributwert, der den angegebenen Text enthält, können Sie ein Element auch basierend darauf auswählen, wo der Attributwert beginnt. Die Verwendung des Zirkumflexzeichens (^) in Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen bedeutet, dass der Attributwert mit dem angegebenen Text beginnen muss.
A (...)
...
Attributselektor $=
Das Gegenteil des vorherigen Selektors ist ein Attributselektor, bei dem der Wert mit etwas Text endet. Anstelle des Zeichens ^ wird in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein Dollarzeichen ($) verwendet. Die Verwendung eines Dollarzeichens bedeutet, dass der Attributwert mit dem angegebenen Text enden muss.
A (...)
Attributselektor ~=
Manchmal können Attributwerte voneinander beabstandet sein, sodass nur eines der Wörter zum Erstellen einer Auswahl geeignet sein muss. In diesem Fall bedeutet die Verwendung des Tilde-Zeichens (~) in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen, dass der Attributwert durch Leerzeichen getrennt ist, von denen ein Wort genau mit dem angegebenen Wert übereinstimmt.
A (...)
Attributselektor |=
Wenn der Attributwert durch Bindestriche statt durch Leerzeichen getrennt wird, kann in den Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein vertikales Linienzeichen (|) verwendet werden. Eine vertikale Linie zeigt an, dass der Attributwert durch einen Bindestrich getrennt werden kann, Wörter jedoch mit dem angegebenen Wert beginnen müssen.
A (...)
Beispiel für Attributselektoren
Ul ( Listenstil: keine; Rand: 0; Polsterung: 0; ) a ( Hintergrundposition: 0 50 %; Hintergrundwiederholung: keine Wiederholung; Farbe: #0087cc; Polsterung links: 22 Pixel; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; ) a ( Hintergrundbild: url("images/pdf.png"); ) a ( Hintergrundbild: url("images/doc.png"); ) a ( Hintergrundbild: url("images/image.png"); ) a ( Hintergrundbild: url("images/audio.png"); ) a ( Hintergrundbild: url("images/video.png" ); )
Übersicht über Attributselektoren Beispiel Name Beschreibung
A Attributpräsenzselektor Wählt ein Element aus, wenn das angegebene Attribut vorhanden ist.
A Attributselektor = Wählt ein Element aus, wenn der Wert dieses Attributs genau mit dem angegebenen übereinstimmt.
A Attributselektor *= Wählt ein Element aus, wenn der Wert dieses Attributs mindestens eine Instanz des angegebenen Textes enthält.
A Attributselektor ^= Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text beginnt.
A Attributselektor $= Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text endet.
A Attributselektor ~= Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch Leerzeichen getrennt ist und genau mit einem einzelnen angegebenen Wort übereinstimmt.
A Attributselektor |= Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch einen Bindestrich getrennt ist und mit dem angegebenen Wort beginnt.
Pseudoklassen
Pseudoklassen ähneln regulären Klassen in HTML, werden jedoch nicht direkt im Markup angegeben, sondern dynamisch als Ergebnis von Benutzeraktionen oder der Dokumentstruktur aufgefüllt. Die häufigste Pseudoklasse, die Sie wahrscheinlich schon einmal gesehen haben, ist :hover. Beachten Sie, dass diese Pseudoklasse wie alle anderen Pseudoklassen mit einem Doppelpunkt (:) beginnt.
Pseudoklassen verknüpfen
Einige grundlegende Pseudoklassen umfassen zwei Pseudoklassen, die sich um Referenzen drehen. Dies sind die Pseudoklassen :link und :visited und sie bestimmen, ob ein Link besucht wurde oder nicht. Um einen Link zu formatieren, der noch nicht besucht wurde, kommt die Pseudoklasse :link ins Spiel, und die Pseudoklasse :visited stilisiert Links, die der Benutzer bereits besucht hat, basierend auf seinem Browserverlauf.
A:link (...) a:besucht (...)
Pseudoklassen für Benutzeraktionen
Basierend auf Benutzeraktionen können verschiedene Pseudoklassen dynamisch auf ein Element angewendet werden, darunter :hover, :active und :focus. Die Pseudoklasse :hover wird auf ein Element angewendet, wenn der Benutzer den Cursor über das Element bewegt, was am häufigsten bei Links verwendet wird. Die Pseudoklasse:active wird auf ein Element angewendet, wenn der Benutzer das Element aktiviert, beispielsweise indem er darauf klickt. Schließlich wird die Pseudoklasse:focus auf ein Element angewendet, wenn der Benutzer das Element zum Fokus der Seite gemacht hat, häufig durch Verwendung der Tab-Taste beim Wechseln von einem Element zum anderen.
A:hover (...) a:aktiv (...) a:fokus (...)
Schnittstellenstatus-Pseudoklassen
Wie Links gibt es auch einige Pseudoklassen, die mit dem Status von UI-Elementen verknüpft sind, insbesondere innerhalb von Formularen. Zu diesen Pseudoklassen gehören :enabled, :disabled, :checked und :indeterminate.
Die Pseudoklasse „:enabled“ wählt Felder aus, die aktiviert und zur Verwendung verfügbar sind, und die Pseudoklasse „:disabled“ wählt Felder aus, an die ein „disabled“-Attribut gebunden ist. Viele Browser blenden solche deaktivierten Felder standardmäßig aus, um Benutzer darüber zu informieren, dass das Feld nicht für die Interaktion verfügbar ist. Ihr Stil kann jedoch über die Pseudoklasse :disabled nach Wunsch angepasst werden.
Eingabe:aktiviert (...) Eingabe:deaktiviert (...)
Die letzten beiden Schnittstellenstatuselemente, die Pseudoklassen :checked und :indeterminate, drehen sich um Kontrollkästchen und Optionsfelder. Die Pseudoklasse :checked wählt Kontrollkästchen oder Optionsfelder aus, von denen Sie erwarten, dass sie aktiviert sind. Wenn kein Kontrollkästchen oder Optionsfeld aktiviert oder ausgewählt ist, befindet es sich in einem unbestimmten Zustand, für den die Pseudoklasse :indeterminate verwendet werden kann, um auf ähnliche Elemente abzuzielen.
Eingabe:geprüft (...) Eingabe:unbestimmt (...)
Pseudoklassen von Struktur und Position
Mehrere Pseudoklassen beziehen sich auf Struktur und Position basierend darauf, wo Elemente im Dokumentbaum gefunden werden. Diese Pseudoklassen gibt es in verschiedenen Formen und Größen, von denen jede ihre eigene, einzigartige Funktionalität bietet. Einige Pseudoklassen gibt es schon länger als andere, aber CSS3 brachte eine ganze Reihe neuer Pseudoklassen mit sich, die die bestehenden ergänzen.
:erstes-Kind, :letztes-Kind und :nur-Kind
Die ersten strukturellen Pseudoklassen, auf die Sie wahrscheinlich stoßen werden, sind :first-child , :last-child und :only-child . Die Pseudoklasse :first-child wählt ein Element aus, wenn es das erste untergeordnete Element im übergeordneten Element ist, während die Pseudoklasse :last-child das Element auswählt, wenn es das letzte untergeordnete Element im übergeordneten Element ist. Diese Pseudoklassen eignen sich ideal zum Auswählen des ersten oder letzten Elements in einer Liste usw. Darüber hinaus wählt :only-child ein Element aus, wenn es das einzige Element im übergeordneten Element ist. Alternativ kann die :only-child-Pseudoklasse als :first-child:last-child geschrieben werden, allerdings hat :only-child eine geringere Spezifität.
Hier gibt der Selektor li:first-child das erste Listenelement an, während li:last-child das letzte Listenelement angibt und somit die Zeilen 2 und 10 auswählt. Der Selektor div:only-child sucht nach
, das das einzige untergeordnete Element des übergeordneten Elements ist, ohne weitere gleichgeordnete Elemente. In diesem Fall wird Zeile 4 ausgewählt, da dies die einzige ist in diesem Listenelement.Li:erstes-Kind (...) li:letztes-Kind (...) div:nur-Kind (...)
:first-of-type, :last-of-type und :only-of-type
Das Finden des ersten, letzten und einzigen Kindes eines Elternteils ist sehr nützlich und oft auch alles, was erforderlich ist. Manchmal möchten Sie jedoch nur das erste, letzte oder einzige untergeordnete Element eines bestimmten Elementtyps auswählen. Sie möchten beispielsweise nur den ersten oder letzten Absatz eines Artikels oder möglicherweise nur ein Bild innerhalb eines Artikels auswählen. Glücklicherweise helfen dabei die Pseudoklassen :first-of-type, :last-of-type und :only-of-type.
Die Pseudoklasse „:first-of-type“ wählt das erste Element ihres Typs innerhalb der übergeordneten Klasse aus, während die Pseudoklasse „:last-of-type“ das letzte Element dieses Typs innerhalb der übergeordneten Klasse auswählt. Die Pseudoklasse :only-of-type wählt ein Element aus, wenn es das einzige seines Typs im übergeordneten Element ist.
Im folgenden Beispiel wählen die Pseudoklassen p:first-of-type und p:last-of-type jeweils den ersten und letzten Absatz im Artikel aus, unabhängig davon, ob es sich tatsächlich um die ersten oder letzten untergeordneten Absätze handelt der Artikel. Die Zeilen 3 und 6 werden von diesen Selektoren ausgewählt. Der img:only-of-type-Selektor gibt das Bild in Zeile 5 als einziges Bild an, das im Artikel erscheint.
P:first-of-type (...) p:last-of-type (...) img:only-of-type (...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
...
Schließlich gibt es mehrere Struktur- und Positions-Pseudoklassen, die Elemente basierend auf Zahlen oder algebraischen Ausdrücken auswählen. Zu diesen Pseudoklassen gehören :nth-child(n) , :nth-last-child(n) , :nth-of-type(n) und :nth-last-of-type(n) . Alle diese eindeutigen Pseudoklassen beginnen mit dem n-ten und nehmen eine Zahl oder einen Ausdruck in Klammern an, der durch das Symbol n bezeichnet wird.
Die Zahl oder der Ausdruck in Klammern gibt genau an, welches Element bzw. welche Elemente ausgewählt werden sollen. Durch die Verwendung einer bestimmten Zahl wird das einzelne Element vom Anfang oder Ende des Dokumentbaums berechnet und dann ausgewählt. Durch die Verwendung eines Ausdrucks wird der Satz von Elementen vom Anfang oder Ende des Dokumentbaums ausgewertet und eine Gruppe oder Wiederholung davon ausgewählt.
Verwendung von Zahlen und Ausdrücken in Pseudoklassen
Wie bereits erwähnt, wird bei Verwendung einer bestimmten Zahl in einer Pseudoklasse vom Anfang oder Ende des Dokumentbaums aus gerechnet und ein passendes Element ausgewählt. Beispielsweise wählt der Selektor li:nth-child(4) das vierte Element in der Liste aus. Die Zählung beginnt beim ersten Listenelement und erhöht sich für jedes Listenelement um eins, bis schließlich das vierte Element gefunden und ausgewählt wird. Bei der Angabe einer bestimmten Zahl muss diese positiv sein.
Ausdrücke für Pseudoklassen liegen im Format an, an+b, an-b, n+b, -n+b und -an+b vor. Der gleiche Ausdruck kann übersetzt und gelesen werden als (a×n)±b. Die Variable a gibt den Faktor an, mit dem die Elemente berechnet werden, während die Variable b angibt, wo die Zählung beginnt oder stattfindet.
Beispielsweise gibt der Selektor li:nth-child(3n) jedes dritte Element eines Listenelements an. Die Verwendung dieses Ausdrucks entspricht 3x0, 3x1, 3x2 usw. Wie Sie sehen können, wählen die Ergebnisse dieses Ausdrucks das dritte, sechste und jedes Element aus, das ein Vielfaches von drei ist.
Darüber hinaus können die Schlüsselwörter „odd“ und „even“ als Werte verwendet werden. Wie zu erwarten, wählen sie ungerade bzw. gerade Elemente aus. Wenn die Schlüsselwörter nicht attraktiv sind, wählt der Ausdruck 2n+1 alle ungeraden Elemente aus, und der Ausdruck 2n wählt alle geraden Elemente aus.
Der Selektor li:nth-child(4n+7) definiert jedes vierte Element in der Liste, beginnend mit dem siebten Element. Auch hier ist die Verwendung dieses Ausdrucks äquivalent zu (4x0)+7, (4x1)+7, (4x2)+7 usw. Die Ergebnisse dieses Ausdrucks wählen das siebte, elfte, fünfzehnte und jedes vierte Element aus.
Bei Verwendung von n ohne führende Zahl wird a als 1 ausgewertet. Der Selektor li:nth-child(n+5) wählt jedes Listenelement beginnend mit dem fünften aus, wobei die ersten vier Listenelemente nicht ausgewählt werden. Im Ausdruck wird dies als (1×0)+5, (1×1)+5, (1×2)+5 usw. analysiert.
Mit negativen Zahlen können komplexere Dinge erstellt werden. Beispielsweise zählt der Selektor li:nth-child(6n-4) jedes sechste Listenelement, beginnend bei -4, und wählt das zweite, achte, vierzehnte Listenelement usw. aus. Derselbe Selektor li:nth-child(6n-4) kann auch als li:nth-child(6n+2) geschrieben werden, ohne die negative b-Variable zu verwenden.
Auf eine negative Variable oder ein negatives Argument n muss eine positive Variable b folgen. Wenn dem Argument n eine negative Variable a vorangestellt ist, bestimmt die Variable b, wie hoch die Anzahl erreicht wird. Beispielsweise wählt der Selektor li:nth-child(-3n+12) jedes dritte Listenelement in den ersten zwölf Elementen aus. Der Selektor li:nth-child(-n+9) wählt die ersten neun Elemente in der Liste aus, da die Variable a ohne deklarierte Zahl standardmäßig den Wert -1 hat.
:nth-child(n) und :nth-last-child(n)
Mit einem allgemeinen Verständnis der Funktionsweise von Zahlen und Ausdrücken in Pseudoklassen werfen wir einen Blick auf nützliche Pseudoklassen, in denen diese Zahlen und Ausdrücke verwendet werden können. Die ersten davon sind :nth-child(n) und :nth-last -child(n) . Diese Pseudoklassen funktionieren ähnlich wie :first-child und :last-child , indem sie alle Elemente im übergeordneten Element untersuchen und zählen und nur ein bestimmtes Element auswählen. :nth-child(n) funktioniert vom Anfang des Dokumentbaums und :nth-last-child(n) funktioniert vom Ende des Dokumentbaums.
Werfen wir mithilfe der Pseudoklasse :nth-child(n) einen Blick auf den Selektor li:nth-child(3n). Es definiert jedes dritte Listenelement, daher werden die Zeilen 4 und 7 ausgewählt.
Li:nth-child(3n) (…)
Die Verwendung eines anderen Ausdrucks in der Pseudoklasse :nth-child(n) führt zu einer anderen Auswahl. Der Selektor li:nth-child(2n+3) definiert beispielsweise jedes zweite Element in der Liste, beginnend mit dem dritten. Als Ergebnis werden die Elemente in den Zeilen 4 und 6 ausgewählt.
Li:nth-child(2n+3) (...)
Wenn Sie den Ausdruck erneut ändern, diesmal mit einem negativen Wert, erhalten Sie eine neue Auswahl. Hier gibt der Selektor li:nth-child(-n+4) die ersten vier Elemente der Liste an, während die übrigen Elemente nicht ausgewählt werden, sodass die Zeilen 1 bis 4 ausgewählt werden.
Li:nth-child(-n+4) (...)
Das Hinzufügen einer negativen Zahl vor n ändert die Auswahl erneut. Hier definiert der Selektor li:nth-child(-2n+5) jedes zweite Listenelement aus den ersten fünf Elementen, sodass die Elemente in den Zeilen 2, 4 und 6 ausgewählt werden.
Li:nth-child(-2n+5) (...)
Durch Ändern der Pseudoklasse :nth-child(n) in :nth-last-child(n) wird die Zählrichtung geändert, sodass die Zählung am Ende des Dokumentbaums beginnt. Der Selektor li:nth-last-child(3n+2) gibt beispielsweise jedes dritte Listenelement an, beginnend vom zweiten bis zum letzten, und zwar in Richtung des Anfangs der Liste. Hier werden die Listenelemente in den Zeilen 3 und 6 ausgewählt.
Li:nth-last-child(3n+2) (...)
:nth-of-type(n) und :nth-last-of-type(n)
Die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) sind :nth-child(n) und :nth-last-child(n) sehr ähnlich, aber anstelle von Zählen jedes Elements Innerhalb des übergeordneten Elements zählen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) nur Elemente ihres eigenen Typs. Wenn Sie beispielsweise Absätze in einem Artikel zählen, überspringen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) alle Überschriften
oder verschiedene Elemente, die keine Absätze sind, während :nth-child(n) und :nth-last-child(n) jedes Element zählen, unabhängig von seinem Typ, und nur diejenigen auswählen, die mit dem Element im angegebenen Selektor übereinstimmen. Darüber hinaus sind alle möglichen Ausdrücke, die in :nth-child(n) und :nth-last-child(n) verwendet werden, auch im Pseudo :nth-of-type(n) und :nth-last-of-type verfügbar -Klassen (n) .Durch die Verwendung der :nth-of-type(n)-Pseudoklasse im p:nth-of-type(3n)-Selektor können wir jeden dritten Absatz im übergeordneten Element definieren, unabhängig von anderen verwandten Elementen innerhalb des übergeordneten Elements. Hier werden die Absätze der Zeilen 5 und 9 ausgewählt.
P:nth-of-type(3n) (...)
...
Dieser Absatz wird ausgewählt
...
Dieser Absatz wird ausgewählt
Wie bei den Pseudoklassen :nth-child(n) und :nth-last-child(n) besteht der Hauptunterschied zwischen :nth-of-type(n) und :nth-last-of-type(n) darin dass :nth-of-type(n) Elemente vom Anfang des Dokumentbaums zählt und :nth-last-of-type(n) Elemente vom Ende des Dokumentbaums zählt.
Mit der Pseudoklasse :nth-last-of-type(n) können wir einen Selektor p:nth-last-of-type(2n+1) schreiben, der jeden zweiten Absatz ab dem Ende des übergeordneten Elements angibt, beginnend mit der letzte Absatz. Hier werden die Absätze der Zeilen 4, 7 und 9 ausgewählt.
P:nth-last-of-type(2n+1) (...)
...
Dieser Absatz wird ausgewählt
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Pseudoklasse:Ziel
Die Pseudoklasse :target wird zum Formatieren von Elementen verwendet, wenn der Wert des id-Attributs mit dem URI-Fragmentzeiger übereinstimmt. Dieser Teil des URI wird anhand des Hash-Zeichens (#) und dessen, was unmittelbar darauf folgt, erkannt. Die Adresse http://example.com/index.html#hello enthält einen Hallo-Zeiger. Wenn es beispielsweise mit dem Wert des id-Attributs eines Elements auf der Seite übereinstimmt,
Pseudoklasse:leer
Mit der Pseudoklasse :empty können Sie Elemente auswählen, die keine untergeordneten Elemente oder Text enthalten. Kommentare, Verarbeitungsanweisungen und leerer Text gelten nicht als untergeordnete Elemente und werden nicht als solche behandelt.
Die Verwendung der Pseudoklasse div:empty bestimmt
Keine Kinder oder Text. Unten ausgewählt in den Zeilen 2 und 3, da diese völlig leer sind. Auch wenn der zweite Enthält einen Kommentar, wird er nicht als untergeordnetes Element betrachtet und daher verlassen leer. Erste enthält Text, das dritte enthält ein einzelnes Leerzeichen und das letzte enthält ein untergeordnetes Element Daher sind sie alle ausgeschlossen und nicht ausgewählt.Div:leer (...)
Hallo
Pseudoklasse:nicht
Die Pseudoklasse :not(x) nimmt ein Argument und filtert die getroffene Auswahl. Der p:not(.intro)-Selektor verwendet die :not-Pseudoklasse, um jeden Absatz ohne eine Intro-Klasse zu definieren. Das Absatzelement wird am Anfang des Selektors definiert, gefolgt von der Pseudoklasse :not(x). In den Klammern befindet sich ein Negationsselektor, in diesem Fall die Intro-Klasse.
Unten verwenden sowohl die Selektoren div:not(.awesome) als auch :not(div) die Pseudoklasse :not(x). Der Selektor div:not(.awesome) definiert alle
ohne class awesome , während der :not(div)-Selektor ein Element angibt, das es nicht ist . Als Ergebnis wird es ausgewählt in Zeile 1 sowie zwei Abschnitte in den Zeilen 3 und 4. Das einzige nicht ausgewählte Element ist mit der awesome-Klasse, da sie über zwei Pseudoklassen hinausgeht.Div:not(.awesome) (...) :not(div) (...)
Dieses Div wird ausgewählt
...
Dieser Abschnitt wird ausgewählt. Dieser Abschnitt wird ausgewähltBeispiel mit Pseudoklassen
Nummer
Spieler
Position
Höhe
Gewicht
8
Marco Belinelli
G
6-5
195
5
Carlos Boozer
F
6-9
266
...
Tabelle ( border-collapse: separat; border-spacing: 0; width: 100 %; ) th, td ( padding: 6px 15px; ) th ( background: #42444e; color: #fff; text-align: left; ) tr :first-child th:first-child ( border-top-left-radius: 6px; ) tr:first-child th:last-child ( border-top-right-radius: 6px; ) td ( border-right: 1px solid #c6c9cc; border-bottom: 1px solid #c6c9cc; ) td:first-child ( border-left: 1px solid #c6c9cc; ) tr:nth-child(even) td ( Hintergrund: #eaeaed; ) tr:last- child td:first-child ( border-bottom-left-radius: 6px; ) tr:last-child td:last-child ( border-bottom-right-radius: 6px; )
Übersicht über Pseudoklassen Beispiel Name Beschreibung
eine Verbindung Link-Pseudoklasse Wählt Links aus, die vom Benutzer nicht angezeigt wurden.
a:besucht Link-Pseudoklasse Wählt Links aus, die vom Benutzer besucht wurden.
a:schweben Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer mit der Maus darüber fährt.
a:aktiv Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer es aktiviert.
ein Fokus Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer es zu einem Aufmerksamkeitspunkt gemacht hat.
Eingabe: aktiviert Staatliche Pseudoklasse Wählt ein Element in einem zugänglichen Zustand aus.
Eingabe: deaktiviert Staatliche Pseudoklasse Wählt über das Attribut „disabled“ ein Element in einem deaktivierten Zustand aus.
Eingabe: überprüft Staatliche Pseudoklasse Wählt ein aktiviertes Kontrollkästchen oder Optionsfeld aus.
Eingabe: unbestimmt Staatliche Pseudoklasse Wählt ein Kontrollkästchen oder Optionsfeld aus, das nicht aktiviert oder deaktiviert war, sodass es in einem undefinierten Zustand verbleibt.
li:erstes Kind Strukturelle Pseudoklasse Wählt das erste Element im übergeordneten Element aus.
li:last-child Strukturelle Pseudoklasse Wählt das letzte Element im übergeordneten Element aus.
div:only-child Strukturelle Pseudoklasse Wählt ein einzelnes Element im übergeordneten Element aus.
p:erster Typ Strukturelle Pseudoklasse Wählt das erste Element seines Typs im übergeordneten Element aus.
p:last-of-type Strukturelle Pseudoklasse Wählt das letzte Element seines Typs im übergeordneten Element aus.
img:only-of-type Strukturelle Pseudoklasse Wählt das einzige Element seines Typs im übergeordneten Element aus.
li:nth-child(2n+3) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Anfang des Dokumentbaums an.
li:nth-last-child(3n+2) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Ende des Dokumentbaums an.
p:nth-of-type(3n) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Anfang des Dokumentbaums an.
p:nth-last-of-type(2n+1) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Ende des Dokumentbaums an.
Abschnitt:Ziel Pseudoklasse:Ziel Wählt ein Element aus, dessen ID-Attributwert mit der URI-Fragment-ID übereinstimmt.
div:leer Pseudoklasse:leer Wählt ein Element aus, das keine untergeordneten Elemente oder Text enthält.
div:not(.awesome) Pseudoklasse:nicht Wählt ein Element aus, das nicht durch das deklarierte Argument dargestellt wird.
Pseudoelemente
Pseudoelemente sind dynamische Elemente, die im Dokumentbaum nicht vorhanden sind. Wenn sie mit Selektoren verwendet werden, erzeugen diese Pseudoelemente eindeutige Teile der Seite, die gestaltet werden können. Ein wichtiger Punkt ist, dass in einem Selektor jeweils nur ein Pseudoelement verwendet werden kann.
Text-Pseudoelemente
Die ersten implementierten Pseudoelemente waren die Pseudoelemente :first-letter und :first-line text. Das Pseudoelement :first-letter gibt den ersten Textbuchstaben innerhalb eines Elements an, während :first-line die erste Textzeile innerhalb eines Elements angibt.
In der Demo unten ist der erste Buchstabe eines Absatzes mit der Klasse alpha auf eine große Schriftgröße und -farbe eingestellt, ebenso wie die erste Zeile eines Absatzes mit der Klasse bravo . Diese Auswahl erfolgt mithilfe der Pseudoklassen :first-letter bzw. :first-line text.
Alpha:first-letter, .bravo:first-line ( Farbe: #ff7b29; Schriftgröße: 18px; )
Lorem ipsum dolor...
Ganzzahl eget enim...
Demonstration von Textpseudoelementen
Durch Pseudoelemente generierter Inhalt
Die Pseudoelemente :before und :after erstellen neue Inline-Pseudoelemente nur innerhalb des ausgewählten Elements. Am häufigsten werden diese Pseudoelemente in Kombination mit der Content-Eigenschaft verwendet, um der Seite geringfügige Informationen hinzuzufügen. Dies ist jedoch nicht immer der Fall. Durch die zusätzliche Verwendung dieser Pseudoelemente können Benutzeroberflächenkomponenten zu einer Seite hinzugefügt werden, ohne dass das Dokument mit nicht-semantischen Elementen überladen werden muss.
Das Pseudoelement :before erstellt ein Pseudoelement vor oder vor dem ausgewählten Element, während :after ein Pseudoelement nach oder hinter dem ausgewählten Element erstellt. Diese Pseudoelemente erscheinen innerhalb des ausgewählten Elements verschachtelt und nicht außerhalb. Im Folgenden wird das Pseudoelement :after verwendet, um den href-Attributwert von Links in Klammern nach dem Link selbst anzuzeigen. Diese Informationen sind nützlich, aber letztendlich unterstützt nicht jeder Browser diese Pseudoelemente.
A:after ( Farbe: #9799a7; Inhalt: " (" attr(href) ")"; Schriftgröße: 11px; )
Suchen Sie im Internet Erfahren Sie, wie Sie eine Website erstellen
Demonstration von durch Inhalte generierten Pseudoelementen
Pseudoelement::selection
Das Pseudoelement ::selection definiert den vom Benutzer ausgewählten Teil des Dokuments. Die Auswahl kann dann gestylt werden, allerdings nur mit den Eigenschaften color , background , background-color und text-shadow. Es ist zu beachten, dass die Eigenschaft „Hintergrundbild“ ignoriert wird. Allerdings kann die Abkürzungseigenschaft „Hintergrund“ zum Hinzufügen von Farbe verwendet werden, alle Bilder werden jedoch ignoriert.
Doppelpunkt (:) und Doppelpunkt (::)
Das Pseudoelement ::selection wurde CSS3 hinzugefügt, um Pseudoklassen von Pseudoelementen zu trennen, indem der Doppelpunkt verwendet wurde, der Pseudoelementen hinzugefügt wurde. Glücklicherweise unterstützen die meisten Browser sowohl einzelne als auch doppelte Doppelpunktwerte für Pseudoelemente, aber das ::selection-Pseudoelement muss immer mit einem Doppelpunkt beginnen.
Wenn Sie in der Demo unten einen beliebigen Text auswählen, wird der Hintergrund dank des Pseudoelements ::selection orange. Schauen Sie sich auch ::-moz-selection an. Das Mozilla-Präfix wurde hinzugefügt, um eine bessere Unterstützung für alle Browser zu gewährleisten.
::-moz-selection (Hintergrund: #ff7b29;) ::selection (Hintergrund: #ff7b29;)
Demonstration von Pseudoelementen
Pfeil (Hintergrund: #2db34a; Farbe: #fff; Anzeige: Inline-Block; Höhe: 30 Pixel; Zeilenhöhe: 30 Pixel; Polsterung: 0 12 Pixel; Position: relativ; Textdekoration: keine; ) .arrow:before, . Pfeil: nach ( Inhalt: ""; Höhe: 0; Position: absolut; Breite: 0; ) .pfeil: vor ( Rand unten: 15 Pixel fest #2db34a; Rand links: 15 Pixel fest transparent; Rand oben: 15 Pixel fest #2db34a; links: -15px; ) .arrow:after ( Rand unten: 15 Pixel durchgehend transparent; Rand links: 15 Pixel durchgehend #2db34a; Rand oben: 15 Pixel durchgehend transparent; rechts: -15px; ) .arrow:hover ( Hintergrund: #ff7b29; ) .arrow:hover:before ( border-bottom: 15px solid #ff7b29; border-top: 15px solid #ff7b29; ) .arrow:hover:after ( border-left: 15px solid #ff7b29; )
Unterstützung für die Browserauswahl
Diese Selektoren bieten zwar unterschiedliche Funktionen und die Möglichkeit, einige wirklich erstaunliche Dinge damit zu tun mit CSS, leiden sie manchmal unter einer schlechten Browserunterstützung. Bevor Sie etwas zu Kritisches tun, überprüfen Sie die Selektoren, die Sie in den gängigsten Browsern verwenden möchten, und entscheiden Sie dann, ob sie für Sie geeignet sind oder nicht.
CSS3.info bietet ein CSS3-Selektortesttool, das Sie darüber informiert, welche Selektoren vom Browser unterstützt werden. Es ist auch eine gute Idee, direkt die Unterstützung Ihres Browsers zu überprüfen.
Auf Smashing Magazine
Lesen Sie auch
Pseudo
Pseudoklassen: Pseudo ermöglichen die Auswahl von Elementen basierend auf Statusinformationen, die nicht im Dokumentbaum enthalten sind.Beispiel: a:visited stimmt mit allen Elementen (oder Ankerelementen) überein und erstellt mit seinem href-Attribut einen Hyperlink zu Webseiten, Dateien, E-Mail-Adressen, Orten auf derselben Seite oder allem anderen, was eine URL ansprechen kann vom Benutzer besucht. Pseudoelemente The::pseudo stellen Entitäten dar, die nicht in HTML enthalten sind.
Beispiel: p::first-line entspricht der ersten Zeile aller Elemente, die einen Absatz darstellen
Elemente.
Spezifikationen
Spezifikation | Status | Kommentar |
---|---|---|
Selektoren sind einer, wenn nicht der wichtigste Teil von CSS. Sie bilden eine Kaskade und definieren, wie Stile auf Seitenelemente angewendet werden sollen.
Bis vor Kurzem lag der Fokus von CSS nie wirklich auf Selektoren. Von Zeit zu Zeit aufgetaucht kleine Updates innerhalb der Selektorenspezifikation, aber es gab nie wirklich bahnbrechende Verbesserungen. Zum Glück in In letzter Zeit Den Selektoren wird immer mehr Aufmerksamkeit geschenkt, also werfen wir einen Blick darauf, wie man eine Auswahl trifft verschiedene Typen Elemente und Elemente in verschiedenen Zuständen.
CSS3 brachte neue Selektoren und eröffnete ein Ganzes neue Welt Möglichkeiten und Verbesserungen bestehender Praktiken. Hier besprechen wir sowohl alte als auch neue Selektoren und wie man sie am besten nutzt.
Typische Selektoren
Bevor wir uns eingehend mit einigen der komplexeren und in CSS3 angebotenen Selektoren befassen, werfen wir einen Blick auf einige der heute am häufigsten verfügbaren Selektoren. Zu diesen Selektoren gehören Typ-, Klassen- und Bezeichnerselektoren.
Wähler Typ Identifiziert ein Element anhand seines Typs, insbesondere anhand der Art und Weise, wie das Element in HTML deklariert wird. Wähler Klasse Identifiziert ein Element basierend auf dem Wert des Klassenattributs, das bei Bedarf erneut auf mehrere Elemente angewendet werden kann und dabei hilft, beliebte Stile zu teilen. Und endlich, Identifikator Definiert ein Element basierend auf dem Wert des ID-Attributs, das eindeutig ist und nur einmal auf einer Seite verwendet werden sollte.
H1 (...).Tagline (...) #intro (...)
Untergeordnete Selektoren
Untergeordnete Selektoren bieten eine Möglichkeit, ineinander verschachtelte Elemente auszuwählen und sie so zu Kindern ihres übergeordneten Elements zu machen. Diese Auswahl kann auf zwei verschiedene Arten erfolgen, mit einem untergeordneten Selektor oder einem direkten untergeordneten Selektor.
Nachkommenselektor
Der gebräuchlichste untergeordnete Selektor ist der Nachkommenselektor, der jedes Element abgleicht, das auf einen bestimmten Vorfahren folgt. Das untergeordnete Element muss im Dokumentbaum nicht unmittelbar nach dem Vorfahren stehen, wie bei einer Eltern-Kind-Beziehung, sondern kann sich an einer beliebigen Stelle innerhalb des Vorfahren befinden. Nachkommen-Selektoren werden durch Leerzeichen zwischen den einzelnen Elementen im Selektor erstellt, wodurch für jedes Element in der Liste eine neue Hierarchieebene entsteht.
Der Artikel-H2-Selektor ist ein Nachkommen-Selektor und wählt nur Elemente aus
, die sich innerhalb des Elements befinden . Bitte beachten Sie, egal wo das Element lebt während es sich innerhalb des Elements befindet , es wird immer ausgewählt. Darüber hinaus jedes Element außerhalb des Elements wird nicht ausgewählt.Nachfolgend finden Sie die Überschriften, aus denen die Zeilen 3 und 5 ausgewählt werden.
Artikel h2 (...)
...
Dieser Titel wird ausgewählt
Dieser Titel wird ausgewählt
Direkte Kinderauswahl
Manchmal gehen untergeordnete Selektoren zu weit und wählen mehr als gewünscht aus. Manchmal müssen nur die direkten untergeordneten Elemente eines übergeordneten Elements ausgewählt werden und nicht jede Instanz eines Elements, das tief in einem Vorfahren verschachtelt ist. In diesem Fall kann ein direkter untergeordneter Selektor verwendet werden, indem im Selektor ein Größer-als-Zeichen (>) zwischen dem übergeordneten und dem untergeordneten Element platziert wird.
Beispielsweise ist „article > p“ nur dann ein direkter untergeordneter Selektor, wenn die Elemente
Befindet sich direkt im Element . Jedes Element<р>außerhalb des Elements platziert oder in einem anderen Element als verschachtelt , wird nicht ausgewählt.
Unten ist der Absatz in Zeile 3 das einzige direkte untergeordnete Element seines übergeordneten Elements , deshalb wurde es ausgewählt.
Artikel > p (...)
Dieser Absatz wird ausgewählt
Verwandte Selektoren
Zu wissen, wie man untergeordnete Elemente auswählt, ist größtenteils nützlich und wird häufig verwendet. Möglicherweise müssen jedoch auch Geschwisterelemente ausgewählt werden, also Elemente, die einen gemeinsamen Vorfahren haben. Eine solche Auswahl kann mithilfe eines gemeinsamen Geschwisterselektors und benachbarter Selektoren erfolgen.
Generische Geschwisterauswahl
Mit der allgemeinen Geschwisterauswahl können Sie Elemente auswählen, die auf der Grundlage ihrer Geschwister ausgewählt werden sollen, d. h. derjenigen, die das gleiche gemeinsame übergeordnete Element haben. Sie werden durch die Verwendung des Tilde-Zeichens (~) zwischen zwei Elementen innerhalb eines Selektors erstellt. Das erste Element gibt an, dass das zweite Element ein gleichgeordnetes Element sein muss und beide das gleiche übergeordnete Element haben müssen.
Der h2~p-Selektor ist ein allgemeiner Geschwisterselektor, der nach Elementen sucht
Die nach irgendwelchen Elementen kommen
im selben Elternteil. Zum Element
Wurde ausgewählt, muss es nach jedem Element stehen
.
Die Absätze in den Zeilen 5 und 9 werden ausgewählt, weil sie nach einer Überschrift im Dokumentbaum stehen und dasselbe übergeordnete Element wie eine zugehörige Überschrift haben.
H2 ~ p(...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Angrenzende Selektoren
Manchmal ist es wünschenswert, etwas mehr Kontrolle zu haben, einschließlich der Möglichkeit, ein Geschwisterkind auszuwählen, das einem anderen Geschwisterkind direkt folgt. Ein benachbarter Selektor wählt nur Geschwisterelemente aus, die unmittelbar auf ein anderes Geschwisterelement folgen. Anstelle eines Tilde-Zeichens, wie es bei einem gemeinsamen Geschwisterselektor der Fall ist, verwendet ein Geschwisterselektor ein Pluszeichen (+) zwischen zwei Elementen im Selektor. Auch hier gibt das erste Element an, dass das zweite Element unmittelbar folgen und mit ihm in Beziehung stehen muss und dass beide Elemente dasselbe übergeordnete Element haben müssen.
Werfen wir einen Blick auf den benachbarten Selektor h2 + p. Es werden nur Elemente ausgewählt
Kommt unmittelbar nach den Elementen
. Beide müssen außerdem das gleiche übergeordnete Element haben.
Der Absatz in Zeile 5 wird ausgewählt, da er unmittelbar auf die entsprechende Überschrift folgt und sie denselben übergeordneten Absatz haben.
H2 + p(...)
...
Dieser Absatz wird ausgewählt
Beispiel für benachbarte Selektoren
Input ( display: none; ) label, ul ( border: 1px solid #cecfd5; border-radius: 6px; ) label ( color: #0087cc; Cursor: Zeiger; display: inline-block; Schriftgröße: 18px; padding: 5px 9px; Übergang: alle .15s easy; ) label:hover ( color: #ff7b29; ) input:checked + label ( box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); color: #9799a7 ; ) nav ( max-height: 0; Überlauf: versteckt; Übergang: alle .15s easy; ) input:checked ~ nav ( max-height: 500px; ) ul ( list-style: none; margin: 8px 0 0 0; padding: 0; width: 100px; ) li ( border-bottom: 1px solid #cecfd5; ) li:last-child ( border-bottom: 0; ) a ( color: #0087cc; display: block; padding: 6px 12px; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; )
Attributselektoren
Einige der zuvor besprochenen generischen Selektoren können auch als Attributselektoren definiert werden, bei denen ein Element basierend auf einem Klassen- oder ID-Wert ausgewählt wird. Diese Selektoren Klassenattribute und id sind weit verbreitet und ziemlich mächtig, aber das ist erst der Anfang. In den letzten Jahren sind weitere Attributselektoren entstanden, insbesondere mit CSS3, die große Fortschritte gemacht haben. Elemente können nun basierend darauf ausgewählt werden, ob ein Attribut vorhanden ist und welchen Wert es enthält.
Attributpräsenzselektor
Der erste Attributselektor identifiziert ein Element basierend darauf, ob das Attribut aktiviert ist oder nicht, unabhängig von seinem tatsächlichen Wert. Um ein Element basierend darauf auszuwählen, ob ein Attribut vorhanden ist oder nicht, geben Sie einfach den Attributnamen ein eckige Klammern() im Selektor. Nach jedem Typ- oder Klassenselektor können eckige Klammern stehen, abhängig vom gewünschten Grad an Spezifität.
A (...)
Attributselektor =
Um ein Element mit einem bestimmten und präzisen Wert zu identifizieren, kann derselbe Selektor wie zuvor verwendet werden, aber dieses Mal steht der gewünschte Wert in eckigen Klammern hinter dem Attributnamen. Innerhalb der eckigen Klammern sollte nach dem Gleichheitszeichen (=) ein Attributname stehen, wobei in den Anführungszeichen der gewünschte Attributwert steht.
A (...)
Attributselektor *=
Wenn wir versuchen, ein Element zu finden, das auf einem Teil eines Attributwerts basiert, aber keine exakte Übereinstimmung aufweist, kann das Sternchen (*) in den eckigen Klammern des Selektors verwendet werden. Das Sternchen muss unmittelbar nach dem Attributnamen und unmittelbar vor dem Gleichheitszeichen stehen. Das bedeutet, dass der folgende Wert nur im Attributwert erscheinen oder darin enthalten sein muss.
A (...)
Attributselektor ^=
Zusätzlich zur Auswahl eines Elements basierend auf dem Attributwert, der den angegebenen Text enthält, können Sie ein Element auch basierend darauf auswählen, wo der Attributwert beginnt. Die Verwendung des Zirkumflexzeichens (^) in Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen bedeutet, dass der Attributwert mit dem angegebenen Text beginnen muss.
A (...)
...
Attributselektor $=
Das Gegenteil des vorherigen Selektors ist ein Attributselektor, bei dem der Wert mit etwas Text endet. Anstelle des Zeichens ^ wird in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein Dollarzeichen ($) verwendet. Die Verwendung eines Dollarzeichens bedeutet, dass der Attributwert mit dem angegebenen Text enden muss.
A (...)
Attributselektor ~=
Manchmal können Attributwerte voneinander beabstandet sein, sodass nur eines der Wörter zum Erstellen einer Auswahl geeignet sein muss. In diesem Fall bedeutet die Verwendung des Tilde-Zeichens (~) in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen, dass der Attributwert durch Leerzeichen getrennt ist, von denen ein Wort genau mit dem angegebenen Wert übereinstimmt.
A (...)
Attributselektor |=
Wenn der Attributwert durch Bindestriche statt durch Leerzeichen getrennt wird, kann in den Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein vertikales Linienzeichen (|) verwendet werden. Eine vertikale Linie zeigt an, dass der Attributwert durch einen Bindestrich getrennt werden kann, Wörter jedoch mit dem angegebenen Wert beginnen müssen.
A (...)
Beispiel für Attributselektoren
Ul ( Listenstil: keine; Rand: 0; Polsterung: 0; ) a ( Hintergrundposition: 0 50 %; Hintergrundwiederholung: keine Wiederholung; Farbe: #0087cc; Polsterung links: 22 Pixel; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; ) a ( Hintergrundbild: url("images/pdf.png"); ) a ( Hintergrundbild: url("images/doc.png"); ) a ( Hintergrundbild: url("images/image.png"); ) a ( Hintergrundbild: url("images/audio.png"); ) a ( Hintergrundbild: url("images/video.png" ); )
Übersicht über Attributselektoren Beispiel Name Beschreibung
A Attributpräsenzselektor Wählt ein Element aus, wenn das angegebene Attribut vorhanden ist.
A Attributselektor = Wählt ein Element aus, wenn der Wert dieses Attributs genau mit dem angegebenen übereinstimmt.
A Attributselektor *= Wählt ein Element aus, wenn der Wert dieses Attributs mindestens eine Instanz des angegebenen Textes enthält.
A Attributselektor ^= Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text beginnt.
A Attributselektor $= Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text endet.
A Attributselektor ~= Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch Leerzeichen getrennt ist und genau mit einem einzelnen angegebenen Wort übereinstimmt.
A Attributselektor |= Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch einen Bindestrich getrennt ist und mit dem angegebenen Wort beginnt.
Pseudoklassen
Pseudoklassen ähneln regulären Klassen in HTML, werden jedoch nicht direkt im Markup angegeben, sondern dynamisch als Ergebnis von Benutzeraktionen oder der Dokumentstruktur aufgefüllt. Die häufigste Pseudoklasse, die Sie wahrscheinlich schon einmal gesehen haben, ist :hover. Beachten Sie, dass diese Pseudoklasse wie alle anderen Pseudoklassen mit einem Doppelpunkt (:) beginnt.
Pseudoklassen verknüpfen
Einige grundlegende Pseudoklassen umfassen zwei Pseudoklassen, die sich um Referenzen drehen. Dies sind die Pseudoklassen :link und :visited und sie bestimmen, ob ein Link besucht wurde oder nicht. Um einen Link zu formatieren, der noch nicht besucht wurde, kommt die Pseudoklasse :link ins Spiel, und die Pseudoklasse :visited stilisiert Links, die der Benutzer bereits besucht hat, basierend auf seinem Browserverlauf.
A:link (...) a:besucht (...)
Pseudoklassen für Benutzeraktionen
Basierend auf Benutzeraktionen können verschiedene Pseudoklassen dynamisch auf ein Element angewendet werden, darunter :hover, :active und :focus. Die Pseudoklasse :hover wird auf ein Element angewendet, wenn der Benutzer den Cursor über das Element bewegt, was am häufigsten bei Links verwendet wird. Die Pseudoklasse:active wird auf ein Element angewendet, wenn der Benutzer das Element aktiviert, beispielsweise indem er darauf klickt. Schließlich wird die Pseudoklasse:focus auf ein Element angewendet, wenn der Benutzer das Element zum Fokus der Seite gemacht hat, häufig durch Verwendung der Tab-Taste beim Wechseln von einem Element zum anderen.
A:hover (...) a:aktiv (...) a:fokus (...)
Schnittstellenstatus-Pseudoklassen
Wie Links gibt es auch einige Pseudoklassen, die mit dem Status von UI-Elementen verknüpft sind, insbesondere innerhalb von Formularen. Zu diesen Pseudoklassen gehören :enabled, :disabled, :checked und :indeterminate.
Die Pseudoklasse „:enabled“ wählt Felder aus, die aktiviert und zur Verwendung verfügbar sind, und die Pseudoklasse „:disabled“ wählt Felder aus, an die ein „disabled“-Attribut gebunden ist. Viele Browser blenden solche deaktivierten Felder standardmäßig aus, um Benutzer darüber zu informieren, dass das Feld nicht für die Interaktion verfügbar ist. Ihr Stil kann jedoch über die Pseudoklasse :disabled nach Wunsch angepasst werden.
Eingabe:aktiviert (...) Eingabe:deaktiviert (...)
Die letzten beiden Schnittstellenstatuselemente, die Pseudoklassen :checked und :indeterminate, drehen sich um Kontrollkästchen und Optionsfelder. Die Pseudoklasse :checked wählt Kontrollkästchen oder Optionsfelder aus, von denen Sie erwarten, dass sie aktiviert sind. Wenn kein Kontrollkästchen oder Optionsfeld aktiviert oder ausgewählt ist, befindet es sich in einem unbestimmten Zustand, für den die Pseudoklasse :indeterminate verwendet werden kann, um auf ähnliche Elemente abzuzielen.
Eingabe:geprüft (...) Eingabe:unbestimmt (...)
Pseudoklassen von Struktur und Position
Mehrere Pseudoklassen beziehen sich auf Struktur und Position basierend darauf, wo Elemente im Dokumentbaum gefunden werden. Diese Pseudoklassen gibt es in verschiedenen Formen und Größen, von denen jede ihre eigene, einzigartige Funktionalität bietet. Einige Pseudoklassen gibt es schon länger als andere, aber CSS3 brachte eine ganze Reihe neuer Pseudoklassen mit sich, die die bestehenden ergänzen.
:erstes-Kind, :letztes-Kind und :nur-Kind
Die ersten strukturellen Pseudoklassen, auf die Sie wahrscheinlich stoßen werden, sind :first-child , :last-child und :only-child . Die Pseudoklasse :first-child wählt ein Element aus, wenn es das erste untergeordnete Element im übergeordneten Element ist, während die Pseudoklasse :last-child das Element auswählt, wenn es das letzte untergeordnete Element im übergeordneten Element ist. Diese Pseudoklassen eignen sich ideal zum Auswählen des ersten oder letzten Elements in einer Liste usw. Darüber hinaus wählt :only-child ein Element aus, wenn es das einzige Element im übergeordneten Element ist. Alternativ kann die :only-child-Pseudoklasse als :first-child:last-child geschrieben werden, allerdings hat :only-child eine geringere Spezifität.
Hier gibt der Selektor li:first-child das erste Listenelement an, während li:last-child das letzte Listenelement angibt und somit die Zeilen 2 und 10 auswählt. Der Selektor div:only-child sucht nach
, das das einzige untergeordnete Element des übergeordneten Elements ist, ohne weitere gleichgeordnete Elemente. In diesem Fall wird Zeile 4 ausgewählt, da dies die einzige ist in diesem Listenelement.Li:erstes-Kind (...) li:letztes-Kind (...) div:nur-Kind (...)
:first-of-type, :last-of-type und :only-of-type
Das Finden des ersten, letzten und einzigen Kindes eines Elternteils ist sehr nützlich und oft auch alles, was erforderlich ist. Manchmal möchten Sie jedoch nur das erste, letzte oder einzige untergeordnete Element eines bestimmten Elementtyps auswählen. Sie möchten beispielsweise nur den ersten oder letzten Absatz eines Artikels oder möglicherweise nur ein Bild innerhalb eines Artikels auswählen. Glücklicherweise helfen dabei die Pseudoklassen :first-of-type, :last-of-type und :only-of-type.
Die Pseudoklasse „:first-of-type“ wählt das erste Element ihres Typs innerhalb der übergeordneten Klasse aus, während die Pseudoklasse „:last-of-type“ das letzte Element dieses Typs innerhalb der übergeordneten Klasse auswählt. Die Pseudoklasse :only-of-type wählt ein Element aus, wenn es das einzige seines Typs im übergeordneten Element ist.
Im folgenden Beispiel wählen die Pseudoklassen p:first-of-type und p:last-of-type jeweils den ersten und letzten Absatz im Artikel aus, unabhängig davon, ob es sich tatsächlich um die ersten oder letzten untergeordneten Absätze handelt der Artikel. Die Zeilen 3 und 6 werden von diesen Selektoren ausgewählt. Der img:only-of-type-Selektor gibt das Bild in Zeile 5 als einziges Bild an, das im Artikel erscheint.
P:first-of-type (...) p:last-of-type (...) img:only-of-type (...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
...
Schließlich gibt es mehrere Struktur- und Positions-Pseudoklassen, die Elemente basierend auf Zahlen oder algebraischen Ausdrücken auswählen. Zu diesen Pseudoklassen gehören :nth-child(n) , :nth-last-child(n) , :nth-of-type(n) und :nth-last-of-type(n) . Alle diese eindeutigen Pseudoklassen beginnen mit dem n-ten und nehmen eine Zahl oder einen Ausdruck in Klammern an, der durch das Symbol n bezeichnet wird.
Die Zahl oder der Ausdruck in Klammern gibt genau an, welches Element bzw. welche Elemente ausgewählt werden sollen. Durch die Verwendung einer bestimmten Zahl wird das einzelne Element vom Anfang oder Ende des Dokumentbaums berechnet und dann ausgewählt. Durch die Verwendung eines Ausdrucks wird der Satz von Elementen vom Anfang oder Ende des Dokumentbaums ausgewertet und eine Gruppe oder Wiederholung davon ausgewählt.
Verwendung von Zahlen und Ausdrücken in Pseudoklassen
Wie bereits erwähnt, wird bei Verwendung einer bestimmten Zahl in einer Pseudoklasse vom Anfang oder Ende des Dokumentbaums aus gerechnet und ein passendes Element ausgewählt. Beispielsweise wählt der Selektor li:nth-child(4) das vierte Element in der Liste aus. Die Zählung beginnt beim ersten Listenelement und erhöht sich für jedes Listenelement um eins, bis schließlich das vierte Element gefunden und ausgewählt wird. Bei der Angabe einer bestimmten Zahl muss diese positiv sein.
Ausdrücke für Pseudoklassen liegen im Format an, an+b, an-b, n+b, -n+b und -an+b vor. Der gleiche Ausdruck kann übersetzt und gelesen werden als (a×n)±b. Die Variable a gibt den Faktor an, mit dem die Elemente berechnet werden, während die Variable b angibt, wo die Zählung beginnt oder stattfindet.
Beispielsweise gibt der Selektor li:nth-child(3n) jedes dritte Element eines Listenelements an. Die Verwendung dieses Ausdrucks entspricht 3x0, 3x1, 3x2 usw. Wie Sie sehen können, wählen die Ergebnisse dieses Ausdrucks das dritte, sechste und jedes Element aus, das ein Vielfaches von drei ist.
Darüber hinaus können die Schlüsselwörter „odd“ und „even“ als Werte verwendet werden. Wie zu erwarten, wählen sie ungerade bzw. gerade Elemente aus. Wenn die Schlüsselwörter nicht attraktiv sind, wählt der Ausdruck 2n+1 alle ungeraden Elemente aus, und der Ausdruck 2n wählt alle geraden Elemente aus.
Der Selektor li:nth-child(4n+7) definiert jedes vierte Element in der Liste, beginnend mit dem siebten Element. Auch hier ist die Verwendung dieses Ausdrucks äquivalent zu (4x0)+7, (4x1)+7, (4x2)+7 usw. Die Ergebnisse dieses Ausdrucks wählen das siebte, elfte, fünfzehnte und jedes vierte Element aus.
Bei Verwendung von n ohne führende Zahl wird a als 1 ausgewertet. Der Selektor li:nth-child(n+5) wählt jedes Listenelement beginnend mit dem fünften aus, wobei die ersten vier Listenelemente nicht ausgewählt werden. Im Ausdruck wird dies als (1×0)+5, (1×1)+5, (1×2)+5 usw. analysiert.
Mit negativen Zahlen können komplexere Dinge erstellt werden. Beispielsweise zählt der Selektor li:nth-child(6n-4) jedes sechste Listenelement, beginnend bei -4, und wählt das zweite, achte, vierzehnte Listenelement usw. aus. Derselbe Selektor li:nth-child(6n-4) kann auch als li:nth-child(6n+2) geschrieben werden, ohne die negative b-Variable zu verwenden.
Auf eine negative Variable oder ein negatives Argument n muss eine positive Variable b folgen. Wenn dem Argument n eine negative Variable a vorangestellt ist, bestimmt die Variable b, wie hoch die Anzahl erreicht wird. Beispielsweise wählt der Selektor li:nth-child(-3n+12) jedes dritte Listenelement in den ersten zwölf Elementen aus. Der Selektor li:nth-child(-n+9) wählt die ersten neun Elemente in der Liste aus, da die Variable a ohne deklarierte Zahl standardmäßig den Wert -1 hat.
:nth-child(n) und :nth-last-child(n)
Mit einem allgemeinen Verständnis der Funktionsweise von Zahlen und Ausdrücken in Pseudoklassen werfen wir einen Blick auf nützliche Pseudoklassen, in denen diese Zahlen und Ausdrücke verwendet werden können. Die ersten davon sind :nth-child(n) und :nth-last -child(n) . Diese Pseudoklassen funktionieren ähnlich wie :first-child und :last-child , indem sie alle Elemente im übergeordneten Element untersuchen und zählen und nur ein bestimmtes Element auswählen. :nth-child(n) funktioniert vom Anfang des Dokumentbaums und :nth-last-child(n) funktioniert vom Ende des Dokumentbaums.
Werfen wir mithilfe der Pseudoklasse :nth-child(n) einen Blick auf den Selektor li:nth-child(3n). Es definiert jedes dritte Listenelement, daher werden die Zeilen 4 und 7 ausgewählt.
Li:nth-child(3n) (…)
Die Verwendung eines anderen Ausdrucks in der Pseudoklasse :nth-child(n) führt zu einer anderen Auswahl. Der Selektor li:nth-child(2n+3) definiert beispielsweise jedes zweite Element in der Liste, beginnend mit dem dritten. Als Ergebnis werden die Elemente in den Zeilen 4 und 6 ausgewählt.
Li:nth-child(2n+3) (...)
Wenn Sie den Ausdruck erneut ändern, diesmal mit einem negativen Wert, erhalten Sie eine neue Auswahl. Hier gibt der Selektor li:nth-child(-n+4) die ersten vier Elemente der Liste an, während die übrigen Elemente nicht ausgewählt werden, sodass die Zeilen 1 bis 4 ausgewählt werden.
Li:nth-child(-n+4) (...)
Das Hinzufügen einer negativen Zahl vor n ändert die Auswahl erneut. Hier definiert der Selektor li:nth-child(-2n+5) jedes zweite Listenelement aus den ersten fünf Elementen, sodass die Elemente in den Zeilen 2, 4 und 6 ausgewählt werden.
Li:nth-child(-2n+5) (...)
Durch Ändern der Pseudoklasse :nth-child(n) in :nth-last-child(n) wird die Zählrichtung geändert, sodass die Zählung am Ende des Dokumentbaums beginnt. Der Selektor li:nth-last-child(3n+2) gibt beispielsweise jedes dritte Listenelement an, beginnend vom zweiten bis zum letzten, und zwar in Richtung des Anfangs der Liste. Hier werden die Listenelemente in den Zeilen 3 und 6 ausgewählt.
Li:nth-last-child(3n+2) (...)
:nth-of-type(n) und :nth-last-of-type(n)
Die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) sind :nth-child(n) und :nth-last-child(n) sehr ähnlich, aber anstelle von Zählen jedes Elements Innerhalb des übergeordneten Elements zählen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) nur Elemente ihres eigenen Typs. Wenn Sie beispielsweise Absätze in einem Artikel zählen, überspringen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) alle Überschriften
oder verschiedene Elemente, die keine Absätze sind, während :nth-child(n) und :nth-last-child(n) jedes Element zählen, unabhängig von seinem Typ, und nur diejenigen auswählen, die mit dem Element im angegebenen Selektor übereinstimmen. Darüber hinaus sind alle möglichen Ausdrücke, die in :nth-child(n) und :nth-last-child(n) verwendet werden, auch im Pseudo :nth-of-type(n) und :nth-last-of-type verfügbar -Klassen (n) .Durch die Verwendung der :nth-of-type(n)-Pseudoklasse im p:nth-of-type(3n)-Selektor können wir jeden dritten Absatz im übergeordneten Element definieren, unabhängig von anderen verwandten Elementen innerhalb des übergeordneten Elements. Hier werden die Absätze der Zeilen 5 und 9 ausgewählt.
P:nth-of-type(3n) (...)
...
Dieser Absatz wird ausgewählt
...
Dieser Absatz wird ausgewählt
Wie bei den Pseudoklassen :nth-child(n) und :nth-last-child(n) besteht der Hauptunterschied zwischen :nth-of-type(n) und :nth-last-of-type(n) darin dass :nth-of-type(n) Elemente vom Anfang des Dokumentbaums zählt und :nth-last-of-type(n) Elemente vom Ende des Dokumentbaums zählt.
Mit der Pseudoklasse :nth-last-of-type(n) können wir einen Selektor p:nth-last-of-type(2n+1) schreiben, der jeden zweiten Absatz ab dem Ende des übergeordneten Elements angibt, beginnend mit der letzte Absatz. Hier werden die Absätze der Zeilen 4, 7 und 9 ausgewählt.
P:nth-last-of-type(2n+1) (...)
...
Dieser Absatz wird ausgewählt
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Pseudoklasse:Ziel
Die Pseudoklasse :target wird zum Formatieren von Elementen verwendet, wenn der Wert des id-Attributs mit dem URI-Fragmentzeiger übereinstimmt. Dieser Teil des URI wird anhand des Hash-Zeichens (#) und dessen, was unmittelbar darauf folgt, erkannt. Die Adresse http://example.com/index.html#hello enthält einen Hallo-Zeiger. Wenn es beispielsweise mit dem Wert des id-Attributs eines Elements auf der Seite übereinstimmt,
Pseudoklasse:leer
Mit der Pseudoklasse :empty können Sie Elemente auswählen, die keine untergeordneten Elemente oder Text enthalten. Kommentare, Verarbeitungsanweisungen und leerer Text gelten nicht als untergeordnete Elemente und werden nicht als solche behandelt.
Die Verwendung der Pseudoklasse div:empty bestimmt
Keine Kinder oder Text. Unten ausgewählt in den Zeilen 2 und 3, da diese völlig leer sind. Auch wenn der zweite Enthält einen Kommentar, wird er nicht als untergeordnetes Element betrachtet und daher verlassen leer. Erste enthält Text, das dritte enthält ein einzelnes Leerzeichen und das letzte enthält ein untergeordnetes Element Daher sind sie alle ausgeschlossen und nicht ausgewählt.Div:leer (...)
Hallo
Pseudoklasse:nicht
Die Pseudoklasse :not(x) nimmt ein Argument und filtert die getroffene Auswahl. Der p:not(.intro)-Selektor verwendet die :not-Pseudoklasse, um jeden Absatz ohne eine Intro-Klasse zu definieren. Das Absatzelement wird am Anfang des Selektors definiert, gefolgt von der Pseudoklasse :not(x). In den Klammern befindet sich ein Negationsselektor, in diesem Fall die Intro-Klasse.
Unten verwenden sowohl die Selektoren div:not(.awesome) als auch :not(div) die Pseudoklasse :not(x). Der Selektor div:not(.awesome) definiert alle
ohne class awesome , während der :not(div)-Selektor ein Element angibt, das es nicht ist . Als Ergebnis wird es ausgewählt in Zeile 1 sowie zwei Abschnitte in den Zeilen 3 und 4. Das einzige nicht ausgewählte Element ist mit der awesome-Klasse, da sie über zwei Pseudoklassen hinausgeht.Div:not(.awesome) (...) :not(div) (...)
Dieses Div wird ausgewählt
...
Dieser Abschnitt wird ausgewählt. Dieser Abschnitt wird ausgewähltBeispiel mit Pseudoklassen
Nummer
Spieler
Position
Höhe
Gewicht
8
Marco Belinelli
G
6-5
195
5
Carlos Boozer
F
6-9
266
...
Tabelle ( border-collapse: separat; border-spacing: 0; width: 100 %; ) th, td ( padding: 6px 15px; ) th ( background: #42444e; color: #fff; text-align: left; ) tr :first-child th:first-child ( border-top-left-radius: 6px; ) tr:first-child th:last-child ( border-top-right-radius: 6px; ) td ( border-right: 1px solid #c6c9cc; border-bottom: 1px solid #c6c9cc; ) td:first-child ( border-left: 1px solid #c6c9cc; ) tr:nth-child(even) td ( Hintergrund: #eaeaed; ) tr:last- child td:first-child ( border-bottom-left-radius: 6px; ) tr:last-child td:last-child ( border-bottom-right-radius: 6px; )
Übersicht über Pseudoklassen Beispiel Name Beschreibung
eine Verbindung Link-Pseudoklasse Wählt Links aus, die vom Benutzer nicht angezeigt wurden.
a:besucht Link-Pseudoklasse Wählt Links aus, die vom Benutzer besucht wurden.
a:schweben Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer mit der Maus darüber fährt.
a:aktiv Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer es aktiviert.
ein Fokus Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer es zu einem Aufmerksamkeitspunkt gemacht hat.
Eingabe: aktiviert Staatliche Pseudoklasse Wählt ein Element in einem zugänglichen Zustand aus.
Eingabe: deaktiviert Staatliche Pseudoklasse Wählt über das Attribut „disabled“ ein Element in einem deaktivierten Zustand aus.
Eingabe: überprüft Staatliche Pseudoklasse Wählt ein aktiviertes Kontrollkästchen oder Optionsfeld aus.
Eingabe: unbestimmt Staatliche Pseudoklasse Wählt ein Kontrollkästchen oder Optionsfeld aus, das nicht aktiviert oder deaktiviert war, sodass es in einem undefinierten Zustand verbleibt.
li:erstes Kind Strukturelle Pseudoklasse Wählt das erste Element im übergeordneten Element aus.
li:last-child Strukturelle Pseudoklasse Wählt das letzte Element im übergeordneten Element aus.
div:only-child Strukturelle Pseudoklasse Wählt ein einzelnes Element im übergeordneten Element aus.
p:erster Typ Strukturelle Pseudoklasse Wählt das erste Element seines Typs im übergeordneten Element aus.
p:last-of-type Strukturelle Pseudoklasse Wählt das letzte Element seines Typs im übergeordneten Element aus.
img:only-of-type Strukturelle Pseudoklasse Wählt das einzige Element seines Typs im übergeordneten Element aus.
li:nth-child(2n+3) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Anfang des Dokumentbaums an.
li:nth-last-child(3n+2) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Ende des Dokumentbaums an.
p:nth-of-type(3n) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Anfang des Dokumentbaums an.
p:nth-last-of-type(2n+1) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Ende des Dokumentbaums an.
Abschnitt:Ziel Pseudoklasse:Ziel Wählt ein Element aus, dessen ID-Attributwert mit der URI-Fragment-ID übereinstimmt.
div:leer Pseudoklasse:leer Wählt ein Element aus, das keine untergeordneten Elemente oder Text enthält.
div:not(.awesome) Pseudoklasse:nicht Wählt ein Element aus, das nicht durch das deklarierte Argument dargestellt wird.
Pseudoelemente
Pseudoelemente sind dynamische Elemente, die im Dokumentbaum nicht vorhanden sind. Wenn sie mit Selektoren verwendet werden, erzeugen diese Pseudoelemente eindeutige Teile der Seite, die gestaltet werden können. Ein wichtiger Punkt ist, dass in einem Selektor jeweils nur ein Pseudoelement verwendet werden kann.
Text-Pseudoelemente
Die ersten implementierten Pseudoelemente waren die Pseudoelemente :first-letter und :first-line text. Das Pseudoelement :first-letter gibt den ersten Textbuchstaben innerhalb eines Elements an, während :first-line die erste Textzeile innerhalb eines Elements angibt.
In der Demo unten ist der erste Buchstabe eines Absatzes mit der Klasse alpha auf eine große Schriftgröße und -farbe eingestellt, ebenso wie die erste Zeile eines Absatzes mit der Klasse bravo . Diese Auswahl erfolgt mithilfe der Pseudoklassen :first-letter bzw. :first-line text.
Alpha:first-letter, .bravo:first-line ( Farbe: #ff7b29; Schriftgröße: 18px; )
Lorem ipsum dolor...
Ganzzahl eget enim...
Demonstration von Textpseudoelementen
Durch Pseudoelemente generierter Inhalt
Die Pseudoelemente :before und :after erstellen neue Inline-Pseudoelemente nur innerhalb des ausgewählten Elements. Am häufigsten werden diese Pseudoelemente in Kombination mit der Content-Eigenschaft verwendet, um der Seite geringfügige Informationen hinzuzufügen. Dies ist jedoch nicht immer der Fall. Durch die zusätzliche Verwendung dieser Pseudoelemente können Benutzeroberflächenkomponenten zu einer Seite hinzugefügt werden, ohne dass das Dokument mit nicht-semantischen Elementen überladen werden muss.
Das Pseudoelement :before erstellt ein Pseudoelement vor oder vor dem ausgewählten Element, während :after ein Pseudoelement nach oder hinter dem ausgewählten Element erstellt. Diese Pseudoelemente erscheinen innerhalb des ausgewählten Elements verschachtelt und nicht außerhalb. Im Folgenden wird das Pseudoelement :after verwendet, um den href-Attributwert von Links in Klammern nach dem Link selbst anzuzeigen. Diese Informationen sind nützlich, aber letztendlich unterstützt nicht jeder Browser diese Pseudoelemente.
A:after ( Farbe: #9799a7; Inhalt: " (" attr(href) ")"; Schriftgröße: 11px; )
Suchen Sie im Internet Erfahren Sie, wie Sie eine Website erstellen
Demonstration von durch Inhalte generierten Pseudoelementen
Pseudoelement::selection
Das Pseudoelement ::selection definiert den vom Benutzer ausgewählten Teil des Dokuments. Die Auswahl kann dann gestylt werden, allerdings nur mit den Eigenschaften color , background , background-color und text-shadow. Es ist zu beachten, dass die Eigenschaft „Hintergrundbild“ ignoriert wird. Allerdings kann die Abkürzungseigenschaft „Hintergrund“ zum Hinzufügen von Farbe verwendet werden, alle Bilder werden jedoch ignoriert.
Doppelpunkt (:) und Doppelpunkt (::)
Das Pseudoelement ::selection wurde CSS3 hinzugefügt, um Pseudoklassen von Pseudoelementen zu trennen, indem der Doppelpunkt verwendet wurde, der Pseudoelementen hinzugefügt wurde. Glücklicherweise unterstützen die meisten Browser sowohl einzelne als auch doppelte Doppelpunktwerte für Pseudoelemente, aber das ::selection-Pseudoelement muss immer mit einem Doppelpunkt beginnen.
Wenn Sie in der Demo unten einen beliebigen Text auswählen, wird der Hintergrund dank des Pseudoelements ::selection orange. Schauen Sie sich auch ::-moz-selection an. Das Mozilla-Präfix wurde hinzugefügt, um eine bessere Unterstützung für alle Browser zu gewährleisten.
::-moz-selection (Hintergrund: #ff7b29;) ::selection (Hintergrund: #ff7b29;)
Demonstration von Pseudoelementen
Pfeil (Hintergrund: #2db34a; Farbe: #fff; Anzeige: Inline-Block; Höhe: 30 Pixel; Zeilenhöhe: 30 Pixel; Polsterung: 0 12 Pixel; Position: relativ; Textdekoration: keine; ) .arrow:before, . Pfeil: nach ( Inhalt: ""; Höhe: 0; Position: absolut; Breite: 0; ) .pfeil: vor ( Rand unten: 15 Pixel fest #2db34a; Rand links: 15 Pixel fest transparent; Rand oben: 15 Pixel fest #2db34a; links: -15px; ) .arrow:after ( Rand unten: 15 Pixel durchgehend transparent; Rand links: 15 Pixel durchgehend #2db34a; Rand oben: 15 Pixel durchgehend transparent; rechts: -15px; ) .arrow:hover ( Hintergrund: #ff7b29; ) .arrow:hover:before ( border-bottom: 15px solid #ff7b29; border-top: 15px solid #ff7b29; ) .arrow:hover:after ( border-left: 15px solid #ff7b29; )
Unterstützung für die Browserauswahl
Diese Selektoren bieten zwar unterschiedliche Funktionen und die Möglichkeit, einige wirklich erstaunliche Dinge damit zu tun mit CSS, leiden sie manchmal unter einer schlechten Browserunterstützung. Bevor Sie etwas zu Kritisches tun, überprüfen Sie die Selektoren, die Sie in den gängigsten Browsern verwenden möchten, und entscheiden Sie dann, ob sie für Sie geeignet sind oder nicht.
CSS3.info bietet ein CSS3-Selektortesttool, das Sie darüber informiert, welche Selektoren vom Browser unterstützt werden. Es ist auch eine gute Idee, direkt die Unterstützung Ihres Browsers zu überprüfen.
Auf Smashing Magazine
Lesen Sie auch
während es sich innerhalb des Elements befindet , es wird immer ausgewählt. Darüber hinaus jedes Element außerhalb des Elements wird nicht ausgewählt.Nachfolgend finden Sie die Überschriften, aus denen die Zeilen 3 und 5 ausgewählt werden.
Artikel h2 (...)
...
Dieser Titel wird ausgewählt
Dieser Titel wird ausgewählt
Direkte Kinderauswahl
Manchmal gehen untergeordnete Selektoren zu weit und wählen mehr als gewünscht aus. Manchmal müssen nur die direkten untergeordneten Elemente eines übergeordneten Elements ausgewählt werden und nicht jede Instanz eines Elements, das tief in einem Vorfahren verschachtelt ist. In diesem Fall kann ein direkter untergeordneter Selektor verwendet werden, indem im Selektor ein Größer-als-Zeichen (>) zwischen dem übergeordneten und dem untergeordneten Element platziert wird.
Beispielsweise ist „article > p“ nur dann ein direkter untergeordneter Selektor, wenn die Elemente
Befindet sich direkt im Element . Jedes Element<р>außerhalb des Elements platziert oder in einem anderen Element als verschachtelt , wird nicht ausgewählt.
Unten ist der Absatz in Zeile 3 das einzige direkte untergeordnete Element seines übergeordneten Elements , deshalb wurde es ausgewählt.
Artikel > p (...)
Dieser Absatz wird ausgewählt
Verwandte Selektoren
Zu wissen, wie man untergeordnete Elemente auswählt, ist größtenteils nützlich und wird häufig verwendet. Möglicherweise müssen jedoch auch Geschwisterelemente ausgewählt werden, also Elemente, die einen gemeinsamen Vorfahren haben. Eine solche Auswahl kann mithilfe eines gemeinsamen Geschwisterselektors und benachbarter Selektoren erfolgen.
Generische Geschwisterauswahl
Mit der allgemeinen Geschwisterauswahl können Sie Elemente auswählen, die auf der Grundlage ihrer Geschwister ausgewählt werden sollen, d. h. derjenigen, die das gleiche gemeinsame übergeordnete Element haben. Sie werden durch die Verwendung des Tilde-Zeichens (~) zwischen zwei Elementen innerhalb eines Selektors erstellt. Das erste Element gibt an, dass das zweite Element ein gleichgeordnetes Element sein muss und beide das gleiche übergeordnete Element haben müssen.
Der h2~p-Selektor ist ein allgemeiner Geschwisterselektor, der nach Elementen sucht
Die nach irgendwelchen Elementen kommen
im selben Elternteil. Zum Element
Wurde ausgewählt, muss es nach jedem Element stehen
.
Die Absätze in den Zeilen 5 und 9 werden ausgewählt, weil sie nach einer Überschrift im Dokumentbaum stehen und dasselbe übergeordnete Element wie eine zugehörige Überschrift haben.
H2 ~ p(...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Angrenzende Selektoren
Manchmal ist es wünschenswert, etwas mehr Kontrolle zu haben, einschließlich der Möglichkeit, ein Geschwisterkind auszuwählen, das einem anderen Geschwisterkind direkt folgt. Ein benachbarter Selektor wählt nur Geschwisterelemente aus, die unmittelbar auf ein anderes Geschwisterelement folgen. Anstelle eines Tilde-Zeichens, wie es bei einem gemeinsamen Geschwisterselektor der Fall ist, verwendet ein Geschwisterselektor ein Pluszeichen (+) zwischen zwei Elementen im Selektor. Auch hier gibt das erste Element an, dass das zweite Element unmittelbar folgen und mit ihm in Beziehung stehen muss und dass beide Elemente dasselbe übergeordnete Element haben müssen.
Werfen wir einen Blick auf den benachbarten Selektor h2 + p. Es werden nur Elemente ausgewählt
Kommt unmittelbar nach den Elementen
. Beide müssen außerdem das gleiche übergeordnete Element haben.
Der Absatz in Zeile 5 wird ausgewählt, da er unmittelbar auf die entsprechende Überschrift folgt und sie denselben übergeordneten Absatz haben.
H2 + p(...)
...
Dieser Absatz wird ausgewählt
Beispiel für benachbarte Selektoren
Input ( display: none; ) label, ul ( border: 1px solid #cecfd5; border-radius: 6px; ) label ( color: #0087cc; Cursor: Zeiger; display: inline-block; Schriftgröße: 18px; padding: 5px 9px; Übergang: alle .15s easy; ) label:hover ( color: #ff7b29; ) input:checked + label ( box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); color: #9799a7 ; ) nav ( max-height: 0; Überlauf: versteckt; Übergang: alle .15s easy; ) input:checked ~ nav ( max-height: 500px; ) ul ( list-style: none; margin: 8px 0 0 0; padding: 0; width: 100px; ) li ( border-bottom: 1px solid #cecfd5; ) li:last-child ( border-bottom: 0; ) a ( color: #0087cc; display: block; padding: 6px 12px; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; )
Attributselektoren
Einige der zuvor besprochenen generischen Selektoren können auch als Attributselektoren definiert werden, bei denen ein Element basierend auf einem Klassen- oder ID-Wert ausgewählt wird. Diese Selektoren Klassenattribute und id sind weit verbreitet und ziemlich mächtig, aber das ist erst der Anfang. In den letzten Jahren sind weitere Attributselektoren entstanden, insbesondere mit CSS3, die große Fortschritte gemacht haben. Elemente können nun basierend darauf ausgewählt werden, ob ein Attribut vorhanden ist und welchen Wert es enthält.
Attributpräsenzselektor
Der erste Attributselektor identifiziert ein Element basierend darauf, ob das Attribut aktiviert ist oder nicht, unabhängig von seinem tatsächlichen Wert. Um ein Element basierend darauf auszuwählen, ob ein Attribut vorhanden ist oder nicht, geben Sie einfach den Attributnamen ein eckige Klammern() im Selektor. Nach jedem Typ- oder Klassenselektor können eckige Klammern stehen, abhängig vom gewünschten Grad an Spezifität.
A (...)
Attributselektor =
Um ein Element mit einem bestimmten und präzisen Wert zu identifizieren, kann derselbe Selektor wie zuvor verwendet werden, aber dieses Mal steht der gewünschte Wert in eckigen Klammern hinter dem Attributnamen. Innerhalb der eckigen Klammern sollte nach dem Gleichheitszeichen (=) ein Attributname stehen, wobei in den Anführungszeichen der gewünschte Attributwert steht.
A (...)
Attributselektor *=
Wenn wir versuchen, ein Element zu finden, das auf einem Teil eines Attributwerts basiert, aber keine exakte Übereinstimmung aufweist, kann das Sternchen (*) in den eckigen Klammern des Selektors verwendet werden. Das Sternchen muss unmittelbar nach dem Attributnamen und unmittelbar vor dem Gleichheitszeichen stehen. Das bedeutet, dass der folgende Wert nur im Attributwert erscheinen oder darin enthalten sein muss.
A (...)
Attributselektor ^=
Zusätzlich zur Auswahl eines Elements basierend auf dem Attributwert, der den angegebenen Text enthält, können Sie ein Element auch basierend darauf auswählen, wo der Attributwert beginnt. Die Verwendung des Zirkumflexzeichens (^) in Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen bedeutet, dass der Attributwert mit dem angegebenen Text beginnen muss.
A (...)
...
Attributselektor $=
Das Gegenteil des vorherigen Selektors ist ein Attributselektor, bei dem der Wert mit etwas Text endet. Anstelle des Zeichens ^ wird in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein Dollarzeichen ($) verwendet. Die Verwendung eines Dollarzeichens bedeutet, dass der Attributwert mit dem angegebenen Text enden muss.
A (...)
Attributselektor ~=
Manchmal können Attributwerte voneinander beabstandet sein, sodass nur eines der Wörter zum Erstellen einer Auswahl geeignet sein muss. In diesem Fall bedeutet die Verwendung des Tilde-Zeichens (~) in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen, dass der Attributwert durch Leerzeichen getrennt ist, von denen ein Wort genau mit dem angegebenen Wert übereinstimmt.
A (...)
Attributselektor |=
Wenn der Attributwert durch Bindestriche statt durch Leerzeichen getrennt wird, kann in den Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein vertikales Linienzeichen (|) verwendet werden. Eine vertikale Linie zeigt an, dass der Attributwert durch einen Bindestrich getrennt werden kann, Wörter jedoch mit dem angegebenen Wert beginnen müssen.
A (...)
Beispiel für Attributselektoren
Ul ( Listenstil: keine; Rand: 0; Polsterung: 0; ) a ( Hintergrundposition: 0 50 %; Hintergrundwiederholung: keine Wiederholung; Farbe: #0087cc; Polsterung links: 22 Pixel; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; ) a ( Hintergrundbild: url("images/pdf.png"); ) a ( Hintergrundbild: url("images/doc.png"); ) a ( Hintergrundbild: url("images/image.png"); ) a ( Hintergrundbild: url("images/audio.png"); ) a ( Hintergrundbild: url("images/video.png" ); )
Übersicht über Attributselektoren Beispiel Name Beschreibung
A Attributpräsenzselektor Wählt ein Element aus, wenn das angegebene Attribut vorhanden ist.
A Attributselektor = Wählt ein Element aus, wenn der Wert dieses Attributs genau mit dem angegebenen übereinstimmt.
A Attributselektor *= Wählt ein Element aus, wenn der Wert dieses Attributs mindestens eine Instanz des angegebenen Textes enthält.
A Attributselektor ^= Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text beginnt.
A Attributselektor $= Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text endet.
A Attributselektor ~= Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch Leerzeichen getrennt ist und genau mit einem einzelnen angegebenen Wort übereinstimmt.
A Attributselektor |= Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch einen Bindestrich getrennt ist und mit dem angegebenen Wort beginnt.
Pseudoklassen
Pseudoklassen ähneln regulären Klassen in HTML, werden jedoch nicht direkt im Markup angegeben, sondern dynamisch als Ergebnis von Benutzeraktionen oder der Dokumentstruktur aufgefüllt. Die häufigste Pseudoklasse, die Sie wahrscheinlich schon einmal gesehen haben, ist :hover. Beachten Sie, dass diese Pseudoklasse wie alle anderen Pseudoklassen mit einem Doppelpunkt (:) beginnt.
Pseudoklassen verknüpfen
Einige grundlegende Pseudoklassen umfassen zwei Pseudoklassen, die sich um Referenzen drehen. Dies sind die Pseudoklassen :link und :visited und sie bestimmen, ob ein Link besucht wurde oder nicht. Um einen Link zu formatieren, der noch nicht besucht wurde, kommt die Pseudoklasse :link ins Spiel, und die Pseudoklasse :visited stilisiert Links, die der Benutzer bereits besucht hat, basierend auf seinem Browserverlauf.
A:link (...) a:besucht (...)
Pseudoklassen für Benutzeraktionen
Basierend auf Benutzeraktionen können verschiedene Pseudoklassen dynamisch auf ein Element angewendet werden, darunter :hover, :active und :focus. Die Pseudoklasse :hover wird auf ein Element angewendet, wenn der Benutzer den Cursor über das Element bewegt, was am häufigsten bei Links verwendet wird. Die Pseudoklasse:active wird auf ein Element angewendet, wenn der Benutzer das Element aktiviert, beispielsweise indem er darauf klickt. Schließlich wird die Pseudoklasse:focus auf ein Element angewendet, wenn der Benutzer das Element zum Fokus der Seite gemacht hat, häufig durch Verwendung der Tab-Taste beim Wechseln von einem Element zum anderen.
A:hover (...) a:aktiv (...) a:fokus (...)
Schnittstellenstatus-Pseudoklassen
Wie Links gibt es auch einige Pseudoklassen, die mit dem Status von UI-Elementen verknüpft sind, insbesondere innerhalb von Formularen. Zu diesen Pseudoklassen gehören :enabled, :disabled, :checked und :indeterminate.
Die Pseudoklasse „:enabled“ wählt Felder aus, die aktiviert und zur Verwendung verfügbar sind, und die Pseudoklasse „:disabled“ wählt Felder aus, an die ein „disabled“-Attribut gebunden ist. Viele Browser blenden solche deaktivierten Felder standardmäßig aus, um Benutzer darüber zu informieren, dass das Feld nicht für die Interaktion verfügbar ist. Ihr Stil kann jedoch über die Pseudoklasse :disabled nach Wunsch angepasst werden.
Eingabe:aktiviert (...) Eingabe:deaktiviert (...)
Die letzten beiden Schnittstellenstatuselemente, die Pseudoklassen :checked und :indeterminate, drehen sich um Kontrollkästchen und Optionsfelder. Die Pseudoklasse :checked wählt Kontrollkästchen oder Optionsfelder aus, von denen Sie erwarten, dass sie aktiviert sind. Wenn kein Kontrollkästchen oder Optionsfeld aktiviert oder ausgewählt ist, befindet es sich in einem unbestimmten Zustand, für den die Pseudoklasse :indeterminate verwendet werden kann, um auf ähnliche Elemente abzuzielen.
Eingabe:geprüft (...) Eingabe:unbestimmt (...)
Pseudoklassen von Struktur und Position
Mehrere Pseudoklassen beziehen sich auf Struktur und Position basierend darauf, wo Elemente im Dokumentbaum gefunden werden. Diese Pseudoklassen gibt es in verschiedenen Formen und Größen, von denen jede ihre eigene, einzigartige Funktionalität bietet. Einige Pseudoklassen gibt es schon länger als andere, aber CSS3 brachte eine ganze Reihe neuer Pseudoklassen mit sich, die die bestehenden ergänzen.
:erstes-Kind, :letztes-Kind und :nur-Kind
Die ersten strukturellen Pseudoklassen, auf die Sie wahrscheinlich stoßen werden, sind :first-child , :last-child und :only-child . Die Pseudoklasse :first-child wählt ein Element aus, wenn es das erste untergeordnete Element im übergeordneten Element ist, während die Pseudoklasse :last-child das Element auswählt, wenn es das letzte untergeordnete Element im übergeordneten Element ist. Diese Pseudoklassen eignen sich ideal zum Auswählen des ersten oder letzten Elements in einer Liste usw. Darüber hinaus wählt :only-child ein Element aus, wenn es das einzige Element im übergeordneten Element ist. Alternativ kann die :only-child-Pseudoklasse als :first-child:last-child geschrieben werden, allerdings hat :only-child eine geringere Spezifität.
Hier gibt der Selektor li:first-child das erste Listenelement an, während li:last-child das letzte Listenelement angibt und somit die Zeilen 2 und 10 auswählt. Der Selektor div:only-child sucht nach
, das das einzige untergeordnete Element des übergeordneten Elements ist, ohne weitere gleichgeordnete Elemente. In diesem Fall wird Zeile 4 ausgewählt, da dies die einzige ist in diesem Listenelement.Li:erstes-Kind (...) li:letztes-Kind (...) div:nur-Kind (...)
:first-of-type, :last-of-type und :only-of-type
Das Finden des ersten, letzten und einzigen Kindes eines Elternteils ist sehr nützlich und oft auch alles, was erforderlich ist. Manchmal möchten Sie jedoch nur das erste, letzte oder einzige untergeordnete Element eines bestimmten Elementtyps auswählen. Sie möchten beispielsweise nur den ersten oder letzten Absatz eines Artikels oder möglicherweise nur ein Bild innerhalb eines Artikels auswählen. Glücklicherweise helfen dabei die Pseudoklassen :first-of-type, :last-of-type und :only-of-type.
Die Pseudoklasse „:first-of-type“ wählt das erste Element ihres Typs innerhalb der übergeordneten Klasse aus, während die Pseudoklasse „:last-of-type“ das letzte Element dieses Typs innerhalb der übergeordneten Klasse auswählt. Die Pseudoklasse :only-of-type wählt ein Element aus, wenn es das einzige seines Typs im übergeordneten Element ist.
Im folgenden Beispiel wählen die Pseudoklassen p:first-of-type und p:last-of-type jeweils den ersten und letzten Absatz im Artikel aus, unabhängig davon, ob es sich tatsächlich um die ersten oder letzten untergeordneten Absätze handelt der Artikel. Die Zeilen 3 und 6 werden von diesen Selektoren ausgewählt. Der img:only-of-type-Selektor gibt das Bild in Zeile 5 als einziges Bild an, das im Artikel erscheint.
P:first-of-type (...) p:last-of-type (...) img:only-of-type (...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
...
Schließlich gibt es mehrere Struktur- und Positions-Pseudoklassen, die Elemente basierend auf Zahlen oder algebraischen Ausdrücken auswählen. Zu diesen Pseudoklassen gehören :nth-child(n) , :nth-last-child(n) , :nth-of-type(n) und :nth-last-of-type(n) . Alle diese eindeutigen Pseudoklassen beginnen mit dem n-ten und nehmen eine Zahl oder einen Ausdruck in Klammern an, der durch das Symbol n bezeichnet wird.
Die Zahl oder der Ausdruck in Klammern gibt genau an, welches Element bzw. welche Elemente ausgewählt werden sollen. Durch die Verwendung einer bestimmten Zahl wird das einzelne Element vom Anfang oder Ende des Dokumentbaums berechnet und dann ausgewählt. Durch die Verwendung eines Ausdrucks wird der Satz von Elementen vom Anfang oder Ende des Dokumentbaums ausgewertet und eine Gruppe oder Wiederholung davon ausgewählt.
Verwendung von Zahlen und Ausdrücken in Pseudoklassen
Wie bereits erwähnt, wird bei Verwendung einer bestimmten Zahl in einer Pseudoklasse vom Anfang oder Ende des Dokumentbaums aus gerechnet und ein passendes Element ausgewählt. Beispielsweise wählt der Selektor li:nth-child(4) das vierte Element in der Liste aus. Die Zählung beginnt beim ersten Listenelement und erhöht sich für jedes Listenelement um eins, bis schließlich das vierte Element gefunden und ausgewählt wird. Bei der Angabe einer bestimmten Zahl muss diese positiv sein.
Ausdrücke für Pseudoklassen liegen im Format an, an+b, an-b, n+b, -n+b und -an+b vor. Der gleiche Ausdruck kann übersetzt und gelesen werden als (a×n)±b. Die Variable a gibt den Faktor an, mit dem die Elemente berechnet werden, während die Variable b angibt, wo die Zählung beginnt oder stattfindet.
Beispielsweise gibt der Selektor li:nth-child(3n) jedes dritte Element eines Listenelements an. Die Verwendung dieses Ausdrucks entspricht 3x0, 3x1, 3x2 usw. Wie Sie sehen können, wählen die Ergebnisse dieses Ausdrucks das dritte, sechste und jedes Element aus, das ein Vielfaches von drei ist.
Darüber hinaus können die Schlüsselwörter „odd“ und „even“ als Werte verwendet werden. Wie zu erwarten, wählen sie ungerade bzw. gerade Elemente aus. Wenn die Schlüsselwörter nicht attraktiv sind, wählt der Ausdruck 2n+1 alle ungeraden Elemente aus, und der Ausdruck 2n wählt alle geraden Elemente aus.
Der Selektor li:nth-child(4n+7) definiert jedes vierte Element in der Liste, beginnend mit dem siebten Element. Auch hier ist die Verwendung dieses Ausdrucks äquivalent zu (4x0)+7, (4x1)+7, (4x2)+7 usw. Die Ergebnisse dieses Ausdrucks wählen das siebte, elfte, fünfzehnte und jedes vierte Element aus.
Bei Verwendung von n ohne führende Zahl wird a als 1 ausgewertet. Der Selektor li:nth-child(n+5) wählt jedes Listenelement beginnend mit dem fünften aus, wobei die ersten vier Listenelemente nicht ausgewählt werden. Im Ausdruck wird dies als (1×0)+5, (1×1)+5, (1×2)+5 usw. analysiert.
Mit negativen Zahlen können komplexere Dinge erstellt werden. Beispielsweise zählt der Selektor li:nth-child(6n-4) jedes sechste Listenelement, beginnend bei -4, und wählt das zweite, achte, vierzehnte Listenelement usw. aus. Derselbe Selektor li:nth-child(6n-4) kann auch als li:nth-child(6n+2) geschrieben werden, ohne die negative b-Variable zu verwenden.
Auf eine negative Variable oder ein negatives Argument n muss eine positive Variable b folgen. Wenn dem Argument n eine negative Variable a vorangestellt ist, bestimmt die Variable b, wie hoch die Anzahl erreicht wird. Beispielsweise wählt der Selektor li:nth-child(-3n+12) jedes dritte Listenelement in den ersten zwölf Elementen aus. Der Selektor li:nth-child(-n+9) wählt die ersten neun Elemente in der Liste aus, da die Variable a ohne deklarierte Zahl standardmäßig den Wert -1 hat.
:nth-child(n) und :nth-last-child(n)
Mit einem allgemeinen Verständnis der Funktionsweise von Zahlen und Ausdrücken in Pseudoklassen werfen wir einen Blick auf nützliche Pseudoklassen, in denen diese Zahlen und Ausdrücke verwendet werden können. Die ersten davon sind :nth-child(n) und :nth-last -child(n) . Diese Pseudoklassen funktionieren ähnlich wie :first-child und :last-child , indem sie alle Elemente im übergeordneten Element untersuchen und zählen und nur ein bestimmtes Element auswählen. :nth-child(n) funktioniert vom Anfang des Dokumentbaums und :nth-last-child(n) funktioniert vom Ende des Dokumentbaums.
Werfen wir mithilfe der Pseudoklasse :nth-child(n) einen Blick auf den Selektor li:nth-child(3n). Es definiert jedes dritte Listenelement, daher werden die Zeilen 4 und 7 ausgewählt.
Li:nth-child(3n) (…)
Die Verwendung eines anderen Ausdrucks in der Pseudoklasse :nth-child(n) führt zu einer anderen Auswahl. Der Selektor li:nth-child(2n+3) definiert beispielsweise jedes zweite Element in der Liste, beginnend mit dem dritten. Als Ergebnis werden die Elemente in den Zeilen 4 und 6 ausgewählt.
Li:nth-child(2n+3) (...)
Wenn Sie den Ausdruck erneut ändern, diesmal mit einem negativen Wert, erhalten Sie eine neue Auswahl. Hier gibt der Selektor li:nth-child(-n+4) die ersten vier Elemente der Liste an, während die übrigen Elemente nicht ausgewählt werden, sodass die Zeilen 1 bis 4 ausgewählt werden.
Li:nth-child(-n+4) (...)
Das Hinzufügen einer negativen Zahl vor n ändert die Auswahl erneut. Hier definiert der Selektor li:nth-child(-2n+5) jedes zweite Listenelement aus den ersten fünf Elementen, sodass die Elemente in den Zeilen 2, 4 und 6 ausgewählt werden.
Li:nth-child(-2n+5) (...)
Durch Ändern der Pseudoklasse :nth-child(n) in :nth-last-child(n) wird die Zählrichtung geändert, sodass die Zählung am Ende des Dokumentbaums beginnt. Der Selektor li:nth-last-child(3n+2) gibt beispielsweise jedes dritte Listenelement an, beginnend vom zweiten bis zum letzten, und zwar in Richtung des Anfangs der Liste. Hier werden die Listenelemente in den Zeilen 3 und 6 ausgewählt.
Li:nth-last-child(3n+2) (...)
:nth-of-type(n) und :nth-last-of-type(n)
Die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) sind :nth-child(n) und :nth-last-child(n) sehr ähnlich, aber anstelle von Zählen jedes Elements Innerhalb des übergeordneten Elements zählen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) nur Elemente ihres eigenen Typs. Wenn Sie beispielsweise Absätze in einem Artikel zählen, überspringen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) alle Überschriften
oder verschiedene Elemente, die keine Absätze sind, während :nth-child(n) und :nth-last-child(n) jedes Element zählen, unabhängig von seinem Typ, und nur diejenigen auswählen, die mit dem Element im angegebenen Selektor übereinstimmen. Darüber hinaus sind alle möglichen Ausdrücke, die in :nth-child(n) und :nth-last-child(n) verwendet werden, auch im Pseudo :nth-of-type(n) und :nth-last-of-type verfügbar -Klassen (n) .Durch die Verwendung der :nth-of-type(n)-Pseudoklasse im p:nth-of-type(3n)-Selektor können wir jeden dritten Absatz im übergeordneten Element definieren, unabhängig von anderen verwandten Elementen innerhalb des übergeordneten Elements. Hier werden die Absätze der Zeilen 5 und 9 ausgewählt.
P:nth-of-type(3n) (...)
...
Dieser Absatz wird ausgewählt
...
Dieser Absatz wird ausgewählt
Wie bei den Pseudoklassen :nth-child(n) und :nth-last-child(n) besteht der Hauptunterschied zwischen :nth-of-type(n) und :nth-last-of-type(n) darin dass :nth-of-type(n) Elemente vom Anfang des Dokumentbaums zählt und :nth-last-of-type(n) Elemente vom Ende des Dokumentbaums zählt.
Mit der Pseudoklasse :nth-last-of-type(n) können wir einen Selektor p:nth-last-of-type(2n+1) schreiben, der jeden zweiten Absatz ab dem Ende des übergeordneten Elements angibt, beginnend mit der letzte Absatz. Hier werden die Absätze der Zeilen 4, 7 und 9 ausgewählt.
P:nth-last-of-type(2n+1) (...)
...
Dieser Absatz wird ausgewählt
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Pseudoklasse:Ziel
Die Pseudoklasse :target wird zum Formatieren von Elementen verwendet, wenn der Wert des id-Attributs mit dem URI-Fragmentzeiger übereinstimmt. Dieser Teil des URI wird anhand des Hash-Zeichens (#) und dessen, was unmittelbar darauf folgt, erkannt. Die Adresse http://example.com/index.html#hello enthält einen Hallo-Zeiger. Wenn es beispielsweise mit dem Wert des id-Attributs eines Elements auf der Seite übereinstimmt,
Pseudoklasse:leer
Mit der Pseudoklasse :empty können Sie Elemente auswählen, die keine untergeordneten Elemente oder Text enthalten. Kommentare, Verarbeitungsanweisungen und leerer Text gelten nicht als untergeordnete Elemente und werden nicht als solche behandelt.
Die Verwendung der Pseudoklasse div:empty bestimmt
Keine Kinder oder Text. Unten ausgewählt in den Zeilen 2 und 3, da diese völlig leer sind. Auch wenn der zweite Enthält einen Kommentar, wird er nicht als untergeordnetes Element betrachtet und daher verlassen leer. Erste enthält Text, das dritte enthält ein einzelnes Leerzeichen und das letzte enthält ein untergeordnetes Element Daher sind sie alle ausgeschlossen und nicht ausgewählt.Div:leer (...)
Hallo
Pseudoklasse:nicht
Die Pseudoklasse :not(x) nimmt ein Argument und filtert die getroffene Auswahl. Der p:not(.intro)-Selektor verwendet die :not-Pseudoklasse, um jeden Absatz ohne eine Intro-Klasse zu definieren. Das Absatzelement wird am Anfang des Selektors definiert, gefolgt von der Pseudoklasse :not(x). In den Klammern befindet sich ein Negationsselektor, in diesem Fall die Intro-Klasse.
Unten verwenden sowohl die Selektoren div:not(.awesome) als auch :not(div) die Pseudoklasse :not(x). Der Selektor div:not(.awesome) definiert alle
ohne class awesome , während der :not(div)-Selektor ein Element angibt, das es nicht ist . Als Ergebnis wird es ausgewählt in Zeile 1 sowie zwei Abschnitte in den Zeilen 3 und 4. Das einzige nicht ausgewählte Element ist mit der awesome-Klasse, da sie über zwei Pseudoklassen hinausgeht.Div:not(.awesome) (...) :not(div) (...)
Dieses Div wird ausgewählt
...
Dieser Abschnitt wird ausgewählt. Dieser Abschnitt wird ausgewähltBeispiel mit Pseudoklassen
Nummer
Spieler
Position
Höhe
Gewicht
8
Marco Belinelli
G
6-5
195
5
Carlos Boozer
F
6-9
266
...
Tabelle ( border-collapse: separat; border-spacing: 0; width: 100 %; ) th, td ( padding: 6px 15px; ) th ( background: #42444e; color: #fff; text-align: left; ) tr :first-child th:first-child ( border-top-left-radius: 6px; ) tr:first-child th:last-child ( border-top-right-radius: 6px; ) td ( border-right: 1px solid #c6c9cc; border-bottom: 1px solid #c6c9cc; ) td:first-child ( border-left: 1px solid #c6c9cc; ) tr:nth-child(even) td ( Hintergrund: #eaeaed; ) tr:last- child td:first-child ( border-bottom-left-radius: 6px; ) tr:last-child td:last-child ( border-bottom-right-radius: 6px; )
Übersicht über Pseudoklassen Beispiel Name Beschreibung
eine Verbindung Link-Pseudoklasse Wählt Links aus, die vom Benutzer nicht angezeigt wurden.
a:besucht Link-Pseudoklasse Wählt Links aus, die vom Benutzer besucht wurden.
a:schweben Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer mit der Maus darüber fährt.
a:aktiv Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer es aktiviert.
ein Fokus Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer es zu einem Aufmerksamkeitspunkt gemacht hat.
Eingabe: aktiviert Staatliche Pseudoklasse Wählt ein Element in einem zugänglichen Zustand aus.
Eingabe: deaktiviert Staatliche Pseudoklasse Wählt über das Attribut „disabled“ ein Element in einem deaktivierten Zustand aus.
Eingabe: überprüft Staatliche Pseudoklasse Wählt ein aktiviertes Kontrollkästchen oder Optionsfeld aus.
Eingabe: unbestimmt Staatliche Pseudoklasse Wählt ein Kontrollkästchen oder Optionsfeld aus, das nicht aktiviert oder deaktiviert war, sodass es in einem undefinierten Zustand verbleibt.
li:erstes Kind Strukturelle Pseudoklasse Wählt das erste Element im übergeordneten Element aus.
li:last-child Strukturelle Pseudoklasse Wählt das letzte Element im übergeordneten Element aus.
div:only-child Strukturelle Pseudoklasse Wählt ein einzelnes Element im übergeordneten Element aus.
p:erster Typ Strukturelle Pseudoklasse Wählt das erste Element seines Typs im übergeordneten Element aus.
p:last-of-type Strukturelle Pseudoklasse Wählt das letzte Element seines Typs im übergeordneten Element aus.
img:only-of-type Strukturelle Pseudoklasse Wählt das einzige Element seines Typs im übergeordneten Element aus.
li:nth-child(2n+3) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Anfang des Dokumentbaums an.
li:nth-last-child(3n+2) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Ende des Dokumentbaums an.
p:nth-of-type(3n) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Anfang des Dokumentbaums an.
p:nth-last-of-type(2n+1) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Ende des Dokumentbaums an.
Abschnitt:Ziel Pseudoklasse:Ziel Wählt ein Element aus, dessen ID-Attributwert mit der URI-Fragment-ID übereinstimmt.
div:leer Pseudoklasse:leer Wählt ein Element aus, das keine untergeordneten Elemente oder Text enthält.
div:not(.awesome) Pseudoklasse:nicht Wählt ein Element aus, das nicht durch das deklarierte Argument dargestellt wird.
Pseudoelemente
Pseudoelemente sind dynamische Elemente, die im Dokumentbaum nicht vorhanden sind. Wenn sie mit Selektoren verwendet werden, erzeugen diese Pseudoelemente eindeutige Teile der Seite, die gestaltet werden können. Ein wichtiger Punkt ist, dass in einem Selektor jeweils nur ein Pseudoelement verwendet werden kann.
Text-Pseudoelemente
Die ersten implementierten Pseudoelemente waren die Pseudoelemente :first-letter und :first-line text. Das Pseudoelement :first-letter gibt den ersten Textbuchstaben innerhalb eines Elements an, während :first-line die erste Textzeile innerhalb eines Elements angibt.
In der Demo unten ist der erste Buchstabe eines Absatzes mit der Klasse alpha auf eine große Schriftgröße und -farbe eingestellt, ebenso wie die erste Zeile eines Absatzes mit der Klasse bravo . Diese Auswahl erfolgt mithilfe der Pseudoklassen :first-letter bzw. :first-line text.
Alpha:first-letter, .bravo:first-line ( Farbe: #ff7b29; Schriftgröße: 18px; )
Lorem ipsum dolor...
Ganzzahl eget enim...
Demonstration von Textpseudoelementen
Durch Pseudoelemente generierter Inhalt
Die Pseudoelemente :before und :after erstellen neue Inline-Pseudoelemente nur innerhalb des ausgewählten Elements. Am häufigsten werden diese Pseudoelemente in Kombination mit der Content-Eigenschaft verwendet, um der Seite geringfügige Informationen hinzuzufügen. Dies ist jedoch nicht immer der Fall. Durch die zusätzliche Verwendung dieser Pseudoelemente können Benutzeroberflächenkomponenten zu einer Seite hinzugefügt werden, ohne dass das Dokument mit nicht-semantischen Elementen überladen werden muss.
Das Pseudoelement :before erstellt ein Pseudoelement vor oder vor dem ausgewählten Element, während :after ein Pseudoelement nach oder hinter dem ausgewählten Element erstellt. Diese Pseudoelemente erscheinen innerhalb des ausgewählten Elements verschachtelt und nicht außerhalb. Im Folgenden wird das Pseudoelement :after verwendet, um den href-Attributwert von Links in Klammern nach dem Link selbst anzuzeigen. Diese Informationen sind nützlich, aber letztendlich unterstützt nicht jeder Browser diese Pseudoelemente.
A:after ( Farbe: #9799a7; Inhalt: " (" attr(href) ")"; Schriftgröße: 11px; )
Suchen Sie im Internet Erfahren Sie, wie Sie eine Website erstellen
Demonstration von durch Inhalte generierten Pseudoelementen
Pseudoelement::selection
Das Pseudoelement ::selection definiert den vom Benutzer ausgewählten Teil des Dokuments. Die Auswahl kann dann gestylt werden, allerdings nur mit den Eigenschaften color , background , background-color und text-shadow. Es ist zu beachten, dass die Eigenschaft „Hintergrundbild“ ignoriert wird. Allerdings kann die Abkürzungseigenschaft „Hintergrund“ zum Hinzufügen von Farbe verwendet werden, alle Bilder werden jedoch ignoriert.
Doppelpunkt (:) und Doppelpunkt (::)
Das Pseudoelement ::selection wurde CSS3 hinzugefügt, um Pseudoklassen von Pseudoelementen zu trennen, indem der Doppelpunkt verwendet wurde, der Pseudoelementen hinzugefügt wurde. Glücklicherweise unterstützen die meisten Browser sowohl einzelne als auch doppelte Doppelpunktwerte für Pseudoelemente, aber das ::selection-Pseudoelement muss immer mit einem Doppelpunkt beginnen.
Wenn Sie in der Demo unten einen beliebigen Text auswählen, wird der Hintergrund dank des Pseudoelements ::selection orange. Schauen Sie sich auch ::-moz-selection an. Das Mozilla-Präfix wurde hinzugefügt, um eine bessere Unterstützung für alle Browser zu gewährleisten.
::-moz-selection (Hintergrund: #ff7b29;) ::selection (Hintergrund: #ff7b29;)
Demonstration von Pseudoelementen
Pfeil (Hintergrund: #2db34a; Farbe: #fff; Anzeige: Inline-Block; Höhe: 30 Pixel; Zeilenhöhe: 30 Pixel; Polsterung: 0 12 Pixel; Position: relativ; Textdekoration: keine; ) .arrow:before, . Pfeil: nach ( Inhalt: ""; Höhe: 0; Position: absolut; Breite: 0; ) .pfeil: vor ( Rand unten: 15 Pixel fest #2db34a; Rand links: 15 Pixel fest transparent; Rand oben: 15 Pixel fest #2db34a; links: -15px; ) .arrow:after ( Rand unten: 15 Pixel durchgehend transparent; Rand links: 15 Pixel durchgehend #2db34a; Rand oben: 15 Pixel durchgehend transparent; rechts: -15px; ) .arrow:hover ( Hintergrund: #ff7b29; ) .arrow:hover:before ( border-bottom: 15px solid #ff7b29; border-top: 15px solid #ff7b29; ) .arrow:hover:after ( border-left: 15px solid #ff7b29; )
Unterstützung für die Browserauswahl
Diese Selektoren bieten zwar unterschiedliche Funktionen und die Möglichkeit, einige wirklich erstaunliche Dinge damit zu tun mit CSS, leiden sie manchmal unter einer schlechten Browserunterstützung. Bevor Sie etwas zu Kritisches tun, überprüfen Sie die Selektoren, die Sie in den gängigsten Browsern verwenden möchten, und entscheiden Sie dann, ob sie für Sie geeignet sind oder nicht.
CSS3.info bietet ein CSS3-Selektortesttool, das Sie darüber informiert, welche Selektoren vom Browser unterstützt werden. Es ist auch eine gute Idee, direkt die Unterstützung Ihres Browsers zu überprüfen.
Auf Smashing Magazine
Lesen Sie auch
außerhalb des Elements wird nicht ausgewählt.Nachfolgend finden Sie die Überschriften, aus denen die Zeilen 3 und 5 ausgewählt werden.
Artikel h2 (...)
...
Dieser Titel wird ausgewählt
Dieser Titel wird ausgewählt
Direkte Kinderauswahl
Manchmal gehen untergeordnete Selektoren zu weit und wählen mehr als gewünscht aus. Manchmal müssen nur die direkten untergeordneten Elemente eines übergeordneten Elements ausgewählt werden und nicht jede Instanz eines Elements, das tief in einem Vorfahren verschachtelt ist. In diesem Fall kann ein direkter untergeordneter Selektor verwendet werden, indem im Selektor ein Größer-als-Zeichen (>) zwischen dem übergeordneten und dem untergeordneten Element platziert wird.
Beispielsweise ist „article > p“ nur dann ein direkter untergeordneter Selektor, wenn die Elemente
Befindet sich direkt im Element . Jedes Element<р>außerhalb des Elements platziert oder in einem anderen Element als verschachtelt , wird nicht ausgewählt.
Unten ist der Absatz in Zeile 3 das einzige direkte untergeordnete Element seines übergeordneten Elements , deshalb wurde es ausgewählt.
Artikel > p (...)
Dieser Absatz wird ausgewählt
Verwandte Selektoren
Zu wissen, wie man untergeordnete Elemente auswählt, ist größtenteils nützlich und wird häufig verwendet. Möglicherweise müssen jedoch auch Geschwisterelemente ausgewählt werden, also Elemente, die einen gemeinsamen Vorfahren haben. Eine solche Auswahl kann mithilfe eines gemeinsamen Geschwisterselektors und benachbarter Selektoren erfolgen.
Generische Geschwisterauswahl
Mit der allgemeinen Geschwisterauswahl können Sie Elemente auswählen, die auf der Grundlage ihrer Geschwister ausgewählt werden sollen, d. h. derjenigen, die das gleiche gemeinsame übergeordnete Element haben. Sie werden durch die Verwendung des Tilde-Zeichens (~) zwischen zwei Elementen innerhalb eines Selektors erstellt. Das erste Element gibt an, dass das zweite Element ein gleichgeordnetes Element sein muss und beide das gleiche übergeordnete Element haben müssen.
Der h2~p-Selektor ist ein allgemeiner Geschwisterselektor, der nach Elementen sucht
Die nach irgendwelchen Elementen kommen
im selben Elternteil. Zum Element
Wurde ausgewählt, muss es nach jedem Element stehen
.
Die Absätze in den Zeilen 5 und 9 werden ausgewählt, weil sie nach einer Überschrift im Dokumentbaum stehen und dasselbe übergeordnete Element wie eine zugehörige Überschrift haben.
H2 ~ p(...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Angrenzende Selektoren
Manchmal ist es wünschenswert, etwas mehr Kontrolle zu haben, einschließlich der Möglichkeit, ein Geschwisterkind auszuwählen, das einem anderen Geschwisterkind direkt folgt. Ein benachbarter Selektor wählt nur Geschwisterelemente aus, die unmittelbar auf ein anderes Geschwisterelement folgen. Anstelle eines Tilde-Zeichens, wie es bei einem gemeinsamen Geschwisterselektor der Fall ist, verwendet ein Geschwisterselektor ein Pluszeichen (+) zwischen zwei Elementen im Selektor. Auch hier gibt das erste Element an, dass das zweite Element unmittelbar folgen und mit ihm in Beziehung stehen muss und dass beide Elemente dasselbe übergeordnete Element haben müssen.
Werfen wir einen Blick auf den benachbarten Selektor h2 + p. Es werden nur Elemente ausgewählt
Kommt unmittelbar nach den Elementen
. Beide müssen außerdem das gleiche übergeordnete Element haben.
Der Absatz in Zeile 5 wird ausgewählt, da er unmittelbar auf die entsprechende Überschrift folgt und sie denselben übergeordneten Absatz haben.
H2 + p(...)
...
Dieser Absatz wird ausgewählt
Beispiel für benachbarte Selektoren
Input ( display: none; ) label, ul ( border: 1px solid #cecfd5; border-radius: 6px; ) label ( color: #0087cc; Cursor: Zeiger; display: inline-block; Schriftgröße: 18px; padding: 5px 9px; Übergang: alle .15s easy; ) label:hover ( color: #ff7b29; ) input:checked + label ( box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); color: #9799a7 ; ) nav ( max-height: 0; Überlauf: versteckt; Übergang: alle .15s easy; ) input:checked ~ nav ( max-height: 500px; ) ul ( list-style: none; margin: 8px 0 0 0; padding: 0; width: 100px; ) li ( border-bottom: 1px solid #cecfd5; ) li:last-child ( border-bottom: 0; ) a ( color: #0087cc; display: block; padding: 6px 12px; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; )
Attributselektoren
Einige der zuvor besprochenen generischen Selektoren können auch als Attributselektoren definiert werden, bei denen ein Element basierend auf einem Klassen- oder ID-Wert ausgewählt wird. Diese Selektoren Klassenattribute und id sind weit verbreitet und ziemlich mächtig, aber das ist erst der Anfang. In den letzten Jahren sind weitere Attributselektoren entstanden, insbesondere mit CSS3, die große Fortschritte gemacht haben. Elemente können nun basierend darauf ausgewählt werden, ob ein Attribut vorhanden ist und welchen Wert es enthält.
Attributpräsenzselektor
Der erste Attributselektor identifiziert ein Element basierend darauf, ob das Attribut aktiviert ist oder nicht, unabhängig von seinem tatsächlichen Wert. Um ein Element basierend darauf auszuwählen, ob ein Attribut vorhanden ist oder nicht, geben Sie einfach den Attributnamen ein eckige Klammern() im Selektor. Nach jedem Typ- oder Klassenselektor können eckige Klammern stehen, abhängig vom gewünschten Grad an Spezifität.
A (...)
Attributselektor =
Um ein Element mit einem bestimmten und präzisen Wert zu identifizieren, kann derselbe Selektor wie zuvor verwendet werden, aber dieses Mal steht der gewünschte Wert in eckigen Klammern hinter dem Attributnamen. Innerhalb der eckigen Klammern sollte nach dem Gleichheitszeichen (=) ein Attributname stehen, wobei in den Anführungszeichen der gewünschte Attributwert steht.
A (...)
Attributselektor *=
Wenn wir versuchen, ein Element zu finden, das auf einem Teil eines Attributwerts basiert, aber keine exakte Übereinstimmung aufweist, kann das Sternchen (*) in den eckigen Klammern des Selektors verwendet werden. Das Sternchen muss unmittelbar nach dem Attributnamen und unmittelbar vor dem Gleichheitszeichen stehen. Das bedeutet, dass der folgende Wert nur im Attributwert erscheinen oder darin enthalten sein muss.
A (...)
Attributselektor ^=
Zusätzlich zur Auswahl eines Elements basierend auf dem Attributwert, der den angegebenen Text enthält, können Sie ein Element auch basierend darauf auswählen, wo der Attributwert beginnt. Die Verwendung des Zirkumflexzeichens (^) in Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen bedeutet, dass der Attributwert mit dem angegebenen Text beginnen muss.
A (...)
...
Attributselektor $=
Das Gegenteil des vorherigen Selektors ist ein Attributselektor, bei dem der Wert mit etwas Text endet. Anstelle des Zeichens ^ wird in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein Dollarzeichen ($) verwendet. Die Verwendung eines Dollarzeichens bedeutet, dass der Attributwert mit dem angegebenen Text enden muss.
A (...)
Attributselektor ~=
Manchmal können Attributwerte voneinander beabstandet sein, sodass nur eines der Wörter zum Erstellen einer Auswahl geeignet sein muss. In diesem Fall bedeutet die Verwendung des Tilde-Zeichens (~) in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen, dass der Attributwert durch Leerzeichen getrennt ist, von denen ein Wort genau mit dem angegebenen Wert übereinstimmt.
A (...)
Attributselektor |=
Wenn der Attributwert durch Bindestriche statt durch Leerzeichen getrennt wird, kann in den Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein vertikales Linienzeichen (|) verwendet werden. Eine vertikale Linie zeigt an, dass der Attributwert durch einen Bindestrich getrennt werden kann, Wörter jedoch mit dem angegebenen Wert beginnen müssen.
A (...)
Beispiel für Attributselektoren
Ul ( Listenstil: keine; Rand: 0; Polsterung: 0; ) a ( Hintergrundposition: 0 50 %; Hintergrundwiederholung: keine Wiederholung; Farbe: #0087cc; Polsterung links: 22 Pixel; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; ) a ( Hintergrundbild: url("images/pdf.png"); ) a ( Hintergrundbild: url("images/doc.png"); ) a ( Hintergrundbild: url("images/image.png"); ) a ( Hintergrundbild: url("images/audio.png"); ) a ( Hintergrundbild: url("images/video.png" ); )
Übersicht über Attributselektoren Beispiel Name Beschreibung
A Attributpräsenzselektor Wählt ein Element aus, wenn das angegebene Attribut vorhanden ist.
A Attributselektor = Wählt ein Element aus, wenn der Wert dieses Attributs genau mit dem angegebenen übereinstimmt.
A Attributselektor *= Wählt ein Element aus, wenn der Wert dieses Attributs mindestens eine Instanz des angegebenen Textes enthält.
A Attributselektor ^= Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text beginnt.
A Attributselektor $= Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text endet.
A Attributselektor ~= Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch Leerzeichen getrennt ist und genau mit einem einzelnen angegebenen Wort übereinstimmt.
A Attributselektor |= Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch einen Bindestrich getrennt ist und mit dem angegebenen Wort beginnt.
Pseudoklassen
Pseudoklassen ähneln regulären Klassen in HTML, werden jedoch nicht direkt im Markup angegeben, sondern dynamisch als Ergebnis von Benutzeraktionen oder der Dokumentstruktur aufgefüllt. Die häufigste Pseudoklasse, die Sie wahrscheinlich schon einmal gesehen haben, ist :hover. Beachten Sie, dass diese Pseudoklasse wie alle anderen Pseudoklassen mit einem Doppelpunkt (:) beginnt.
Pseudoklassen verknüpfen
Einige grundlegende Pseudoklassen umfassen zwei Pseudoklassen, die sich um Referenzen drehen. Dies sind die Pseudoklassen :link und :visited und sie bestimmen, ob ein Link besucht wurde oder nicht. Um einen Link zu formatieren, der noch nicht besucht wurde, kommt die Pseudoklasse :link ins Spiel, und die Pseudoklasse :visited stilisiert Links, die der Benutzer bereits besucht hat, basierend auf seinem Browserverlauf.
A:link (...) a:besucht (...)
Pseudoklassen für Benutzeraktionen
Basierend auf Benutzeraktionen können verschiedene Pseudoklassen dynamisch auf ein Element angewendet werden, darunter :hover, :active und :focus. Die Pseudoklasse :hover wird auf ein Element angewendet, wenn der Benutzer den Cursor über das Element bewegt, was am häufigsten bei Links verwendet wird. Die Pseudoklasse:active wird auf ein Element angewendet, wenn der Benutzer das Element aktiviert, beispielsweise indem er darauf klickt. Schließlich wird die Pseudoklasse:focus auf ein Element angewendet, wenn der Benutzer das Element zum Fokus der Seite gemacht hat, häufig durch Verwendung der Tab-Taste beim Wechseln von einem Element zum anderen.
A:hover (...) a:aktiv (...) a:fokus (...)
Schnittstellenstatus-Pseudoklassen
Wie Links gibt es auch einige Pseudoklassen, die mit dem Status von UI-Elementen verknüpft sind, insbesondere innerhalb von Formularen. Zu diesen Pseudoklassen gehören :enabled, :disabled, :checked und :indeterminate.
Die Pseudoklasse „:enabled“ wählt Felder aus, die aktiviert und zur Verwendung verfügbar sind, und die Pseudoklasse „:disabled“ wählt Felder aus, an die ein „disabled“-Attribut gebunden ist. Viele Browser blenden solche deaktivierten Felder standardmäßig aus, um Benutzer darüber zu informieren, dass das Feld nicht für die Interaktion verfügbar ist. Ihr Stil kann jedoch über die Pseudoklasse :disabled nach Wunsch angepasst werden.
Eingabe:aktiviert (...) Eingabe:deaktiviert (...)
Die letzten beiden Schnittstellenstatuselemente, die Pseudoklassen :checked und :indeterminate, drehen sich um Kontrollkästchen und Optionsfelder. Die Pseudoklasse :checked wählt Kontrollkästchen oder Optionsfelder aus, von denen Sie erwarten, dass sie aktiviert sind. Wenn kein Kontrollkästchen oder Optionsfeld aktiviert oder ausgewählt ist, befindet es sich in einem unbestimmten Zustand, für den die Pseudoklasse :indeterminate verwendet werden kann, um auf ähnliche Elemente abzuzielen.
Eingabe:geprüft (...) Eingabe:unbestimmt (...)
Pseudoklassen von Struktur und Position
Mehrere Pseudoklassen beziehen sich auf Struktur und Position basierend darauf, wo Elemente im Dokumentbaum gefunden werden. Diese Pseudoklassen gibt es in verschiedenen Formen und Größen, von denen jede ihre eigene, einzigartige Funktionalität bietet. Einige Pseudoklassen gibt es schon länger als andere, aber CSS3 brachte eine ganze Reihe neuer Pseudoklassen mit sich, die die bestehenden ergänzen.
:erstes-Kind, :letztes-Kind und :nur-Kind
Die ersten strukturellen Pseudoklassen, auf die Sie wahrscheinlich stoßen werden, sind :first-child , :last-child und :only-child . Die Pseudoklasse :first-child wählt ein Element aus, wenn es das erste untergeordnete Element im übergeordneten Element ist, während die Pseudoklasse :last-child das Element auswählt, wenn es das letzte untergeordnete Element im übergeordneten Element ist. Diese Pseudoklassen eignen sich ideal zum Auswählen des ersten oder letzten Elements in einer Liste usw. Darüber hinaus wählt :only-child ein Element aus, wenn es das einzige Element im übergeordneten Element ist. Alternativ kann die :only-child-Pseudoklasse als :first-child:last-child geschrieben werden, allerdings hat :only-child eine geringere Spezifität.
Hier gibt der Selektor li:first-child das erste Listenelement an, während li:last-child das letzte Listenelement angibt und somit die Zeilen 2 und 10 auswählt. Der Selektor div:only-child sucht nach
, das das einzige untergeordnete Element des übergeordneten Elements ist, ohne weitere gleichgeordnete Elemente. In diesem Fall wird Zeile 4 ausgewählt, da dies die einzige ist in diesem Listenelement.Li:erstes-Kind (...) li:letztes-Kind (...) div:nur-Kind (...)
:first-of-type, :last-of-type und :only-of-type
Das Finden des ersten, letzten und einzigen Kindes eines Elternteils ist sehr nützlich und oft auch alles, was erforderlich ist. Manchmal möchten Sie jedoch nur das erste, letzte oder einzige untergeordnete Element eines bestimmten Elementtyps auswählen. Sie möchten beispielsweise nur den ersten oder letzten Absatz eines Artikels oder möglicherweise nur ein Bild innerhalb eines Artikels auswählen. Glücklicherweise helfen dabei die Pseudoklassen :first-of-type, :last-of-type und :only-of-type.
Die Pseudoklasse „:first-of-type“ wählt das erste Element ihres Typs innerhalb der übergeordneten Klasse aus, während die Pseudoklasse „:last-of-type“ das letzte Element dieses Typs innerhalb der übergeordneten Klasse auswählt. Die Pseudoklasse :only-of-type wählt ein Element aus, wenn es das einzige seines Typs im übergeordneten Element ist.
Im folgenden Beispiel wählen die Pseudoklassen p:first-of-type und p:last-of-type jeweils den ersten und letzten Absatz im Artikel aus, unabhängig davon, ob es sich tatsächlich um die ersten oder letzten untergeordneten Absätze handelt der Artikel. Die Zeilen 3 und 6 werden von diesen Selektoren ausgewählt. Der img:only-of-type-Selektor gibt das Bild in Zeile 5 als einziges Bild an, das im Artikel erscheint.
P:first-of-type (...) p:last-of-type (...) img:only-of-type (...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
...
Schließlich gibt es mehrere Struktur- und Positions-Pseudoklassen, die Elemente basierend auf Zahlen oder algebraischen Ausdrücken auswählen. Zu diesen Pseudoklassen gehören :nth-child(n) , :nth-last-child(n) , :nth-of-type(n) und :nth-last-of-type(n) . Alle diese eindeutigen Pseudoklassen beginnen mit dem n-ten und nehmen eine Zahl oder einen Ausdruck in Klammern an, der durch das Symbol n bezeichnet wird.
Die Zahl oder der Ausdruck in Klammern gibt genau an, welches Element bzw. welche Elemente ausgewählt werden sollen. Durch die Verwendung einer bestimmten Zahl wird das einzelne Element vom Anfang oder Ende des Dokumentbaums berechnet und dann ausgewählt. Durch die Verwendung eines Ausdrucks wird der Satz von Elementen vom Anfang oder Ende des Dokumentbaums ausgewertet und eine Gruppe oder Wiederholung davon ausgewählt.
Verwendung von Zahlen und Ausdrücken in Pseudoklassen
Wie bereits erwähnt, wird bei Verwendung einer bestimmten Zahl in einer Pseudoklasse vom Anfang oder Ende des Dokumentbaums aus gerechnet und ein passendes Element ausgewählt. Beispielsweise wählt der Selektor li:nth-child(4) das vierte Element in der Liste aus. Die Zählung beginnt beim ersten Listenelement und erhöht sich für jedes Listenelement um eins, bis schließlich das vierte Element gefunden und ausgewählt wird. Bei der Angabe einer bestimmten Zahl muss diese positiv sein.
Ausdrücke für Pseudoklassen liegen im Format an, an+b, an-b, n+b, -n+b und -an+b vor. Der gleiche Ausdruck kann übersetzt und gelesen werden als (a×n)±b. Die Variable a gibt den Faktor an, mit dem die Elemente berechnet werden, während die Variable b angibt, wo die Zählung beginnt oder stattfindet.
Beispielsweise gibt der Selektor li:nth-child(3n) jedes dritte Element eines Listenelements an. Die Verwendung dieses Ausdrucks entspricht 3x0, 3x1, 3x2 usw. Wie Sie sehen können, wählen die Ergebnisse dieses Ausdrucks das dritte, sechste und jedes Element aus, das ein Vielfaches von drei ist.
Darüber hinaus können die Schlüsselwörter „odd“ und „even“ als Werte verwendet werden. Wie zu erwarten, wählen sie ungerade bzw. gerade Elemente aus. Wenn die Schlüsselwörter nicht attraktiv sind, wählt der Ausdruck 2n+1 alle ungeraden Elemente aus, und der Ausdruck 2n wählt alle geraden Elemente aus.
Der Selektor li:nth-child(4n+7) definiert jedes vierte Element in der Liste, beginnend mit dem siebten Element. Auch hier ist die Verwendung dieses Ausdrucks äquivalent zu (4x0)+7, (4x1)+7, (4x2)+7 usw. Die Ergebnisse dieses Ausdrucks wählen das siebte, elfte, fünfzehnte und jedes vierte Element aus.
Bei Verwendung von n ohne führende Zahl wird a als 1 ausgewertet. Der Selektor li:nth-child(n+5) wählt jedes Listenelement beginnend mit dem fünften aus, wobei die ersten vier Listenelemente nicht ausgewählt werden. Im Ausdruck wird dies als (1×0)+5, (1×1)+5, (1×2)+5 usw. analysiert.
Mit negativen Zahlen können komplexere Dinge erstellt werden. Beispielsweise zählt der Selektor li:nth-child(6n-4) jedes sechste Listenelement, beginnend bei -4, und wählt das zweite, achte, vierzehnte Listenelement usw. aus. Derselbe Selektor li:nth-child(6n-4) kann auch als li:nth-child(6n+2) geschrieben werden, ohne die negative b-Variable zu verwenden.
Auf eine negative Variable oder ein negatives Argument n muss eine positive Variable b folgen. Wenn dem Argument n eine negative Variable a vorangestellt ist, bestimmt die Variable b, wie hoch die Anzahl erreicht wird. Beispielsweise wählt der Selektor li:nth-child(-3n+12) jedes dritte Listenelement in den ersten zwölf Elementen aus. Der Selektor li:nth-child(-n+9) wählt die ersten neun Elemente in der Liste aus, da die Variable a ohne deklarierte Zahl standardmäßig den Wert -1 hat.
:nth-child(n) und :nth-last-child(n)
Mit einem allgemeinen Verständnis der Funktionsweise von Zahlen und Ausdrücken in Pseudoklassen werfen wir einen Blick auf nützliche Pseudoklassen, in denen diese Zahlen und Ausdrücke verwendet werden können. Die ersten davon sind :nth-child(n) und :nth-last -child(n) . Diese Pseudoklassen funktionieren ähnlich wie :first-child und :last-child , indem sie alle Elemente im übergeordneten Element untersuchen und zählen und nur ein bestimmtes Element auswählen. :nth-child(n) funktioniert vom Anfang des Dokumentbaums und :nth-last-child(n) funktioniert vom Ende des Dokumentbaums.
Werfen wir mithilfe der Pseudoklasse :nth-child(n) einen Blick auf den Selektor li:nth-child(3n). Es definiert jedes dritte Listenelement, daher werden die Zeilen 4 und 7 ausgewählt.
Li:nth-child(3n) (…)
Die Verwendung eines anderen Ausdrucks in der Pseudoklasse :nth-child(n) führt zu einer anderen Auswahl. Der Selektor li:nth-child(2n+3) definiert beispielsweise jedes zweite Element in der Liste, beginnend mit dem dritten. Als Ergebnis werden die Elemente in den Zeilen 4 und 6 ausgewählt.
Li:nth-child(2n+3) (...)
Wenn Sie den Ausdruck erneut ändern, diesmal mit einem negativen Wert, erhalten Sie eine neue Auswahl. Hier gibt der Selektor li:nth-child(-n+4) die ersten vier Elemente der Liste an, während die übrigen Elemente nicht ausgewählt werden, sodass die Zeilen 1 bis 4 ausgewählt werden.
Li:nth-child(-n+4) (...)
Das Hinzufügen einer negativen Zahl vor n ändert die Auswahl erneut. Hier definiert der Selektor li:nth-child(-2n+5) jedes zweite Listenelement aus den ersten fünf Elementen, sodass die Elemente in den Zeilen 2, 4 und 6 ausgewählt werden.
Li:nth-child(-2n+5) (...)
Durch Ändern der Pseudoklasse :nth-child(n) in :nth-last-child(n) wird die Zählrichtung geändert, sodass die Zählung am Ende des Dokumentbaums beginnt. Der Selektor li:nth-last-child(3n+2) gibt beispielsweise jedes dritte Listenelement an, beginnend vom zweiten bis zum letzten, und zwar in Richtung des Anfangs der Liste. Hier werden die Listenelemente in den Zeilen 3 und 6 ausgewählt.
Li:nth-last-child(3n+2) (...)
:nth-of-type(n) und :nth-last-of-type(n)
Die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) sind :nth-child(n) und :nth-last-child(n) sehr ähnlich, aber anstelle von Zählen jedes Elements Innerhalb des übergeordneten Elements zählen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) nur Elemente ihres eigenen Typs. Wenn Sie beispielsweise Absätze in einem Artikel zählen, überspringen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) alle Überschriften
oder verschiedene Elemente, die keine Absätze sind, während :nth-child(n) und :nth-last-child(n) jedes Element zählen, unabhängig von seinem Typ, und nur diejenigen auswählen, die mit dem Element im angegebenen Selektor übereinstimmen. Darüber hinaus sind alle möglichen Ausdrücke, die in :nth-child(n) und :nth-last-child(n) verwendet werden, auch im Pseudo :nth-of-type(n) und :nth-last-of-type verfügbar -Klassen (n) .Durch die Verwendung der :nth-of-type(n)-Pseudoklasse im p:nth-of-type(3n)-Selektor können wir jeden dritten Absatz im übergeordneten Element definieren, unabhängig von anderen verwandten Elementen innerhalb des übergeordneten Elements. Hier werden die Absätze der Zeilen 5 und 9 ausgewählt.
P:nth-of-type(3n) (...)
...
Dieser Absatz wird ausgewählt
...
Dieser Absatz wird ausgewählt
Wie bei den Pseudoklassen :nth-child(n) und :nth-last-child(n) besteht der Hauptunterschied zwischen :nth-of-type(n) und :nth-last-of-type(n) darin dass :nth-of-type(n) Elemente vom Anfang des Dokumentbaums zählt und :nth-last-of-type(n) Elemente vom Ende des Dokumentbaums zählt.
Mit der Pseudoklasse :nth-last-of-type(n) können wir einen Selektor p:nth-last-of-type(2n+1) schreiben, der jeden zweiten Absatz ab dem Ende des übergeordneten Elements angibt, beginnend mit der letzte Absatz. Hier werden die Absätze der Zeilen 4, 7 und 9 ausgewählt.
P:nth-last-of-type(2n+1) (...)
...
Dieser Absatz wird ausgewählt
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Pseudoklasse:Ziel
Die Pseudoklasse :target wird zum Formatieren von Elementen verwendet, wenn der Wert des id-Attributs mit dem URI-Fragmentzeiger übereinstimmt. Dieser Teil des URI wird anhand des Hash-Zeichens (#) und dessen, was unmittelbar darauf folgt, erkannt. Die Adresse http://example.com/index.html#hello enthält einen Hallo-Zeiger. Wenn es beispielsweise mit dem Wert des id-Attributs eines Elements auf der Seite übereinstimmt,
Pseudoklasse:leer
Mit der Pseudoklasse :empty können Sie Elemente auswählen, die keine untergeordneten Elemente oder Text enthalten. Kommentare, Verarbeitungsanweisungen und leerer Text gelten nicht als untergeordnete Elemente und werden nicht als solche behandelt.
Die Verwendung der Pseudoklasse div:empty bestimmt
Keine Kinder oder Text. Unten ausgewählt in den Zeilen 2 und 3, da diese völlig leer sind. Auch wenn der zweite Enthält einen Kommentar, wird er nicht als untergeordnetes Element betrachtet und daher verlassen leer. Erste enthält Text, das dritte enthält ein einzelnes Leerzeichen und das letzte enthält ein untergeordnetes Element Daher sind sie alle ausgeschlossen und nicht ausgewählt.Div:leer (...)
Hallo
Pseudoklasse:nicht
Die Pseudoklasse :not(x) nimmt ein Argument und filtert die getroffene Auswahl. Der p:not(.intro)-Selektor verwendet die :not-Pseudoklasse, um jeden Absatz ohne eine Intro-Klasse zu definieren. Das Absatzelement wird am Anfang des Selektors definiert, gefolgt von der Pseudoklasse :not(x). In den Klammern befindet sich ein Negationsselektor, in diesem Fall die Intro-Klasse.
Unten verwenden sowohl die Selektoren div:not(.awesome) als auch :not(div) die Pseudoklasse :not(x). Der Selektor div:not(.awesome) definiert alle
ohne class awesome , während der :not(div)-Selektor ein Element angibt, das es nicht ist . Als Ergebnis wird es ausgewählt in Zeile 1 sowie zwei Abschnitte in den Zeilen 3 und 4. Das einzige nicht ausgewählte Element ist mit der awesome-Klasse, da sie über zwei Pseudoklassen hinausgeht.Div:not(.awesome) (...) :not(div) (...)
Dieses Div wird ausgewählt
...
Dieser Abschnitt wird ausgewählt. Dieser Abschnitt wird ausgewähltBeispiel mit Pseudoklassen
Nummer
Spieler
Position
Höhe
Gewicht
8
Marco Belinelli
G
6-5
195
5
Carlos Boozer
F
6-9
266
...
Tabelle ( border-collapse: separat; border-spacing: 0; width: 100 %; ) th, td ( padding: 6px 15px; ) th ( background: #42444e; color: #fff; text-align: left; ) tr :first-child th:first-child ( border-top-left-radius: 6px; ) tr:first-child th:last-child ( border-top-right-radius: 6px; ) td ( border-right: 1px solid #c6c9cc; border-bottom: 1px solid #c6c9cc; ) td:first-child ( border-left: 1px solid #c6c9cc; ) tr:nth-child(even) td ( Hintergrund: #eaeaed; ) tr:last- child td:first-child ( border-bottom-left-radius: 6px; ) tr:last-child td:last-child ( border-bottom-right-radius: 6px; )
Übersicht über Pseudoklassen Beispiel Name Beschreibung
eine Verbindung Link-Pseudoklasse Wählt Links aus, die vom Benutzer nicht angezeigt wurden.
a:besucht Link-Pseudoklasse Wählt Links aus, die vom Benutzer besucht wurden.
a:schweben Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer mit der Maus darüber fährt.
a:aktiv Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer es aktiviert.
ein Fokus Action-Pseudoklasse Wählt ein Element aus, wenn der Benutzer es zu einem Aufmerksamkeitspunkt gemacht hat.
Eingabe: aktiviert Staatliche Pseudoklasse Wählt ein Element in einem zugänglichen Zustand aus.
Eingabe: deaktiviert Staatliche Pseudoklasse Wählt über das Attribut „disabled“ ein Element in einem deaktivierten Zustand aus.
Eingabe: überprüft Staatliche Pseudoklasse Wählt ein aktiviertes Kontrollkästchen oder Optionsfeld aus.
Eingabe: unbestimmt Staatliche Pseudoklasse Wählt ein Kontrollkästchen oder Optionsfeld aus, das nicht aktiviert oder deaktiviert war, sodass es in einem undefinierten Zustand verbleibt.
li:erstes Kind Strukturelle Pseudoklasse Wählt das erste Element im übergeordneten Element aus.
li:last-child Strukturelle Pseudoklasse Wählt das letzte Element im übergeordneten Element aus.
div:only-child Strukturelle Pseudoklasse Wählt ein einzelnes Element im übergeordneten Element aus.
p:erster Typ Strukturelle Pseudoklasse Wählt das erste Element seines Typs im übergeordneten Element aus.
p:last-of-type Strukturelle Pseudoklasse Wählt das letzte Element seines Typs im übergeordneten Element aus.
img:only-of-type Strukturelle Pseudoklasse Wählt das einzige Element seines Typs im übergeordneten Element aus.
li:nth-child(2n+3) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Anfang des Dokumentbaums an.
li:nth-last-child(3n+2) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Ende des Dokumentbaums an.
p:nth-of-type(3n) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Anfang des Dokumentbaums an.
p:nth-last-of-type(2n+1) Strukturelle Pseudoklasse Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Ende des Dokumentbaums an.
Abschnitt:Ziel Pseudoklasse:Ziel Wählt ein Element aus, dessen ID-Attributwert mit der URI-Fragment-ID übereinstimmt.
div:leer Pseudoklasse:leer Wählt ein Element aus, das keine untergeordneten Elemente oder Text enthält.
div:not(.awesome) Pseudoklasse:nicht Wählt ein Element aus, das nicht durch das deklarierte Argument dargestellt wird.
Pseudoelemente
Pseudoelemente sind dynamische Elemente, die im Dokumentbaum nicht vorhanden sind. Wenn sie mit Selektoren verwendet werden, erzeugen diese Pseudoelemente eindeutige Teile der Seite, die gestaltet werden können. Ein wichtiger Punkt ist, dass in einem Selektor jeweils nur ein Pseudoelement verwendet werden kann.
Text-Pseudoelemente
Die ersten implementierten Pseudoelemente waren die Pseudoelemente :first-letter und :first-line text. Das Pseudoelement :first-letter gibt den ersten Textbuchstaben innerhalb eines Elements an, während :first-line die erste Textzeile innerhalb eines Elements angibt.
In der Demo unten ist der erste Buchstabe eines Absatzes mit der Klasse alpha auf eine große Schriftgröße und -farbe eingestellt, ebenso wie die erste Zeile eines Absatzes mit der Klasse bravo . Diese Auswahl erfolgt mithilfe der Pseudoklassen :first-letter bzw. :first-line text.
Alpha:first-letter, .bravo:first-line ( Farbe: #ff7b29; Schriftgröße: 18px; )
Lorem ipsum dolor...
Ganzzahl eget enim...
Demonstration von Textpseudoelementen
Durch Pseudoelemente generierter Inhalt
Die Pseudoelemente :before und :after erstellen neue Inline-Pseudoelemente nur innerhalb des ausgewählten Elements. Am häufigsten werden diese Pseudoelemente in Kombination mit der Content-Eigenschaft verwendet, um der Seite geringfügige Informationen hinzuzufügen. Dies ist jedoch nicht immer der Fall. Durch die zusätzliche Verwendung dieser Pseudoelemente können Benutzeroberflächenkomponenten zu einer Seite hinzugefügt werden, ohne dass das Dokument mit nicht-semantischen Elementen überladen werden muss.
Das Pseudoelement :before erstellt ein Pseudoelement vor oder vor dem ausgewählten Element, während :after ein Pseudoelement nach oder hinter dem ausgewählten Element erstellt. Diese Pseudoelemente erscheinen innerhalb des ausgewählten Elements verschachtelt und nicht außerhalb. Im Folgenden wird das Pseudoelement :after verwendet, um den href-Attributwert von Links in Klammern nach dem Link selbst anzuzeigen. Diese Informationen sind nützlich, aber letztendlich unterstützt nicht jeder Browser diese Pseudoelemente.
A:after ( Farbe: #9799a7; Inhalt: " (" attr(href) ")"; Schriftgröße: 11px; )
Suchen Sie im Internet Erfahren Sie, wie Sie eine Website erstellen
Demonstration von durch Inhalte generierten Pseudoelementen
Pseudoelement::selection
Das Pseudoelement ::selection definiert den vom Benutzer ausgewählten Teil des Dokuments. Die Auswahl kann dann gestylt werden, allerdings nur mit den Eigenschaften color , background , background-color und text-shadow. Es ist zu beachten, dass die Eigenschaft „Hintergrundbild“ ignoriert wird. Allerdings kann die Abkürzungseigenschaft „Hintergrund“ zum Hinzufügen von Farbe verwendet werden, alle Bilder werden jedoch ignoriert.
Doppelpunkt (:) und Doppelpunkt (::)
Das Pseudoelement ::selection wurde CSS3 hinzugefügt, um Pseudoklassen von Pseudoelementen zu trennen, indem der Doppelpunkt verwendet wurde, der Pseudoelementen hinzugefügt wurde. Glücklicherweise unterstützen die meisten Browser sowohl einzelne als auch doppelte Doppelpunktwerte für Pseudoelemente, aber das ::selection-Pseudoelement muss immer mit einem Doppelpunkt beginnen.
Wenn Sie in der Demo unten einen beliebigen Text auswählen, wird der Hintergrund dank des Pseudoelements ::selection orange. Schauen Sie sich auch ::-moz-selection an. Das Mozilla-Präfix wurde hinzugefügt, um eine bessere Unterstützung für alle Browser zu gewährleisten.
::-moz-selection (Hintergrund: #ff7b29;) ::selection (Hintergrund: #ff7b29;)
Demonstration von Pseudoelementen
Pfeil (Hintergrund: #2db34a; Farbe: #fff; Anzeige: Inline-Block; Höhe: 30 Pixel; Zeilenhöhe: 30 Pixel; Polsterung: 0 12 Pixel; Position: relativ; Textdekoration: keine; ) .arrow:before, . Pfeil: nach ( Inhalt: ""; Höhe: 0; Position: absolut; Breite: 0; ) .pfeil: vor ( Rand unten: 15 Pixel fest #2db34a; Rand links: 15 Pixel fest transparent; Rand oben: 15 Pixel fest #2db34a; links: -15px; ) .arrow:after ( Rand unten: 15 Pixel durchgehend transparent; Rand links: 15 Pixel durchgehend #2db34a; Rand oben: 15 Pixel durchgehend transparent; rechts: -15px; ) .arrow:hover ( Hintergrund: #ff7b29; ) .arrow:hover:before ( border-bottom: 15px solid #ff7b29; border-top: 15px solid #ff7b29; ) .arrow:hover:after ( border-left: 15px solid #ff7b29; )
Unterstützung für die Browserauswahl
Diese Selektoren bieten zwar unterschiedliche Funktionen und die Möglichkeit, einige wirklich erstaunliche Dinge damit zu tun mit CSS, leiden sie manchmal unter einer schlechten Browserunterstützung. Bevor Sie etwas zu Kritisches tun, überprüfen Sie die Selektoren, die Sie in den gängigsten Browsern verwenden möchten, und entscheiden Sie dann, ob sie für Sie geeignet sind oder nicht.
CSS3.info bietet ein CSS3-Selektortesttool, das Sie darüber informiert, welche Selektoren vom Browser unterstützt werden. Es ist auch eine gute Idee, direkt die Unterstützung Ihres Browsers zu überprüfen.
Auf Smashing Magazine
Lesen Sie auch
Nachfolgend finden Sie die Überschriften, aus denen die Zeilen 3 und 5 ausgewählt werden.
Artikel h2 (...)
...
Dieser Titel wird ausgewählt
Dieser Titel wird ausgewählt
Direkte Kinderauswahl
Manchmal gehen untergeordnete Selektoren zu weit und wählen mehr als gewünscht aus. Manchmal müssen nur die direkten untergeordneten Elemente eines übergeordneten Elements ausgewählt werden und nicht jede Instanz eines Elements, das tief in einem Vorfahren verschachtelt ist. In diesem Fall kann ein direkter untergeordneter Selektor verwendet werden, indem im Selektor ein Größer-als-Zeichen (>) zwischen dem übergeordneten und dem untergeordneten Element platziert wird.
Beispielsweise ist „article > p“ nur dann ein direkter untergeordneter Selektor, wenn die Elemente
Befindet sich direkt im Element
Unten ist der Absatz in Zeile 3 das einzige direkte untergeordnete Element seines übergeordneten Elements
Artikel > p (...)
Dieser Absatz wird ausgewählt
Verwandte Selektoren
Zu wissen, wie man untergeordnete Elemente auswählt, ist größtenteils nützlich und wird häufig verwendet. Möglicherweise müssen jedoch auch Geschwisterelemente ausgewählt werden, also Elemente, die einen gemeinsamen Vorfahren haben. Eine solche Auswahl kann mithilfe eines gemeinsamen Geschwisterselektors und benachbarter Selektoren erfolgen.
Generische Geschwisterauswahl
Mit der allgemeinen Geschwisterauswahl können Sie Elemente auswählen, die auf der Grundlage ihrer Geschwister ausgewählt werden sollen, d. h. derjenigen, die das gleiche gemeinsame übergeordnete Element haben. Sie werden durch die Verwendung des Tilde-Zeichens (~) zwischen zwei Elementen innerhalb eines Selektors erstellt. Das erste Element gibt an, dass das zweite Element ein gleichgeordnetes Element sein muss und beide das gleiche übergeordnete Element haben müssen.
Der h2~p-Selektor ist ein allgemeiner Geschwisterselektor, der nach Elementen sucht
Die nach irgendwelchen Elementen kommen
im selben Elternteil. Zum Element
Wurde ausgewählt, muss es nach jedem Element stehen
.
Die Absätze in den Zeilen 5 und 9 werden ausgewählt, weil sie nach einer Überschrift im Dokumentbaum stehen und dasselbe übergeordnete Element wie eine zugehörige Überschrift haben.
H2 ~ p(...)
...
Dieser Absatz wird ausgewählt
Dieser Absatz wird ausgewählt
Angrenzende Selektoren
Manchmal ist es wünschenswert, etwas mehr Kontrolle zu haben, einschließlich der Möglichkeit, ein Geschwisterkind auszuwählen, das einem anderen Geschwisterkind direkt folgt. Ein benachbarter Selektor wählt nur Geschwisterelemente aus, die unmittelbar auf ein anderes Geschwisterelement folgen. Anstelle eines Tilde-Zeichens, wie es bei einem gemeinsamen Geschwisterselektor der Fall ist, verwendet ein Geschwisterselektor ein Pluszeichen (+) zwischen zwei Elementen im Selektor. Auch hier gibt das erste Element an, dass das zweite Element unmittelbar folgen und mit ihm in Beziehung stehen muss und dass beide Elemente dasselbe übergeordnete Element haben müssen.
Werfen wir einen Blick auf den benachbarten Selektor h2 + p. Es werden nur Elemente ausgewählt
Kommt unmittelbar nach den Elementen
. Beide müssen außerdem das gleiche übergeordnete Element haben.
Der Absatz in Zeile 5 wird ausgewählt, da er unmittelbar auf die entsprechende Überschrift folgt und sie denselben übergeordneten Absatz haben.
H2 + p(...)
...
Dieser Absatz wird ausgewählt
Beispiel für benachbarte Selektoren
Input ( display: none; ) label, ul ( border: 1px solid #cecfd5; border-radius: 6px; ) label ( color: #0087cc; Cursor: Zeiger; display: inline-block; Schriftgröße: 18px; padding: 5px 9px; Übergang: alle .15s easy; ) label:hover ( color: #ff7b29; ) input:checked + label ( box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); color: #9799a7 ; ) nav ( max-height: 0; Überlauf: versteckt; Übergang: alle .15s easy; ) input:checked ~ nav ( max-height: 500px; ) ul ( list-style: none; margin: 8px 0 0 0; padding: 0; width: 100px; ) li ( border-bottom: 1px solid #cecfd5; ) li:last-child ( border-bottom: 0; ) a ( color: #0087cc; display: block; padding: 6px 12px; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; )
Attributselektoren
Einige der zuvor besprochenen generischen Selektoren können auch als Attributselektoren definiert werden, bei denen ein Element basierend auf einem Klassen- oder ID-Wert ausgewählt wird. Diese Selektoren Klassenattribute und id sind weit verbreitet und ziemlich mächtig, aber das ist erst der Anfang. In den letzten Jahren sind weitere Attributselektoren entstanden, insbesondere mit CSS3, die große Fortschritte gemacht haben. Elemente können nun basierend darauf ausgewählt werden, ob ein Attribut vorhanden ist und welchen Wert es enthält.
Attributpräsenzselektor
Der erste Attributselektor identifiziert ein Element basierend darauf, ob das Attribut aktiviert ist oder nicht, unabhängig von seinem tatsächlichen Wert. Um ein Element basierend darauf auszuwählen, ob ein Attribut vorhanden ist oder nicht, geben Sie einfach den Attributnamen ein eckige Klammern() im Selektor. Nach jedem Typ- oder Klassenselektor können eckige Klammern stehen, abhängig vom gewünschten Grad an Spezifität.
A (...)
Attributselektor =
Um ein Element mit einem bestimmten und präzisen Wert zu identifizieren, kann derselbe Selektor wie zuvor verwendet werden, aber dieses Mal steht der gewünschte Wert in eckigen Klammern hinter dem Attributnamen. Innerhalb der eckigen Klammern sollte nach dem Gleichheitszeichen (=) ein Attributname stehen, wobei in den Anführungszeichen der gewünschte Attributwert steht.
A (...)
Attributselektor *=
Wenn wir versuchen, ein Element zu finden, das auf einem Teil eines Attributwerts basiert, aber keine exakte Übereinstimmung aufweist, kann das Sternchen (*) in den eckigen Klammern des Selektors verwendet werden. Das Sternchen muss unmittelbar nach dem Attributnamen und unmittelbar vor dem Gleichheitszeichen stehen. Das bedeutet, dass der folgende Wert nur im Attributwert erscheinen oder darin enthalten sein muss.
A (...)
Attributselektor ^=
Zusätzlich zur Auswahl eines Elements basierend auf dem Attributwert, der den angegebenen Text enthält, können Sie ein Element auch basierend darauf auswählen, wo der Attributwert beginnt. Die Verwendung des Zirkumflexzeichens (^) in Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen bedeutet, dass der Attributwert mit dem angegebenen Text beginnen muss.
A (...)
...
Attributselektor $=
Das Gegenteil des vorherigen Selektors ist ein Attributselektor, bei dem der Wert mit etwas Text endet. Anstelle des Zeichens ^ wird in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein Dollarzeichen ($) verwendet. Die Verwendung eines Dollarzeichens bedeutet, dass der Attributwert mit dem angegebenen Text enden muss.
A (...)
Attributselektor ~=
Manchmal können Attributwerte voneinander beabstandet sein, sodass nur eines der Wörter zum Erstellen einer Auswahl geeignet sein muss. In diesem Fall bedeutet die Verwendung des Tilde-Zeichens (~) in den Selektorklammern zwischen dem Attributnamen und dem Gleichheitszeichen, dass der Attributwert durch Leerzeichen getrennt ist, von denen ein Wort genau mit dem angegebenen Wert übereinstimmt.
A (...)
Attributselektor |=
Wenn der Attributwert durch Bindestriche statt durch Leerzeichen getrennt wird, kann in den Auswahlklammern zwischen dem Attributnamen und dem Gleichheitszeichen ein vertikales Linienzeichen (|) verwendet werden. Eine vertikale Linie zeigt an, dass der Attributwert durch einen Bindestrich getrennt werden kann, Wörter jedoch mit dem angegebenen Wert beginnen müssen.
A (...)
Beispiel für Attributselektoren
Ul ( Listenstil: keine; Rand: 0; Polsterung: 0; ) a ( Hintergrundposition: 0 50 %; Hintergrundwiederholung: keine Wiederholung; Farbe: #0087cc; Polsterung links: 22 Pixel; Textdekoration: keine; ) a:hover ( Farbe: #ff7b29; ) a ( Hintergrundbild: url("images/pdf.png"); ) a ( Hintergrundbild: url("images/doc.png"); ) a ( Hintergrundbild: url("images/image.png"); ) a ( Hintergrundbild: url("images/audio.png"); ) a ( Hintergrundbild: url("images/video.png" ); )
Beispiel | Name | Beschreibung |
---|---|---|
A | Attributpräsenzselektor | Wählt ein Element aus, wenn das angegebene Attribut vorhanden ist. |
A | Attributselektor = | Wählt ein Element aus, wenn der Wert dieses Attributs genau mit dem angegebenen übereinstimmt. |
A | Attributselektor *= | Wählt ein Element aus, wenn der Wert dieses Attributs mindestens eine Instanz des angegebenen Textes enthält. |
A | Attributselektor ^= | Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text beginnt. |
A | Attributselektor $= | Wählt ein Element aus, wenn der Wert dieses Attributs mit dem angegebenen Text endet. |
A | Attributselektor ~= | Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch Leerzeichen getrennt ist und genau mit einem einzelnen angegebenen Wort übereinstimmt. |
A | Attributselektor |= | Wählt ein Element aus, wenn der Wert des angegebenen Attributs durch einen Bindestrich getrennt ist und mit dem angegebenen Wort beginnt. |
Pseudoklassen
Pseudoklassen ähneln regulären Klassen in HTML, werden jedoch nicht direkt im Markup angegeben, sondern dynamisch als Ergebnis von Benutzeraktionen oder der Dokumentstruktur aufgefüllt. Die häufigste Pseudoklasse, die Sie wahrscheinlich schon einmal gesehen haben, ist :hover. Beachten Sie, dass diese Pseudoklasse wie alle anderen Pseudoklassen mit einem Doppelpunkt (:) beginnt.
Pseudoklassen verknüpfen
Einige grundlegende Pseudoklassen umfassen zwei Pseudoklassen, die sich um Referenzen drehen. Dies sind die Pseudoklassen :link und :visited und sie bestimmen, ob ein Link besucht wurde oder nicht. Um einen Link zu formatieren, der noch nicht besucht wurde, kommt die Pseudoklasse :link ins Spiel, und die Pseudoklasse :visited stilisiert Links, die der Benutzer bereits besucht hat, basierend auf seinem Browserverlauf.
A:link (...) a:besucht (...)
Pseudoklassen für Benutzeraktionen
Basierend auf Benutzeraktionen können verschiedene Pseudoklassen dynamisch auf ein Element angewendet werden, darunter :hover, :active und :focus. Die Pseudoklasse :hover wird auf ein Element angewendet, wenn der Benutzer den Cursor über das Element bewegt, was am häufigsten bei Links verwendet wird. Die Pseudoklasse:active wird auf ein Element angewendet, wenn der Benutzer das Element aktiviert, beispielsweise indem er darauf klickt. Schließlich wird die Pseudoklasse:focus auf ein Element angewendet, wenn der Benutzer das Element zum Fokus der Seite gemacht hat, häufig durch Verwendung der Tab-Taste beim Wechseln von einem Element zum anderen.
A:hover (...) a:aktiv (...) a:fokus (...)
Schnittstellenstatus-Pseudoklassen
Wie Links gibt es auch einige Pseudoklassen, die mit dem Status von UI-Elementen verknüpft sind, insbesondere innerhalb von Formularen. Zu diesen Pseudoklassen gehören :enabled, :disabled, :checked und :indeterminate.
Die Pseudoklasse „:enabled“ wählt Felder aus, die aktiviert und zur Verwendung verfügbar sind, und die Pseudoklasse „:disabled“ wählt Felder aus, an die ein „disabled“-Attribut gebunden ist. Viele Browser blenden solche deaktivierten Felder standardmäßig aus, um Benutzer darüber zu informieren, dass das Feld nicht für die Interaktion verfügbar ist. Ihr Stil kann jedoch über die Pseudoklasse :disabled nach Wunsch angepasst werden.
Eingabe:aktiviert (...) Eingabe:deaktiviert (...)
Die letzten beiden Schnittstellenstatuselemente, die Pseudoklassen :checked und :indeterminate, drehen sich um Kontrollkästchen und Optionsfelder. Die Pseudoklasse :checked wählt Kontrollkästchen oder Optionsfelder aus, von denen Sie erwarten, dass sie aktiviert sind. Wenn kein Kontrollkästchen oder Optionsfeld aktiviert oder ausgewählt ist, befindet es sich in einem unbestimmten Zustand, für den die Pseudoklasse :indeterminate verwendet werden kann, um auf ähnliche Elemente abzuzielen.
Eingabe:geprüft (...) Eingabe:unbestimmt (...)
Pseudoklassen von Struktur und Position
Mehrere Pseudoklassen beziehen sich auf Struktur und Position basierend darauf, wo Elemente im Dokumentbaum gefunden werden. Diese Pseudoklassen gibt es in verschiedenen Formen und Größen, von denen jede ihre eigene, einzigartige Funktionalität bietet. Einige Pseudoklassen gibt es schon länger als andere, aber CSS3 brachte eine ganze Reihe neuer Pseudoklassen mit sich, die die bestehenden ergänzen.
:erstes-Kind, :letztes-Kind und :nur-Kind
Die ersten strukturellen Pseudoklassen, auf die Sie wahrscheinlich stoßen werden, sind :first-child , :last-child und :only-child . Die Pseudoklasse :first-child wählt ein Element aus, wenn es das erste untergeordnete Element im übergeordneten Element ist, während die Pseudoklasse :last-child das Element auswählt, wenn es das letzte untergeordnete Element im übergeordneten Element ist. Diese Pseudoklassen eignen sich ideal zum Auswählen des ersten oder letzten Elements in einer Liste usw. Darüber hinaus wählt :only-child ein Element aus, wenn es das einzige Element im übergeordneten Element ist. Alternativ kann die :only-child-Pseudoklasse als :first-child:last-child geschrieben werden, allerdings hat :only-child eine geringere Spezifität.
Hier gibt der Selektor li:first-child das erste Listenelement an, während li:last-child das letzte Listenelement angibt und somit die Zeilen 2 und 10 auswählt. Der Selektor div:only-child sucht nach
Li:erstes-Kind (...) li:letztes-Kind (...) div:nur-Kind (...)
:first-of-type, :last-of-type und :only-of-type
Das Finden des ersten, letzten und einzigen Kindes eines Elternteils ist sehr nützlich und oft auch alles, was erforderlich ist. Manchmal möchten Sie jedoch nur das erste, letzte oder einzige untergeordnete Element eines bestimmten Elementtyps auswählen. Sie möchten beispielsweise nur den ersten oder letzten Absatz eines Artikels oder möglicherweise nur ein Bild innerhalb eines Artikels auswählen. Glücklicherweise helfen dabei die Pseudoklassen :first-of-type, :last-of-type und :only-of-type.
Die Pseudoklasse „:first-of-type“ wählt das erste Element ihres Typs innerhalb der übergeordneten Klasse aus, während die Pseudoklasse „:last-of-type“ das letzte Element dieses Typs innerhalb der übergeordneten Klasse auswählt. Die Pseudoklasse :only-of-type wählt ein Element aus, wenn es das einzige seines Typs im übergeordneten Element ist.
Im folgenden Beispiel wählen die Pseudoklassen p:first-of-type und p:last-of-type jeweils den ersten und letzten Absatz im Artikel aus, unabhängig davon, ob es sich tatsächlich um die ersten oder letzten untergeordneten Absätze handelt der Artikel. Die Zeilen 3 und 6 werden von diesen Selektoren ausgewählt. Der img:only-of-type-Selektor gibt das Bild in Zeile 5 als einziges Bild an, das im Artikel erscheint.
P:first-of-type (...) p:last-of-type (...) img:only-of-type (...)
Dieser Absatz wird ausgewählt Dieser Absatz wird ausgewählt...
...
Schließlich gibt es mehrere Struktur- und Positions-Pseudoklassen, die Elemente basierend auf Zahlen oder algebraischen Ausdrücken auswählen. Zu diesen Pseudoklassen gehören :nth-child(n) , :nth-last-child(n) , :nth-of-type(n) und :nth-last-of-type(n) . Alle diese eindeutigen Pseudoklassen beginnen mit dem n-ten und nehmen eine Zahl oder einen Ausdruck in Klammern an, der durch das Symbol n bezeichnet wird.
Die Zahl oder der Ausdruck in Klammern gibt genau an, welches Element bzw. welche Elemente ausgewählt werden sollen. Durch die Verwendung einer bestimmten Zahl wird das einzelne Element vom Anfang oder Ende des Dokumentbaums berechnet und dann ausgewählt. Durch die Verwendung eines Ausdrucks wird der Satz von Elementen vom Anfang oder Ende des Dokumentbaums ausgewertet und eine Gruppe oder Wiederholung davon ausgewählt.
Verwendung von Zahlen und Ausdrücken in Pseudoklassen
Wie bereits erwähnt, wird bei Verwendung einer bestimmten Zahl in einer Pseudoklasse vom Anfang oder Ende des Dokumentbaums aus gerechnet und ein passendes Element ausgewählt. Beispielsweise wählt der Selektor li:nth-child(4) das vierte Element in der Liste aus. Die Zählung beginnt beim ersten Listenelement und erhöht sich für jedes Listenelement um eins, bis schließlich das vierte Element gefunden und ausgewählt wird. Bei der Angabe einer bestimmten Zahl muss diese positiv sein.
Ausdrücke für Pseudoklassen liegen im Format an, an+b, an-b, n+b, -n+b und -an+b vor. Der gleiche Ausdruck kann übersetzt und gelesen werden als (a×n)±b. Die Variable a gibt den Faktor an, mit dem die Elemente berechnet werden, während die Variable b angibt, wo die Zählung beginnt oder stattfindet.
Beispielsweise gibt der Selektor li:nth-child(3n) jedes dritte Element eines Listenelements an. Die Verwendung dieses Ausdrucks entspricht 3x0, 3x1, 3x2 usw. Wie Sie sehen können, wählen die Ergebnisse dieses Ausdrucks das dritte, sechste und jedes Element aus, das ein Vielfaches von drei ist.
Darüber hinaus können die Schlüsselwörter „odd“ und „even“ als Werte verwendet werden. Wie zu erwarten, wählen sie ungerade bzw. gerade Elemente aus. Wenn die Schlüsselwörter nicht attraktiv sind, wählt der Ausdruck 2n+1 alle ungeraden Elemente aus, und der Ausdruck 2n wählt alle geraden Elemente aus.
Der Selektor li:nth-child(4n+7) definiert jedes vierte Element in der Liste, beginnend mit dem siebten Element. Auch hier ist die Verwendung dieses Ausdrucks äquivalent zu (4x0)+7, (4x1)+7, (4x2)+7 usw. Die Ergebnisse dieses Ausdrucks wählen das siebte, elfte, fünfzehnte und jedes vierte Element aus.
Bei Verwendung von n ohne führende Zahl wird a als 1 ausgewertet. Der Selektor li:nth-child(n+5) wählt jedes Listenelement beginnend mit dem fünften aus, wobei die ersten vier Listenelemente nicht ausgewählt werden. Im Ausdruck wird dies als (1×0)+5, (1×1)+5, (1×2)+5 usw. analysiert.
Mit negativen Zahlen können komplexere Dinge erstellt werden. Beispielsweise zählt der Selektor li:nth-child(6n-4) jedes sechste Listenelement, beginnend bei -4, und wählt das zweite, achte, vierzehnte Listenelement usw. aus. Derselbe Selektor li:nth-child(6n-4) kann auch als li:nth-child(6n+2) geschrieben werden, ohne die negative b-Variable zu verwenden.
Auf eine negative Variable oder ein negatives Argument n muss eine positive Variable b folgen. Wenn dem Argument n eine negative Variable a vorangestellt ist, bestimmt die Variable b, wie hoch die Anzahl erreicht wird. Beispielsweise wählt der Selektor li:nth-child(-3n+12) jedes dritte Listenelement in den ersten zwölf Elementen aus. Der Selektor li:nth-child(-n+9) wählt die ersten neun Elemente in der Liste aus, da die Variable a ohne deklarierte Zahl standardmäßig den Wert -1 hat.
:nth-child(n) und :nth-last-child(n)
Mit einem allgemeinen Verständnis der Funktionsweise von Zahlen und Ausdrücken in Pseudoklassen werfen wir einen Blick auf nützliche Pseudoklassen, in denen diese Zahlen und Ausdrücke verwendet werden können. Die ersten davon sind :nth-child(n) und :nth-last -child(n) . Diese Pseudoklassen funktionieren ähnlich wie :first-child und :last-child , indem sie alle Elemente im übergeordneten Element untersuchen und zählen und nur ein bestimmtes Element auswählen. :nth-child(n) funktioniert vom Anfang des Dokumentbaums und :nth-last-child(n) funktioniert vom Ende des Dokumentbaums.
Werfen wir mithilfe der Pseudoklasse :nth-child(n) einen Blick auf den Selektor li:nth-child(3n). Es definiert jedes dritte Listenelement, daher werden die Zeilen 4 und 7 ausgewählt.
Li:nth-child(3n) (…)
Die Verwendung eines anderen Ausdrucks in der Pseudoklasse :nth-child(n) führt zu einer anderen Auswahl. Der Selektor li:nth-child(2n+3) definiert beispielsweise jedes zweite Element in der Liste, beginnend mit dem dritten. Als Ergebnis werden die Elemente in den Zeilen 4 und 6 ausgewählt.
Li:nth-child(2n+3) (...)
Wenn Sie den Ausdruck erneut ändern, diesmal mit einem negativen Wert, erhalten Sie eine neue Auswahl. Hier gibt der Selektor li:nth-child(-n+4) die ersten vier Elemente der Liste an, während die übrigen Elemente nicht ausgewählt werden, sodass die Zeilen 1 bis 4 ausgewählt werden.
Li:nth-child(-n+4) (...)
Das Hinzufügen einer negativen Zahl vor n ändert die Auswahl erneut. Hier definiert der Selektor li:nth-child(-2n+5) jedes zweite Listenelement aus den ersten fünf Elementen, sodass die Elemente in den Zeilen 2, 4 und 6 ausgewählt werden.
Li:nth-child(-2n+5) (...)
Durch Ändern der Pseudoklasse :nth-child(n) in :nth-last-child(n) wird die Zählrichtung geändert, sodass die Zählung am Ende des Dokumentbaums beginnt. Der Selektor li:nth-last-child(3n+2) gibt beispielsweise jedes dritte Listenelement an, beginnend vom zweiten bis zum letzten, und zwar in Richtung des Anfangs der Liste. Hier werden die Listenelemente in den Zeilen 3 und 6 ausgewählt.
Li:nth-last-child(3n+2) (...)
:nth-of-type(n) und :nth-last-of-type(n)
Die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) sind :nth-child(n) und :nth-last-child(n) sehr ähnlich, aber anstelle von Zählen jedes Elements Innerhalb des übergeordneten Elements zählen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) nur Elemente ihres eigenen Typs. Wenn Sie beispielsweise Absätze in einem Artikel zählen, überspringen die Pseudoklassen :nth-of-type(n) und :nth-last-of-type(n) alle Überschriften
Durch die Verwendung der :nth-of-type(n)-Pseudoklasse im p:nth-of-type(3n)-Selektor können wir jeden dritten Absatz im übergeordneten Element definieren, unabhängig von anderen verwandten Elementen innerhalb des übergeordneten Elements. Hier werden die Absätze der Zeilen 5 und 9 ausgewählt.
P:nth-of-type(3n) (...)
Dieser Absatz wird ausgewählt Dieser Absatz wird ausgewählt...
...
Wie bei den Pseudoklassen :nth-child(n) und :nth-last-child(n) besteht der Hauptunterschied zwischen :nth-of-type(n) und :nth-last-of-type(n) darin dass :nth-of-type(n) Elemente vom Anfang des Dokumentbaums zählt und :nth-last-of-type(n) Elemente vom Ende des Dokumentbaums zählt.
Mit der Pseudoklasse :nth-last-of-type(n) können wir einen Selektor p:nth-last-of-type(2n+1) schreiben, der jeden zweiten Absatz ab dem Ende des übergeordneten Elements angibt, beginnend mit der letzte Absatz. Hier werden die Absätze der Zeilen 4, 7 und 9 ausgewählt.
P:nth-last-of-type(2n+1) (...)
Dieser Absatz wird ausgewählt Dieser Absatz wird ausgewählt Dieser Absatz wird ausgewählt...
...
Pseudoklasse:Ziel
Die Pseudoklasse :target wird zum Formatieren von Elementen verwendet, wenn der Wert des id-Attributs mit dem URI-Fragmentzeiger übereinstimmt. Dieser Teil des URI wird anhand des Hash-Zeichens (#) und dessen, was unmittelbar darauf folgt, erkannt. Die Adresse http://example.com/index.html#hello enthält einen Hallo-Zeiger. Wenn es beispielsweise mit dem Wert des id-Attributs eines Elements auf der Seite übereinstimmt,
Pseudoklasse:leer
Mit der Pseudoklasse :empty können Sie Elemente auswählen, die keine untergeordneten Elemente oder Text enthalten. Kommentare, Verarbeitungsanweisungen und leerer Text gelten nicht als untergeordnete Elemente und werden nicht als solche behandelt.
Die Verwendung der Pseudoklasse div:empty bestimmt
Div:leer (...)
Pseudoklasse:nicht
Die Pseudoklasse :not(x) nimmt ein Argument und filtert die getroffene Auswahl. Der p:not(.intro)-Selektor verwendet die :not-Pseudoklasse, um jeden Absatz ohne eine Intro-Klasse zu definieren. Das Absatzelement wird am Anfang des Selektors definiert, gefolgt von der Pseudoklasse :not(x). In den Klammern befindet sich ein Negationsselektor, in diesem Fall die Intro-Klasse.
Unten verwenden sowohl die Selektoren div:not(.awesome) als auch :not(div) die Pseudoklasse :not(x). Der Selektor div:not(.awesome) definiert alle
Div:not(.awesome) (...) :not(div) (...)
Beispiel mit Pseudoklassen
Nummer | Spieler | Position | Höhe | Gewicht |
---|---|---|---|---|
8 | Marco Belinelli | G | 6-5 | 195 |
5 | Carlos Boozer | F | 6-9 | 266 |
Tabelle ( border-collapse: separat; border-spacing: 0; width: 100 %; ) th, td ( padding: 6px 15px; ) th ( background: #42444e; color: #fff; text-align: left; ) tr :first-child th:first-child ( border-top-left-radius: 6px; ) tr:first-child th:last-child ( border-top-right-radius: 6px; ) td ( border-right: 1px solid #c6c9cc; border-bottom: 1px solid #c6c9cc; ) td:first-child ( border-left: 1px solid #c6c9cc; ) tr:nth-child(even) td ( Hintergrund: #eaeaed; ) tr:last- child td:first-child ( border-bottom-left-radius: 6px; ) tr:last-child td:last-child ( border-bottom-right-radius: 6px; )
Beispiel | Name | Beschreibung |
---|---|---|
eine Verbindung | Link-Pseudoklasse | Wählt Links aus, die vom Benutzer nicht angezeigt wurden. |
a:besucht | Link-Pseudoklasse | Wählt Links aus, die vom Benutzer besucht wurden. |
a:schweben | Action-Pseudoklasse | Wählt ein Element aus, wenn der Benutzer mit der Maus darüber fährt. |
a:aktiv | Action-Pseudoklasse | Wählt ein Element aus, wenn der Benutzer es aktiviert. |
ein Fokus | Action-Pseudoklasse | Wählt ein Element aus, wenn der Benutzer es zu einem Aufmerksamkeitspunkt gemacht hat. |
Eingabe: aktiviert | Staatliche Pseudoklasse | Wählt ein Element in einem zugänglichen Zustand aus. |
Eingabe: deaktiviert | Staatliche Pseudoklasse | Wählt über das Attribut „disabled“ ein Element in einem deaktivierten Zustand aus. |
Eingabe: überprüft | Staatliche Pseudoklasse | Wählt ein aktiviertes Kontrollkästchen oder Optionsfeld aus. |
Eingabe: unbestimmt | Staatliche Pseudoklasse | Wählt ein Kontrollkästchen oder Optionsfeld aus, das nicht aktiviert oder deaktiviert war, sodass es in einem undefinierten Zustand verbleibt. |
li:erstes Kind | Strukturelle Pseudoklasse | Wählt das erste Element im übergeordneten Element aus. |
li:last-child | Strukturelle Pseudoklasse | Wählt das letzte Element im übergeordneten Element aus. |
div:only-child | Strukturelle Pseudoklasse | Wählt ein einzelnes Element im übergeordneten Element aus. |
p:erster Typ | Strukturelle Pseudoklasse | Wählt das erste Element seines Typs im übergeordneten Element aus. |
p:last-of-type | Strukturelle Pseudoklasse | Wählt das letzte Element seines Typs im übergeordneten Element aus. |
img:only-of-type | Strukturelle Pseudoklasse | Wählt das einzige Element seines Typs im übergeordneten Element aus. |
li:nth-child(2n+3) | Strukturelle Pseudoklasse | Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Anfang des Dokumentbaums an. |
li:nth-last-child(3n+2) | Strukturelle Pseudoklasse | Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt alle Elemente vom Ende des Dokumentbaums an. |
p:nth-of-type(3n) | Strukturelle Pseudoklasse | Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Anfang des Dokumentbaums an. |
p:nth-last-of-type(2n+1) | Strukturelle Pseudoklasse | Wählt ein Element aus, das einer bestimmten Zahl oder einem bestimmten Ausdruck entspricht, und zählt nur Elemente dieses Typs vom Ende des Dokumentbaums an. |
Abschnitt:Ziel | Pseudoklasse:Ziel | Wählt ein Element aus, dessen ID-Attributwert mit der URI-Fragment-ID übereinstimmt. |
div:leer | Pseudoklasse:leer | Wählt ein Element aus, das keine untergeordneten Elemente oder Text enthält. |
div:not(.awesome) | Pseudoklasse:nicht | Wählt ein Element aus, das nicht durch das deklarierte Argument dargestellt wird. |
Pseudoelemente
Pseudoelemente sind dynamische Elemente, die im Dokumentbaum nicht vorhanden sind. Wenn sie mit Selektoren verwendet werden, erzeugen diese Pseudoelemente eindeutige Teile der Seite, die gestaltet werden können. Ein wichtiger Punkt ist, dass in einem Selektor jeweils nur ein Pseudoelement verwendet werden kann.
Text-Pseudoelemente
Die ersten implementierten Pseudoelemente waren die Pseudoelemente :first-letter und :first-line text. Das Pseudoelement :first-letter gibt den ersten Textbuchstaben innerhalb eines Elements an, während :first-line die erste Textzeile innerhalb eines Elements angibt.
In der Demo unten ist der erste Buchstabe eines Absatzes mit der Klasse alpha auf eine große Schriftgröße und -farbe eingestellt, ebenso wie die erste Zeile eines Absatzes mit der Klasse bravo . Diese Auswahl erfolgt mithilfe der Pseudoklassen :first-letter bzw. :first-line text.
Alpha:first-letter, .bravo:first-line ( Farbe: #ff7b29; Schriftgröße: 18px; )
Lorem ipsum dolor...
Ganzzahl eget enim...
Demonstration von Textpseudoelementen
Durch Pseudoelemente generierter Inhalt
Die Pseudoelemente :before und :after erstellen neue Inline-Pseudoelemente nur innerhalb des ausgewählten Elements. Am häufigsten werden diese Pseudoelemente in Kombination mit der Content-Eigenschaft verwendet, um der Seite geringfügige Informationen hinzuzufügen. Dies ist jedoch nicht immer der Fall. Durch die zusätzliche Verwendung dieser Pseudoelemente können Benutzeroberflächenkomponenten zu einer Seite hinzugefügt werden, ohne dass das Dokument mit nicht-semantischen Elementen überladen werden muss.
Das Pseudoelement :before erstellt ein Pseudoelement vor oder vor dem ausgewählten Element, während :after ein Pseudoelement nach oder hinter dem ausgewählten Element erstellt. Diese Pseudoelemente erscheinen innerhalb des ausgewählten Elements verschachtelt und nicht außerhalb. Im Folgenden wird das Pseudoelement :after verwendet, um den href-Attributwert von Links in Klammern nach dem Link selbst anzuzeigen. Diese Informationen sind nützlich, aber letztendlich unterstützt nicht jeder Browser diese Pseudoelemente.
A:after ( Farbe: #9799a7; Inhalt: " (" attr(href) ")"; Schriftgröße: 11px; )
Suchen Sie im Internet Erfahren Sie, wie Sie eine Website erstellen
Demonstration von durch Inhalte generierten Pseudoelementen
Pseudoelement::selection
Das Pseudoelement ::selection definiert den vom Benutzer ausgewählten Teil des Dokuments. Die Auswahl kann dann gestylt werden, allerdings nur mit den Eigenschaften color , background , background-color und text-shadow. Es ist zu beachten, dass die Eigenschaft „Hintergrundbild“ ignoriert wird. Allerdings kann die Abkürzungseigenschaft „Hintergrund“ zum Hinzufügen von Farbe verwendet werden, alle Bilder werden jedoch ignoriert.
Doppelpunkt (:) und Doppelpunkt (::)
Das Pseudoelement ::selection wurde CSS3 hinzugefügt, um Pseudoklassen von Pseudoelementen zu trennen, indem der Doppelpunkt verwendet wurde, der Pseudoelementen hinzugefügt wurde. Glücklicherweise unterstützen die meisten Browser sowohl einzelne als auch doppelte Doppelpunktwerte für Pseudoelemente, aber das ::selection-Pseudoelement muss immer mit einem Doppelpunkt beginnen.
Wenn Sie in der Demo unten einen beliebigen Text auswählen, wird der Hintergrund dank des Pseudoelements ::selection orange. Schauen Sie sich auch ::-moz-selection an. Das Mozilla-Präfix wurde hinzugefügt, um eine bessere Unterstützung für alle Browser zu gewährleisten.
::-moz-selection (Hintergrund: #ff7b29;) ::selection (Hintergrund: #ff7b29;)
Demonstration von Pseudoelementen
Pfeil (Hintergrund: #2db34a; Farbe: #fff; Anzeige: Inline-Block; Höhe: 30 Pixel; Zeilenhöhe: 30 Pixel; Polsterung: 0 12 Pixel; Position: relativ; Textdekoration: keine; ) .arrow:before, . Pfeil: nach ( Inhalt: ""; Höhe: 0; Position: absolut; Breite: 0; ) .pfeil: vor ( Rand unten: 15 Pixel fest #2db34a; Rand links: 15 Pixel fest transparent; Rand oben: 15 Pixel fest #2db34a; links: -15px; ) .arrow:after ( Rand unten: 15 Pixel durchgehend transparent; Rand links: 15 Pixel durchgehend #2db34a; Rand oben: 15 Pixel durchgehend transparent; rechts: -15px; ) .arrow:hover ( Hintergrund: #ff7b29; ) .arrow:hover:before ( border-bottom: 15px solid #ff7b29; border-top: 15px solid #ff7b29; ) .arrow:hover:after ( border-left: 15px solid #ff7b29; )
Unterstützung für die Browserauswahl
Diese Selektoren bieten zwar unterschiedliche Funktionen und die Möglichkeit, einige wirklich erstaunliche Dinge damit zu tun mit CSS, leiden sie manchmal unter einer schlechten Browserunterstützung. Bevor Sie etwas zu Kritisches tun, überprüfen Sie die Selektoren, die Sie in den gängigsten Browsern verwenden möchten, und entscheiden Sie dann, ob sie für Sie geeignet sind oder nicht.
CSS3.info bietet ein CSS3-Selektortesttool, das Sie darüber informiert, welche Selektoren vom Browser unterstützt werden. Es ist auch eine gute Idee, direkt die Unterstützung Ihres Browsers zu überprüfen.
Auf Smashing Magazine