CSS-Rollover ohne Javascript (Mouseover, Preload) mit vier Zuständen (normal, hover, active, current)
Beispiel
Quellcode
<ul>
<li><a class="img1" href="#"></a></li>
<li><a class="img2 current" href="#"></a></li>
<li><a class="img3" href="#"></a></li>
</ul>
Stylesheet
ul {width:400px;height:86px;margin:0;padding:0;}
ul li {float:left;margin:0;padding:3px;}
ul li a {display:block;background:0 0 no-repeat #DDD;width:120px;height:80px;margin:0;padding:0;}
ul li a.img1 {background-image:url(i/grafik1.jpg);}
ul li a.img2 {background-image:url(i/grafik2.jpg);}
ul li a.img3 {background-image:url(i/grafik3.jpg);}
ul li a:hover {background-position:0 -80px;}
ul li a:active {background-position:0 -160px;}
ul li a.current {cursor:default;background-position:0 -240px;}
/* für IE <= 6 */
ul li a.current:hover {background-position:0 -240px;}
Erläuterungen
- Funktionsweise
- Beim überfahren eines Links mit der Maus wird die ihm zugewiesene Hintergundgrafik
verschoben. Dadurch entsteht der Eindruck eines Bildwechsels, obwohl es sich um ein
und dieselbe Grafik handelt.
- Vorteile
- Es wird kein Javascript verwendet. Sobald die Grafik einmal geladen ist, steht
sie allen vier Zuständen zur Verfügung. Dadurch werden Blinker, also
Aussetzer, verhindert, die beim Nachladen von Grafiken auftreten können,
wenn der Benutzer mit der Maus über den Link fährt.
- Aufbau
- Jeder Link wird per
display:block; als Blockelement dargestellt
und bekommt eine feste Breite width:120px; und Höhe height:80px;
zugewiesen. Außerdem wird der Hintergrund samt Position der Grafik (left:0, top:0),
Wiederholung (keine) und Farbe festgelegt: background:0 0 no-repeat #DDD;.
- Hintergrundgrafik
Die eigentliche Höhe der Grafik beträgt 320 Pixel. Sie unterteilt in vier Abschnitte,
die den vier Zuständen entsprechen: normal, hover, active und
current. Daraus ergibt sich die Höhe des Links (s. Funktionsweise) von
80 Pixeln pro Zustand.
Per CSS-Klasse kann jedem Link eine eigene Hintergrundgrafik zugewiesen werden:
class="img1".
Bewegt man die Maus über den Link (a:hover) wird die Grafik um 80 Pixel
nach oben verschoben und es wird die zweite Zeile der Grafik (hover)
angezeigt.
Klickt man auf den Link (a:active) wird die Grafik um 160 Pixel verschoben
und die dritte Zeile der Grafik erscheint (active).
Die vierte Zeile wird durch die CSS-Klasse a.current aufgerufen.
Wie bei den vorigen Zuständen wird auch hier die Grafik nach oben verschoben, allerdings
um 240 Pixel. Außerdem ist in dieser Klasse dem Cursor die Eigenschaft default
zugewiesen, sodass der Browser ihn als Pfeil und nicht als Hand darstellt (wie es
bei Links ja sonst der Fall ist). Dies erweckt den Eindruck es handle sich (z.B.
in einer Galerie) um das aktuelle (ausgewählte) Bild. Selbstverständlich bleibt
es ein Link!