Mitunter soll das erste Element eines HTML-Konstrukts per CSS
speziell gestaltet werden, z.B. was dessen Außenabstände
angeht. Diese Anforderung gibt es in zwei Ausprägungen:
-
Das zu behandelnde Element ist das erste Element,
das dem Bezugselement folgt.
-
Das zu behandelnde Element ist das erste Element,
das dem Bezugselement untergeordnet ist.
Diese beiden Element-Anordnungen erfordern unterschiedliche
CSS-Selektoren.
Element folgt auf Bezugselement
1 <X>...</X>
2 <Y>
3 ...
4 </Y>
5 ...
Der CSS-Selektor lautet:
Bezugselement ist X. Der Selektor + selektiert das unmittelbar
folgende Element. Der Universelle Selektor * füllt hier syntaktisch
die zweite Argumentposition des Selektors und nimmt keine weitere
Einschränkung vor.
Beispiel: Jedes erste Element nach einer <h1>-Überschrift soll
einen oberen Außenabstand von 0.5em erhalten:
1 h1 + * {
2 margin-top: 0.5em;
3 }
Element ist Bezugselement untergeordnet
1 <X>
2 <Y>
3 ...
4 </Y>
5 </X>
Der CSS-Selektor lautet:
1 X > *:first-child {
2 ...
3 }
Bezugselement ist X. Der Selektor > selektiert alle Elemente,
die dem Bezugselement direkt untergeordnet sind. Die Pseudoklasse
*:first-child schränkt diese Menge auf das erste Kindelement
ein (der Stern kann auch weggelassen werden).
Beispiel: Jedes erste Unterelement eines <dd>-Definitionsabschnitts
soll keinen oberen Außenabstand besitzen, sondern direkt an den
Definitionsterminus <dt> anschließen:
HTML:
1 <dl>
2 <dt>...</dt>
3 <dd>
4 <Y>
5 ...
6 </Y>
7 </dd>
8 ...
9 </dl>
CSS:
1 dd > *:first-child {
2 margin-top: 0;
3 }