2. CSS: Formatierung und Anordnung mit Cascading Style Sheets
2.3 Pseudo-Klassen, Pseudo-Elemente, Counter
Pseudo-Klassen.
Mit Pseudo-Klassen lässt sich eine Untermenge von Elementen
auswählen, die nicht etwa durch das Setzen des class-Attributes definiert
wurde, sondern durch den Kontext der Webseite oder das Verhalten des Nutzers.
Ein einfaches Beispiel ist die Gestaltung von Links, wie Sie im Unterschied zwischen
Datei pseudo-classes-00.html
(ohne
style) und
pseudo-classes-01.html
(mit
style) sehen.
Der entsprechende CSS-Code sieht wie folgt aus:
a:visited {
text-decoration: none;
color:burlywood;
}
a:hover {
font-weight: bold;
}
Sie sehen hier: a:visited ist eine Pseudo-Klasse, die von allen
a-Elementen diejenigen auswählt, die schon besucht worden sind. Analog
wählt a:hover die Links aus, über denen gerade das Mauszeiger schwebt.
tag:hover können Sie auch mit anderen Tags verwenden.
Beliebt sind zum Beispiel Tables, bei denen die Zeile unter der Maus
anders gefärbt wird, wie in
example-css-03-table-hover.html.
Hier ist der CSS-Code:
tr:hover {
background-color: beige;
}
Eine weitere beliebte Pseudo-Klasse ist nth-child. Hiermit wählen
Sie Elemente aus, die in der Geschwisterfolge an einem bestimmten Punkt stehen.
nth-child(3) würde zum Beispiel das dritte Kind auswählen.
Interessanter als das dritte Kind ist folgender Code, der zum Beispiel
genau die ungeraden Kinder auswählt: nth-child(odd).
Hiermit können Sie zum Beispiel Tabellenzeilen alternierend färben,
wie in
Pseudo-Elemente
Pseudo-Elemente sind Elemente, die durch CSS erst erzeugt werden.
Für meine Algorithmen-Vorlesung könnte ich zum Beispiel etwas wie
<div class="theorem"> wollen, wo dann jedem div der
Klasse .theorem das Wort Theorem in bestimmter Gestaltung
vorangestellt wird, ohne dass ich es extra hinzufügen muss.
Ein Beispiel finden Sie in pseudo-element-00.html.
.theorem {
padding: 20px;
border-radius: 10px;
margin: 20px;
background-color: whitesmoke;
}
.theorem::before {
content: "Theorem. ";
font-weight: bold;
}
Beachten Sie: .theorem { ... } gestaltet die Klasse .theorem.
Mit yourSelector::before { ... } stellen Sie allen ausgewählten Elementen
ein Element an die erste Position. Interessant wird das, wenn Sie es mit Zählern
kombinieren.
.chapter einführen, so dass dann
<h1 class="chapter"> ein neues Kapitel einleitet und
<h2 class="chapter"> einen neuen Abschnitt im gleichen Kapitel.
table eine Klasse .automated-numbering,
die erreicht, dass in jeder Zeile, also mit jedem neuen
tr automatisch eine laufende Nummer erscheint.
Hierfür müssen Sie, damit es gut ausschaut, mehrere der obigen Konzepte kombinieren.
X > Y. Das wählt alle
Y-Elemente aus, die ein Kind eines Y-Elements sind. Zum Beispiel:
ul.myBulletPoints > li wählt alle li-Tags
aus, die direkt innerhalb eines ul-Tags mit Klasse
myButtletPoints vorkommen.
- Erstellen Sie eine HTML-Seite, die dieses Verhalten demonstriert. Insbesondere, dass
<li>-Elemente, die noch weiter unten sind, also zum Beispiel Urenkel eines<ul class="myButtelPoints">-Tags sind, nicht von diesem Selektor ausgewählt werden.
- Erstellen Sie eine Seite, die testet / demonstriert, ob man den
>-Kombinator tiefer verschachteln kann, ob also zum Beispiel so etwas wie
ul > li > ol > lifunkioniert und eben alle<li>-Tags "ganz drinnen".