Hauptmenü

Untermenü

Advanced CSS - Kontext-Selektoren

1. Definition

Kontext-Selektoren werden deshalb so genannt, weil sie nur in bestimmten Zusammenhängen wirken. Die Zuweisungen sind also nur dann gültig, wenn die entsprechenden HTML-Elemente eine vorgegebene Position relativ zu anderen haben.

2. Der Nachfolge-Selektor

... auch gerne als Nachfahren-Selektor bezeichnet, habe ich euch schon an dieser Stelle gezeigt. Dabei greift die CSS-Anweisung für alle(!) Elemente, die sich innerhalb eines anderen befinden.


div.blubb p { ... }

... bezieht sich also auf alle Absätze innerhalb des <div>-Elements mit der Klasse blubb. Dabei ist es völlig egal, wie tief die Verschachtelung ist.

3. Der Kind-Selektor

Im Gegensatz zum Nachfolge-Selektor gilt der Kind-Selektor nur für Elemente, die sich direkt unter dem Hauptelement befinden. Ausgenommen sind also diejenigen, die sich in tieferen Ebenen befinden. Die Zuweisung erfolgt über das >.


div.blubb { ... }
...
<div class="blubb">
  <p>Hier greift der Selektor</p>
  <div class="blubber">
    <h2>Irgendwas</h2>
    <p>Hier greift er nicht!</p>
  </div>
  <p>Hier greift er wieder</p>
</div>

4. Direkter Nachbar-Selektor

In diesem Fall gilt die Anweisung für ein Element, wenn es direkt auf ein anderes folgt. Alle weiteren werden ignoriert. Die Zuweisung läuft hier über das +.


h1 { ... }
...
<h1>Irgendwas</h1>
<p>Hier greift der Selektor</p>
<p>Hier greift er nicht!</p>

5. Indirekter Nachbar-Selektor

Im Gegensatz zum direkten Nachbar-Selektor bezieht sich hier eine Anweisung auf alle Elemente, die innerhalb einer Ebene auf ein bestimmtes Element folgen. Für die Zuweisung nimmt man die Tilde, also das ~. Wer sich jetzt fragt, wo das verdammte Ding auf seiner Tastatur ist, der schaue mal auf die Taste mit dem Pluszeichen und kombiniere das mit AltGr.


h1 { ... }
...
<h1>Irgendwas</h1>
<p>Hier greift der Selektor</p>
<div class="blubb">
  <p>Hier nicht!</p>
</div>
<p>Hier greift er wieder</p>

6. Attribut-Selektoren

Auch das ist möglich. Hier greift man nicht auf das jeweilige HTML-Tag zu, sondern auf spezielle Attribute. Funktioniert zum Beispiel sehr schön bei Formularelementen vom Typ <input>.


input[type="text"] {
  color#f00;
}
input[type="reset"] {
  border1px solid #f00;
}
input[type="submit"] {
  border1px solid #00f;
}
...    
<input type="text" name="bla" />
<input type="reset" name="blubb" />
<input type="submit" name="blubb" />    

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt