Oft sieht man Seiten, die Rollover-Bilder verwenden – doch sind die meist per JavaScript realisiert. Doch das geht auch einfacher mit CSS.
Allerdings darf man sich das nicht genau so vorstellen wie bei JavaScript. Mit JavaScript sieht ein Rollover so aus:
<img ... />
eingebunden und
bekommt zwei Attribute: onmouseover
und onmouseout
.onmouseover
ausgeführt –
normalerweise steht dort drin, dass die Quelle
(src="..."
) des Bildes geändert werden soll.onmouseout
steht dann, dass das Bild
wieder auf die ursprüngliche Quelle zurückgesetzt werden
soll.In CSS sieht das
ganze ein bisschen anders aus. Dort gibt es kein
onmouseover
, lediglich die Pseudoklasse
:hover
. Und in CSS kann man auch nicht einfach so die Attribute von
HTML-Elementen
ändern. Also muss man sich anders behelfen:
<div
id="rolloverbild"></div>
#rolloverbild { background-image: url(./bild.jpg); width: 100px; /* Die Höhen- und Breiten- */ height: 100px; /* Maße des Bildes... */ }
#rolloverbild:hover { background-image: url(./bild2.jpg); }
Es gibt leider auch Nachteile bei dieser Methode:
:hover
auf nicht-<a>
-Elemente
anwenden. Das schließt also diese Methode für den IE aus, es
sei denn, man nimmt tatsächlich ein a
-Element,
deklariert es als Block-Element und gibt ihm einen
:hover
-Effekt.img
-Element verwendet wird, kann kein
alt
-Attribut angegeben werden. Dies ist für
Textbrowser und Screenreader aber sehr wichtig, wenn das Bild
für das Verständnis des Textes sehr wichtig ist.
Abhilfe schafft folgendes: In das
div
wird zusätzlich noch das Bild als
img
hineingeschrieben (mit Alt-Attribut) und per
CSS als nicht darzustellen deklariert, mit #rolloverbild
img { display: none; }
.Hier ein Beispiel für ein CSS-Rollover-Bild: