Homepage-Webhilfe Event-Banner

Pseudoklassen

Pseudoklassen sind Erweiterungen für Selektoren. Sie werden direkt hinter dem Selektor angegeben. Die Namen von Pseudoklassen sind festgelegt und beginnen immer mit einem Doppelpunkt :. Pseudoklassen dienen dazu, einen Regelblock auf ein Element nur dann anzuwenden, wenn eine bestimmte Eigenschaft (dabei ist nicht die CSS-Eigenschaft gemeint) gegeben ist.


Das bekannteste und beliebteste Beispiel für Pseudoklassen ist der Hover-Effekt. Stellen Sie sich vor, Sie haben ein div-Element mit roter Hintergrundfarbe und sobald Sie Ihren Mauszeiger innerhalb des div-Elements haben, soll die Hintergrundfarbe geändert werden. Eine solche Funktionalität ist in „reinem“ CSS und somit ohne aktive Skriptsprachen wie JavaScript möglich. Der Hover-Effekt kann in CSS mittels der Pseudoklasse :hover angesprochen werden. Typische Beispiele für den Hover-Effekt sind ausklappbare Menüs und die Hervorhebung von Tabellenzeilen. Die Pseudoklasse :hover sollte jedoch mit Vorsicht verwendet werden, da auf Geräten mit Touchscreen bzw. Geräten ohne Maus kein Hover-Effekt zur Verfügung steht.

Ein weiterer ähnlicher Effekt wie :hover können wir mit :active erreichen. :active tritt ein, wenn die Maus bzw. der Cursor sich auf einem Element befindet und die Maustaste gedrückt gehalten wird. Man spricht davon, dass das Element aktiv ist (daher auch der Name der Pseudoklasse). Im unteren Beispiel mit dem div-Element wird also die Hintergrundfarbe auf hellgrün geändert, sobald sich Ihr Cursor innerhalb des Elements befindet und Sie die Maustaste gedrückt halten.

div
{
	background-color: red;
	width: 200px;
	height: 200px;
}
			
div:hover
{
	background-color: blue;
}

div:active
{
	background-color: lime;
}
Vorschau

Ein paar HTML-Elemente (z. B. input, select und textarea) können den sogenannten Tastaturfokus erhalten. Bei Elementen, die den Tastaturfokus erhalten können, wird beim „Durchschalten“ mittels Tab angehalten. Natürlich kann der Tastaturfokus auch manuell über das Klicken in ein anderes Element (z. B. Textfeld) mittels Maus oder Touchscreen gesetzt werden. Für die Fokussierung durch den Browser gibt es die Pseudoklasse :focus. Dadurch ist es z. B. möglich, das aktuell gewählte Textfeld zu markieren (siehe Beispiel).

body
{
	line-height: 1.8em;
}

input
{
	border: 1px solid red;
}

input:focus
{
	border: 1px solid blue;
	border-radius: 5px;
}
Vorschau

Neben den Pseudoklassen :hover, :active und :focus gibt es für Links zudem noch die Pseudoklassen :link (für nicht besuchte Links) und :visited (für besuchte Links). Mit Hilfe dieser Pseudoklassen ist es nun endlich möglich, das Standardverhalten von Browsern in Bezug auf die Darstellung von Links zu ändern. Dabei ist auf die Reihenfolge der Notation zu achten: :link, :visited, :focus, :hover, :active. Natürlich ist es auch möglich, eine oder mehrere der Pseudoklassen wegzulassen. Um Links zu formatieren, kommen hauptsächlich die CSS-Eigenschaften color und text-decoration zum Zuge.

a:link
{
	color: red;
}

a:visited
{
	color: orange;
}

a:focus
{
	color: lime;
}

a:hover
{
	color: blue;
}

a:active
{
	color: black;
}
Vorschau

Übrigens: In Navigationsleisten möchte man oft Links immer gleich anzeigen, egal ob diese bereits besucht wurden, noch nicht besucht wurden oder fokussiert sind. Dies kann z. B. mittels folgendem simplen CSS-Regelblock erfolgen:

a
{
    color: red;
}

Einige Pseudoklassen sind in der Lage, bestimmte Elemente zu selektieren (z. B. das erste oder letzte Element). Eine Liste dieser sogenannten strukturellen Pseudoklassen finden Sie in folgender Tabelle:

p:first-child Selektiert das erste Element, sofern es sich um ein p-Element handelt.
p:last-child Selektiert das letzte Element, sofern es sich um ein p-Element handelt.
p:nth-child Selektiert das n-te Element, sofern es sich um ein p-Element handelt.
p:nth-last-child Selektiert das n-te Element, sofern es sich um ein p-Element handelt (Zählung beginnt von unten).
p:first-of-type Selektiert das erste p-Element.
p:last-of-type Selektiert das letzte p-Element.
p:nth-of-type Selektiert das n-te p-Element.
p:nth-last-of-type Selektiert das n-te p-Element (Zählung beginnt von unten).

Die Selektierung eines n-ten Elements kann über verschiedene Art und Weisen erfolgen. Hierfür muss immer hinter dem Namen der Pseudoklasse ein rundes Klammernpaar notiert werden. Für den Wert innerhalb der Klammern gibt es nun verschiedene Möglichkeiten: Wird eine einzelne Zahl angegeben, so wird ein einzelnes Element angesprochen. Bei der angegebenen Zahl handelt es sich um die sogenannte Platznummer. Das erste Element ist die Nummer 1, das zweite die Nummer 2 usw.. Die Angabe einer Zahl, gefolgt von dem Buchstaben n, führt dazu, dass jedes n-te Element selektiert wird, d. h. die Angabe 2n selektiert jedes 2te Element. Diese Angabe kann noch um ein Pluszeichen + gefolgt von einer weiteren Zahl bei Bedarf erweitert werden. Diese zweite Zahl ist als Offset anzusehen, d. h. eine Angabe wie 2n+3 selektiert jedes 2te Element ab dem dritten Element. Da es oft vorkommt, dass man jedes zweite Element selektieren möchte, wurden in CSS die Schlüsselwörter odd und even eingeführt. Die Angabe odd entspricht 2n+1 und even entspricht der Angbae 2n.

Im Beispiel unten könnten die Pseudoklassen :first-child durch :first-of-type, :last-child durch :last-of-type usw. ersetzt werden. Dies ist jedoch nur möglich, da innerhalb des Elternelements (in diesem Fall das body-Element) nur p-Elemente vorhanden sind. Wäre das erste Element nun z. B. ein Bild, so würde die Regel p:first-child nicht mehr in Kraft treten. Würden wir diese jedoch durch p:first-of-type ersetzen, dann würde der Regelblock wieder eintreten.

p:first-child
{
	text-indent: 10px;
}

p:nth-child(2n+5)
{
	color: red;
}

p:nth-child(3)
{
	color: blue;
}

p:last-child
{
	padding-top: 15px;
	border-top: 1px solid black;
}
Vorschau

Für Formulare gibt es noch weitere Pseudoklassen, mit welchen es möglich ist, Formularfelder je nach deren Werten bzw. deren Status zu selektieren. Die verfügbaren Pseudoklassen sind in der untenstehenden Tabelle aufgelistet.

:checked Selektiert Checkboxen und Auswahlgruppen (Radio-Buttons), welche ausgewählt sind.
:disabled Selektiert deaktivierte Felder.
:enabled Selektiert aktivierte Felder.
:in-range Selektiert Felder, bei welchen der Wert innerhalb des Gültigkeitbereichs liegt.
:out-of-range Selektiert Felder, bei welchen der Wert außerhalb des Gültigkeitbereichs liegt.
:invalid Selektiert Felder, deren Eingabe ungültig ist.
:valid Selektiert Felder, deren Eingabe gültig ist.
:required Selektiert benötigte Felder.
:optional Selektiert optionale Felder.
:read-only Selektiert Felder, welche nur gelesen werden können.
:read-write Selektiert Felder, welche gelesen und geschrieben werden können.
Vorname: <input /><br />
Nachname: <input required="required" /><br />
Betreff: <input /><br />
E-Mail: <input required="required" /><br />
Zahl: <input type="number" min="0" max="9" />
body
{
	line-height: 1.8em;
}

input:optional
{
	background-color: #EEEEEE;
}

input:invalid
{
	border: 3px dotted red;
}

input:out-of-range
{
	color: red;
}
Vorschau
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK