Selektoren
Eine CSS-Regel besteht im Wesentlichen aus zwei Teilen, nämlich
- einem Selektor am Anfang der Regel gefolgt von
- einer durch
;
voneinander getrennten Auflistung von Deklarationen innerhalb{ ... }
.
CSS-Regeln haben also grundlegend diesen Aufbau:
selector {
/* hier stehen die Deklarationen der Regel */
declaration1;
declaration2;
/* usw. */
}
In diesem Artikel wird es um den Selektor von CSS-Regeln gehen. Wenn eine CSS-Regel auf ein HTML-Dokument angewendet wird, dann wird anhand des Selektors die Menge der HTML-Elemente bestimmt, für die diese Regel gelten soll und für die die Deklarationen ausgewertet werden (z.B. die Schriftfarbe anpassen). Ein Selektor wirkt also wie eine Art Filter oder eine Auswahl der von dieser Regel betroffenen Elemente.
Welche konkreten Elemente durch den Selektor ausgewählt werden, lässt sich
durch den syntaktischen Aufbau des Selektors festlegen. Hierbei gibt es in CSS eine
sehr große Flexibilität. Beispiele sind konkrete Elementtypen bzw. Tags, einzelne
Elemente mit einem bestimmten id
-Attributwert, Elemente mit gewissen Werten
im class
-Attribut, usw. Wir werden hier einige wichtige Arten von Selektoren
besprechen.
Elementtyp bzw. Tagname
Der wohl einfachste und offensichtlichste Selektor besteht lediglich aus dem Namen der Elemente bzw. Tags, für die eine Regel gelten soll. Wir haben diese Art von Selektor bereits zuvor für ein paar Beispiele verwendet:
h1 {
color: red;
text-decoration: underline;
}
Mit obiger Regel werden alle <h1>
-Elemente in roter Schriftfarbe
und unterstrichen dargestellt. Diese Art von Selektor hat also
folgende Form:
elementname {
/* Deklarationen dieser Regel */
}
Für elementname
lassen sich alle im HTML-Dokument vorkommden Tagname
einsetzen. Um also z.B. die Schriftfarbe von Text in allen Paragraphen
des HTML-Dokuments in blauer Farbe erscheinen zu lassen, kann diese Regel
genutzt werden:
p {
color: blue;
}
Hier wird also der Selektor p
für alle Paragraphen des HTML-Dokuments
genutzt. Entsprechend kann für jeden anderen Elementtypen vorgegangen werden
— solange gewünscht ist, dass alle Vorkommen dieses Tags bzw. Elementtyps
eines Dokuments mit dieser Regel angepasst werden. Denn es ist zu beachten,
dass diese Art von Selektor alle Elemente eines konkreten Tags auswählt.
Andere Selektoren wirken sich dagegen nur auf bestimmte oder einzelne Elemente aus,
wie wir noch sehen werden.
Mehrere Selektoren anwenden
Es ist möglich, eine Regel für mehrere Selektoren anzuwenden, indem verschiedene Selektoren durch Kommas voneinander getrennt angegeben werden::
selector1, selector2 /* , usw. ... */ {
/* Deklarationen dieser Regel */
}
Dadurch werden alle Selektoren dieser „Auflistung“ ausgeführt und die zugehörige Regel wird auf alle ausgewählten Elemente angewandt.
Eine Erweiterung des Elementtypselektors wäre somit z.B. die Aufzählung mehrerer
Tagnamen. Dies geschieht dadurch die Auflistung gewünschter Tagnamen
durch Kommas voneinander getrennt. Dadurch wird eine Regel auf alle Elemente mehrerer Tags angewendet.
Es wäre also z.B. möglich, durch folgende Regel alle Überschriften des Typs
<h1>
, <h2>
und <h3>
gleichförmig anzupassen:
h1, h2, h3 {
color: red;
}
Bemerkung: Es können beliebige Selektoren
in solch einer „Auflistung“ enthalten sein —
auch solche, die id
- oder class
-Attributwerte
enthalten (wie unten besprochen).
id-Attributwerte
In einem HTML-Dokument sollten id
-Attributwerte eines Elements eindeutig sein bzw.
nur einmal in dieser Form im gesamten Dokument vorkommen. Um genau dieses
Element für eine CSS-Regel zu selektieren, kann ein id
-Selektor eingesetzt werden:
#idval {
/* Deklarationen dieser Regel */
}
Dieser Art von Selektor beginnt also mit #
, womit angezeigt wird, dass nun ein
id
-Attributwert folgt (hier idval
). Dieser Selektor wählt genau das bzw.
das zuerst gefundene HTML-Element aus, dass ein id
-Attribut mit diesem konkreten
Wert hat.
Angenommen, wir haben einen Link (d.h. ein a
-Element) im HTML-Dokument, der
mit einem id
-Attribut mit Wert logout
ausgestattet ist:
<a id="logout" href="actions/logout">Logout</a> ;
Dann würde folgende CSS-Regel genau dieses Element auswählen und in grüner Schriftfarbe darstellen:
#logout {
color: green;
}
Wenn bei dieser Art von Selektor nur der Wert des
id
-Attributs angegeben wird (im Beispiel #logout
), dann spielt der Elementtyp bzw. der Tagname keine Rolle.
class-Attributwerte
Mit dem Elementtypselektor können wir also ganze Mengen von Elementen auswählen
und mit dem id
-Selektor werden einzelne, bestimmte Elemente selektiert.
Beim class
-Selektor handelt es sich gewissermaßen um einen Ansatz, der einen
„Mittelweg“ dazwischen bietet. Ein class
-Selektor wählt alle Elemente aus,
die ein class
-Attribut mit einem bestimmten Wert haben. Dieser Selektor hat
folgende Form:
.classval {
/* Deklarationen dieser Regel */
}
Dieser Selektor beginnt also mit einem Punkt (.
) gefolgt von dem Wert
des Attributs class
der gewünschten HTML-Elemente.
Angenommen es gibt mehrere Elemente im HTML-Dokument, die ähnlich gestaltet werden sollten. Dazu ein Beispiel:
Hier werden also das erste und das letzte Element gewählt und mit einer
orangenen Schriftfarbe ausgestattet, da beide Elemente ein class
-Attribut
mit Wert highlight
haben. Die anderen Elemente haben kein solches Attribut.
Mit class
-Selektoren können insbesondere verschiedene Elementtypen
ausgewählt werden, wie oben zu sehen, denn es handelt sich hierbei jeweils
um ein <p>
- und ein <div>
-Element.
Position im Dokument am Beispiel von Kindelementen
Werden in einem Selektor zwei Elementtypen durch Leerzeichen voneinander getrennt angegeben:
parentelem childelem {
/* Deklarationen dieser Regel */
}
dann wird dadurch ausgedrückt, dass nur die Elemente vom Typ childelem
innerhalb
eines Elements parentelem
ausgewählt werden sollen. Hierbei spielt also
die Position der relevanten Elemente in der Hierarchie des HTML-Dokuments eine
wesentliche Rolle.
Dieses Beispiel selektiert also nur genau die <span>
-Elemente innerhalb von
<p>
-Tags.
Kombinationen von Selektoren
Gewisse Selektoren lassen sich miteinander kombinieren. So könnten
beispielsweise alle <p>
-Elemente mit einem class
-Attributwert note
ausgewählt werden:
p.note {
/* Deklarationen dieser Regel */
}
oder alle Kindelement eines Elements mit id
-Wert specialitem
mit Tagnamen
<span>
, die einen class
-Attributwert essential
haben:
#specialitem span.essential {
}
weitere Selektoren
Es gibt zahlreiche weitere Arten von Selektoren, wie z.B. vom Mozilla Developer Network (MDN) dokumentiert (opens in a new tab).