--- title: Selektoren slug: Learn/CSS/Building_blocks/Selectors translation_of: Learn/CSS/Building_blocks/Selectors translation_of_original: Web/Guide/CSS/Getting_started/Selectors original_slug: Web/Guide/CSS/Getting_started/Selektoren ---
{{ CSSTutorialTOC() }}
{{ previousPage("/de/docs/Web/Guide/CSS/Getting_Started/Kaskadierung_und_vererbung", "Kaskadierung & Vererbung")}}Das ist der fünfte Abschnitt des CSS Getting Started Tutorials. Er erklärt wie sie Styles selektiv anwenden können und wie verschiedene Arten von Selektoren verschiedene Prioritäten haben können. Sie fügen einige Attribute zu den Tags in Ihrem Beispiel-Dokument hinzu und Sie verwenden diese Attribute in Ihrem Beispielstylesheet.
CSS hat eine eigene Terminologie, die die CSS Sprache beschreibt. Früher in diesem Tutorial haben Sie eine Zeile wie die folgende geschrieben:
strong { color: red; }
In der CSS Terminologie ist die gesamte Zeile eine Regel. Diese Regel beginnt mit strong
, welches ein Selektor ist. Sie wählt aus, auf welche Elemente im DOM die Regel angewandt wird.
Der Teil innerhalb der geschwungenen Klammern ist die Deklaration.
Das Schlüsselwort color
ist eine Eigenschaft (Property) und red
is ein Wert (value).
Das Semicolon nach dem Property-Value Pair trennt es von anderen Property-Value Pairs in derselben Deklaration.
Dieser Tutorial bezeichnet einen Selektor wie strong
als einen Tag-Selektor. Die CSS Spezifikation bezeichnet es als Type-Selector.
Diese Seite vom Tutorial geht detaillierter auf die Selektoren ein, die in CSS Regeln verwendet werden können.
Zusätzlich zu Tagnamen können Werte von Attributen in Selektoren verwendet werden. Damit können Regeln spezifischer gemacht werden.
Zwei Attribute haben einen speziellen Status in CSS. Diese sind class
und id
.
Verwenden Sie das class
Attribut in einem Element, um das Element einer Klasse zuzuordnen. Der Name der Klasse ist frei wählbar. Mehrere Elemente in einem Dokument können denselben Wert für die Klasse haben.
Tippen Sie einen Punkt direkt vor dem Klassennamen im Stylesheet, um die Klasse im Selektor zu verwenden.
Verwenden Sie das id
Attribut in einem Element, um dem Elemente eine ID zuzuweisen. Der Name der ID ist frei wählbar. Die ID muss innerhalb vom Dokument eindeutig sein.
Tippen Sie eine Raute (Hash) direkt vor der ID im Styleshet, um die ID im Selektor zu verwenden.
class
Attribut und ein id
Attribute:
<p class="key" id="principal">
Der id Wert, principal
, muss innerhalb vom Dokument eindeutig, aber andere Tags Dokument dürfen denselben Klassennamen, key
, haben.
In einem CSS Stylesheet macht diese Regel alle Elemente mit der class key
grün. (Sie müssen dazu kein {{ HTMLElement("p") }} sein.)
.key { color: green; }
Diese Regel macht das eine Element mit der id principal
fettgedruckt:
#principal { font-weight: bolder; }
Wenn mehr als eine Regel auf ein Element zutreffen und dieselbe Eigenschaft spezifiziert wird, gibt CSS der Regel mit dem spezifischeren Selektor Priorität. Ein ID Selektor ist spezifischer als ein class Selektor, welcher wiederum spezifischer als ein tag Selektor ist.
Sie können Selektoren kombinieren, um einen selektiveren Selektor zu erstellen.
Der Selektor .key
zum Beispiel selektier alle Elements mit der Klasse key
. Der Selektor p.key
selektiert nur {{ HTMLElement("p") }} Elemente, die die Klasse key
haben.
Sie sind nicht auf die zwei speziellen Attribute class
und id
eingeschränkt. Mit eckigen Klammern können Sie auch andere Attribute spezifizieren. Der Selektor [type='button']
zum Beispiel selektiert alle Elemente, die ein type
Attribut mit dem Wert button
haben.
Wenn ein Stylesheet Regeln mit einem Konflikt hat und und diese gleich spezifisch sind, dann gibt CSS der Regel, die später im Stylesheet ist, Priorität.
Wenn Sie Probleme mit konfliktierenden Regeln haben, versuchen Sie eine Regel spezifischer zu machen, damit sie Priorität hat. Wenn Sie das nicht können, verschieben Sie eine der Regeln ans Ende des Stylesheet, damit sie Priorität bekommt.
Eine CSS pseudo-class ist ein Schlüsselwort, welches einem Selektor hinzugefügt wird. Damit kann ein bestimmter Zustand des selektierten Elements spezifiziert werden. {{ Cssxref(":hover") }} zum Beispiel wenden seinen Style an, wenn der Benutzer mit dem Mauszeiger über das selektierte Element fährt.
Pseudo-classes zusammen mit pseudo-elements lassen Sie eine Style für ein Element nicht nur in Relation zum Inhalt vom Document Tree sondern auch in Relation zu externen Faktoren wie den Verlauf der Navigation ({{ cssxref(":visited") }}, zum Beispiel), dem Zustand seines Inhalt (wie {{ cssxref(":checked") }} auf manchen form Elementen) oder der Position des Mauszeigers (wie {{ cssxref(":hover") }} das angibt, ob sich der Mauszeiger über dem Element befindet) anwenden. Eine vollständige Liste der Selektoren ist unter CSS3 Selectors working spec zu finden.
selector:pseudo-class { property: value; }
CSS hat einige Wege um Elemente basieren auf ihrer Bezieung zu anderen Eementen zu selektieren. Damit können Selektoren spezifischer gemacht werden.
Selektor | Selektiert |
A E |
Jedes E Element, das ein Nachfolger eines A Elements ist (das heißt: ein Kind oder ein Kind eines Kindes, etc.) |
A > E |
Jedes E Element, das ein Kind eines A Elements ist |
E:first-child |
Jedes E Element, das das erste Kind seines Parent ist |
B + E |
Jedes E Element, das das nächste Sibling eines B Elements ist (das heißt: das nächste Kind von demselben Parent) |
Über eine Kombination der selektoren können komplexe Beziehungen ausgedrückt werden.
Sie können auch das Symbol *
(asterisk) verwenden, welches "jedes Element" bedeutet.
Eine HTML Tabelle hat ein id
Attribute aber die Zeilen und Zellen haben keinen eigenen Identifier:
<table id="data-table-1"> ... <tr> <td>Prefix</td> <td>0001</td> <td>default</td> </tr> ...
Diese Regeln machen die erste Zelle jeder Zeile fettgedruckt und die zweite Zelle jeweils monospaced. Sie betreffen nur eine bestimmte Tabelle im Dokument:
#data-table-1 td:first-child { font-weight: bolder; } #data-table-1 td:first-child + td { font-family: monospace; }
Das Ergebnis sieht so aus:
|
Wenn Sie einen Selektor spezifischer machen, erhöhen Sie normalerweise seine Priorität.
Wenn Sie diese Technik anwenden, können Sie es vermeiden vielen Tags in ihrem Dokument ein class
oder ein id
Attribut zu geben. Stattdessen erledigt CSS die Arbeit.
In umfassenden Designs, bei denen Geschwindigkeit wichtig ist, können Sie ihre Stylesheets effizienter machen, indem Sie komplexe Regeln mit Beziehungen zu anderen Elementen vermeiden.
Mehr Beispiele zu Tabellen finden Sie auf der CSS Referenzseite.
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Sample document</title> <link rel="stylesheet" href="style1.css"> </head> <body> <p id="first"> <strong class="carrot">C</strong>ascading <strong class="spinach">S</strong>tyle <strong class="spinach">S</strong>heets </p> <p id="second"> <strong>C</strong>ascading <strong>S</strong>tyle <strong>S</strong>heets </p> </body> </html>
strong { color: red; } .carrot { color: orange; } .spinach { color: green; } #first { font-style: italic; }
Cascading Style Sheets |
Cascading Style Sheets |
Sie können die Zeilen in Ihrer CSS Datei neu anordnen, um zu sehen, dass die Reihenfolge keine Auswirkungen hat.
Die class Selektoren .carrot
und .spinach
haben Priorität gegenüber dem tag Selektor strong
.
Der ID Selektor #first
hat Priorität gegenüber den class und den tag Selektoren.
Cascading Style Sheets |
Cascading Style Sheets |
Cascading Style Sheets |
Cascading Style Sheets |
#second
und einer Deklaration color: blue;
wie unten dargestellt hinzu:
#second { color: blue; }Ein noch spezifischerer Selektor
p#second
funktioniert auch.p
, damit er ein Tag-Selektor ist:
p { color: blue; }
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Sample document</title> <link rel="stylesheet" href="style1.css"> </head> <body> <p>Go to our <a class="homepage" href="http://www.example.com/" title="Home page">Home page</a>.</p> </body> </html>
a.homepage:link, a.homepage:visited { padding: 1px 10px 1px 10px; color: #fff; background: #555; border-radius: 3px; border: 1px outset rgba(50,50,50,.5); font-family: georgia, serif; font-size: 14px; font-style: italic; text-decoration: none; } a.homepage:hover, a.homepage:focus, a.homepage:active { background-color: #666; }
Go to our Home page |
Mit Selektoren basierung auf Beziehungen und pseudo-classes können Sie komplexe Algorithmen mit Kaskadierung erstellen. Das ist eine gängige Technik, um zum Beispiel reine CSS Dropdown Menüs zu erstellen (die nur aus CSS ohne JavaScript bestehen). Die Essenz dieser Technik ist die Erstellung einer Regel wie die folgende:
div.menu-bar ul ul { display: none; } div.menu-bar li:hover > ul { display: block; }
Angewendet auf eine HTML Struktur wie die folgende:
<div class="menu-bar"> <ul> <li> <a href="example.html">Menu</a> <ul> <li> <a href="example.html">Link</a> </li> <li> <a class="menu-nav" href="example.html">Submenu</a> <ul> <li> <a class="menu-nav" href="example.html">Submenu</a> <ul> <li><a href="example.html">Link</a></li> <li><a href="example.html">Link</a></li> <li><a href="example.html">Link</a></li> <li><a href="example.html">Link</a></li> </ul> </li> <li><a href="example.html">Link</a></li> </ul> </li> </ul> </li> </ul> </div>
Sehen sie in das komplette CSS-basierte Dropdown Menü Beispiel für mögliche Hinweise.
Ihr Beispiel-Stylesheet sieht langsam kompakt und kompliziert aus. Der nächste Anschnit beschreibt die Wege, um CSS leichter lesbar zu machen.{{nextPage("/de/docs/Web/Guide/CSS/Getting_Started/Lesbares_CSS", "Lesbares CSS")}}