Attribut-Selektoren
Wie Sie aus Ihrem Studium von HTML wissen, können Elemente Attribute besitzen, die weitere Details über das markierte Element liefern. In CSS können Sie Attribut-Selektoren verwenden, um Elemente mit bestimmten Attributen zu selektieren. Diese Lektion zeigt Ihnen, wie Sie diese sehr nützlichen Selektoren verwenden.
Voraussetzungen: | Grundlagen von HTML (siehe Grundlegende HTML-Syntax), Grundlegende CSS-Selektoren. |
---|---|
Lernziele: |
|
Präsenz- und Wert-Prüfungs-Selektoren
Diese Selektoren ermöglichen die Auswahl eines Elements basierend einzig auf dem Vorhandensein eines Attributs (zum Beispiel href
) oder auf verschiedenen Übereinstimmungen mit dem Wert des Attributs.
Selektor | Beispiel | Beschreibung |
---|---|---|
[*attr*] |
a[title] |
Selektiert Elemente mit einem attr-Attribut (dessen Name der Wert in den eckigen Klammern ist). |
[*attr*=*value*] |
a[href="https://example.com"] |
Selektiert Elemente mit einem attr-Attribut, dessen Wert genau value ist — der String innerhalb der Anführungszeichen. |
[*attr*~=*value*] |
p[class~="special"] |
Selektiert Elemente mit einem attr-Attribut, dessen Wert genau value ist oder value in seiner (leerzeichen-getrennten) Werteliste enthält. |
[*attr*|=*value*] |
div[lang|="zh"] |
Selektiert Elemente mit einem attr-Attribut, dessen Wert genau value ist oder mit value direkt gefolgt von einem Bindestrich beginnt. |
Im folgenden Beispiel können Sie sehen, wie diese Selektoren verwendet werden.
- Durch die Verwendung von
li[class]
können wir jedes Listen-Element mit einem class-Attribut selektieren. Dies umfasst alle Listenelemente außer dem ersten. li[class="a"]
selektiert ein Element mit einer Klasse vona
, aber nicht eines mit der Klassea
in Kombination mit einer anderen leerzeichen-getrennten Klasse. Es selektiert das zweite Listenelement.li[class~="a"]
wird eine Klasse vona
selektieren, aber auch einen Wert, der die Klasse vona
als Teil einer leerzeichen-getrennten Liste enthält. Es selektiert das zweite und dritte Listenelement.
<h1>Attribute presence and value selectors</h1>
<ul>
<li>Item 1</li>
<li class="a">Item 2</li>
<li class="a b">Item 3</li>
<li class="ab">Item 4</li>
</ul>
body {
font-family: sans-serif;
}
li[class] {
font-size: 120%;
}
li[class="a"] {
background-color: yellow;
}
li[class~="a"] {
color: red;
}
Teilstring-Vergleichs-Selektoren
Diese Selektoren ermöglichen fortgeschrittenere Übereinstimmungen von Teilstrings innerhalb des Werts Ihres Attributs. Wenn Sie beispielsweise Klassen von box-warning
und box-error
hatten und alles selektieren möchten, das mit dem String "box-" beginnt, könnten Sie [class^="box-"]
verwenden, um beide auszuwählen (oder [class|="box"]
wie im obigen Abschnitt beschrieben).
Selektor | Beispiel | Beschreibung |
---|---|---|
[attr^=value] |
li[class^="box-"] |
Selektiert Elemente mit einem attr-Attribut, dessen Wert mit value beginnt. |
[attr$=value] |
li[class$="-box"] |
Selektiert Elemente mit einem attr-Attribut, dessen Wert mit value endet. |
[attr*=value] |
li[class*="box"] |
Selektiert Elemente mit einem attr-Attribut, dessen Wert value irgendwo innerhalb des Strings enthält. |
(Nebenbei bemerkt: Es kann hilfreich sein, zu wissen, dass ^
und $
schon lange als Anker in sogenannten regulären Ausdrücken verwendet werden, um beginnt mit und endet mit zu bedeuten.)
Das nächste Beispiel zeigt die Verwendung dieser Selektoren:
li[class^="a"]
selektiert jeden Attributwert, der mita
beginnt, daher werden die ersten beiden Listenelemente ausgewählt.li[class$="a"]
selektiert jeden Attributwert, der mita
endet, daher wird das erste und dritte Listenelement ausgewählt.li[class*="a"]
selektiert jeden Attributwert, bei dema
irgendwo im String vorkommt, daher werden alle unsere Listenelemente ausgewählt.
<h1>Attribute substring matching selectors</h1>
<ul>
<li class="a">Item 1</li>
<li class="ab">Item 2</li>
<li class="bca">Item 3</li>
<li class="bcabc">Item 4</li>
</ul>
body {
font-family: sans-serif;
}
li[class^="a"] {
font-size: 120%;
}
li[class$="a"] {
background-color: yellow;
}
li[class*="a"] {
color: red;
}