|
|
| |
| |
Hallo und herzlich willkommen! Tutorials.de ist eine Hilfe-Community mit dem Motto User helfen Usern. Als Gast verfügst Du über Schreibrechte in unseren Foren und Blogs. Du kannst dich aber gerne auch kostenlos registrieren und Teil unserer Gemeinschaft werden! Viel Spaß & Erfolg bei der Vermehrung deines Wissens :-)
|
|
|
 |
|
|
|
|
|
|
CSS-Rollover
Veröffentlicht von Maik
05.07.07
|
|
CSS-Rollover
Hallo Tutorianer!
Da im CSS-Forum in letzter Zeit immer wieder die Frage auftaucht, wie sich denn mit "reinem" CSS, also ohne den Einsatz von Javascript, ein Rollover-Effekt (= Grafiktausch) für Links realisieren lässt, möchte ich in diesem Tutorial zwei mögliche Techniken vorstellen.
Anmerkung: Die für diesen Workshop verwendeten Grafiken sind von mir bewusst "einfach" gehalten (der Effekt mit der wechselnden Rahmenfarbe würde in der Praxis selbstverständlich ohne Grafiken umgesetzt werden), denn hier geht es ja vordergründig um die CSS-Technik.
- CSS-Rollover mit background-image
Die drei "Zustände" sind in einzelnen Grafiken enthalten, die über die URI der background-image-Eigenschaft aufgerufen werden:
(bg_normal.png)
(bg_hover.png)
(bg_active.png)
1.1 HTML-Code:
|
Code:
|
<ul id="nav1">
<li><a href="#" id="current">link 1</a></li>
<li><a href="#">link 2</a></li>
<li><a href="#">link 3</a></li>
</ul>
|
1.2 CSS-Code:
|
Code:
|
/* Globale Einstellungen */
ul {
margin: 0;
padding: 0;
list-style: none;
}
a {
text-decoration: none;
text-align: center;
display: block; /* verleiht dem Inline-Element "Block-Level-Charakteristika" */
margin: 3px 0 0 0;
font: bold .8em verdana, sans-serif;
color: #000;
}
/* CSS-Rollover mit background-image */
ul#nav1 li a:link, ul#nav1 li a:visited {
width: 150px; /* Grafik-Breite */
line-height: 25px; /* Grafik-Höhe */
background-image: url(bg_normal.png); /* Pfad zum Hintergrundbild */
}
ul#nav1 li a:hover {
background-image: url(bg_hover.png); /* Pfad zum Hintergrundbild */
}
ul#nav1 li a:active, ul#nav1 li a#current {
background-image: url(bg_active.png); /* Pfad zum Hintergrundbild */
}
|
An dieser Stelle möchte ich darauf hinweisen, dass diese Technik gegenüber der nachfolgenden Methode einen kleinen "Schönheitsfehler" besitzt, der sich auf dem lokalen System / Server nicht bemerkbar macht, sondern erst zum Vorschein kommt, wenn die Seite vom Webserver aufgerufen wird: Beim allerersten Überfahren eines Links flackert sein Hintergrundbild kurzzeitig auf, da sich die Hover-Grafik bis zu diesem Zeitpunkt noch nicht im Browsercache befand, und erst durch den auslösenden "Hover"-Event vom Browser angefordert und in seinem Cache abgelegt wird.
Wer dennoch in seiner Website diese Methode zum Grafiktausch anwenden möchte, dem empfehle ich, die Hover-Grafik beim Seitenaufruf "vorzuladen" - sei es mit einem entsprechenden Javascript, oder mit Hilfe eines HTML-Elements, das für jede vorzuladende Bilddatei ein <img>-Tag enthält, und mit der CSS-Deklaration display:none oder visibility:hidden in der Seitendarstellung "unterdrückt" wird.
- CSS-Rollover mit background-position
Die drei "Zustände" sind in einem Hintergrundbild vereint, dessen Werte für seine Hintergrundposition entsprechend gesetzt werden, und es auf diese Weise in diesem Beispiel in der Vertikalen "verschoben" wird:
(bg.png)
2.1 HTML-Code:
|
Code:
|
<ul id="nav2">
<li><a href="#" id="current">link 1</a></li>
<li><a href="#">link 2</a></li>
<li><a href="#">link 3</a></li>
</ul>
|
2.2 CSS-Code:
|
Code:
|
/* Globale Einstellungen */
ul {
margin: 0;
padding: 0;
list-style: none;
}
a {
text-decoration: none;
text-align: center;
display: block; /* verleiht dem Inline-Element "Block-Level-Charakteristika" */
margin: 3px 0 0 0;
font: bold .8em verdana, sans-serif;
color: #000;
}
/* CSS-Rollover mit background-position */
ul#nav2 li a:link, ul#nav2 li a:visited {
width: 150px; /* Grafik-Breite */
line-height: 25px; /* Button-Höhe */
background-image: url(bg.png); /* Pfad zum Hintergrundbild */
background-position: left top; /* Hintergrundposition links - oben */
}
ul#nav2 li a:hover {
background-position: left center; /* Hintergrundposition links - mittig */
}
ul#nav2 li a:active, ul#nav2 li a#current {
background-position: left bottom; /* Hintergrundposition links - unten */
}
|
Das komplette Beispiel (HTML-Dokument incl. Stylesheet und Grafiken) hänge ich hier als ZIP-Datei an.
Gruß
Maik
[edit 13.10.2007]
Fortsetzung folgt:
__________________
- Ich biete keinen Support via PN, Skype, ICQ & Co - dafür ist das Forum da!
- Beantwortete Fragen bzw. gelöste Themen bitte als erledigt markieren - vielen Dank!
- Meine CSS-Tutorials @ tutorials.de:
______________________________________________________________________________________________
Interpol und Deutsche Bank, FBI und Scotland Yard, Finanzamt und das BKA haben unsere Daten da.
[ Kraftwerk - Computerwelt - 1981 ]
|
|
Bewertung
|
| |
| Ausführlichkeit | | 4,69 |
| Verständlichkeit | | 4,69 |
| Kompetenz | | 4,81 |
| Gesamteindruck | | 4,69 |
|
8 User bewerteten mit 94% durchschnittlich
|
|
|
|
Tutorial-Optionen
|
| |
|
|
|
|
|
Von
Maik
an
13.10.07, 09:53
|
|
CSS-Rollover - Teil 2
Hallo Tutorianer!
Im ersten Teil dieses Tutorials wird in der Navigation für die Links ein einheitliches Hintergrundbild verwendet, und der Linktext "manuell" im a-Element notiert.
Nun ist es von Fall zu Fall aber auch erwünscht bzw. die Vorgabe, dass der Linktext in der Grafik enthalten ist, und somit für jeden Link ein individuelles Hintergrundbild erforderlich ist bzw. vorliegt.
Doch wie kann nun für jeden Link ein eigenes Hintergrundbild deklariert werden?
Indem jeder Link mit einem eindeutigen ID-Bezeichner ausgezeichnet wird (hier: #link_1, #link_2, #link_3), über den sich im Stylesheet sein entsprechendes "Grafik-Set" zuordnen lässt.
- CSS-Rollover mit background-image
Die drei "Zustände" eines Links sind in einzelnen Grafiken enthalten, die über die URI der background-image-Eigenschaft aufgerufen werden:
(link_1_normal.png)
(link_1_hover.png)
(link_1_active.png)
(link_2_normal.png)
(link_2_hover.png)
(link_2_active.png)
(link_3_normal.png)
(link_3_hover.png)
(link_3_active.png)
1.1 HTML-Code:
|
Code:
|
<ul id="nav1">
<li id="current"><a href="#" id="link_1"><span>link 1</span></a></li>
<li><a href="#" id="link_2"><span>link 2</span></a></li>
<li><a href="#" id="link_3"><span>link 3</span></a></li>
</ul>
|
1.2 CSS-Code:
|
Code:
|
/* Globale Einstellungen */
ul#nav1 {
margin:0;
padding:0;
list-style:none;
}
ul#nav1 a {
display:block; /* verleiht dem Inline-Element "Block-Level-Charakteristika" */
width:130px; /* Grafik-Breite */
height:15px; /* Grafik-Höhe */
margin:3px 0 0 0; /* Aussenabstand oben - rechts - unten - links */
}
ul#nav1 a span {
display:none; /* für Blindtext */
}
/* CSS-Rollover mit background-image */
/* #link_1 */
ul#nav1 li a#link_1:link, ul#nav1 li a#link_1:visited {
background-image:url(link_1_normal.png); /* Pfad zum Hintergrundbild */
}
ul#nav1 li a#link_1:hover {
background-image:url(link_1_hover.png); /* Pfad zum Hintergrundbild */
}
ul#nav1 li#current a#link_1 {
background-image:url(link_1_active.png); /* Pfad zum Hintergrundbild */
}
/* #link_2 */
ul#nav1 li a#link_2:link, ul#nav1 li a#link_2:visited {
background-image:url(link_2_normal.png); /* Pfad zum Hintergrundbild */
}
ul#nav1 li a#link_2:hover {
background-image:url(link_2_hover.png); /* Pfad zum Hintergrundbild */
}
ul#nav1 li#current a#link_2 {
background-image:url(link_2_active.png); /* Pfad zum Hintergrundbild */
}
/* #link_3 */
ul#nav1 li a#link_3:link, ul#nav1 li a#link_3:visited {
background-image:url(link_3_normal.png); /* Pfad zum Hintergrundbild */
}
ul#nav1 li a#link_3:hover {
background-image:url(link_3_hover.png); /* Pfad zum Hintergrundbild */
}
ul#nav1 li#current a#link_3 {
background-image:url(link_3_active.png); /* Pfad zum Hintergrundbild */
}
|
- CSS-Rollover mit background-position
Die drei "Zustände" eines Links sind in einem Hintergrundbild vereint, dessen Werte für seine Hintergrundposition entsprechend gesetzt werden, und es auf diese Weise in diesem Beispiel in der Vertikalen "verschoben" wird:
(link_1_bg.png)
(link_2_bg.png)
(link_3_bg.png)
2.1 HTML-Code:
|
Code:
|
<ul id="nav2">
<li id="current"><a href="#" id="link_1"><span>link 1</span></a></li>
<li><a href="#" id="link_2"><span>link 2</span></a></li>
<li><a href="#" id="link_3"><span>link 3</span></a></li>
</ul>
|
2.2 CSS-Code:
|
Code:
|
/* Globale Einstellungen */
ul#nav2 {
margin:0;
padding:0;
list-style:none;
}
ul#nav2 a {
display:block; /* verleiht dem Inline-Element "Block-Level-Charakteristika" */
width:130px; /* Grafik-Breite */
height:15px; /* Höhe */
margin:3px 0 0 0; /* Aussenabstand oben - rechts - unten - links */
}
ul#nav2 a span {
display:none; /* für Blindtext */
}
/* CSS-Rollover mit background-position */
/* #link_1 */
ul#nav2 li a#link_1:link, ul#nav2 li a#link_1:visited {
background-image:url(link_1_bg.png); /* Pfad zum Hintergrundbild */
background-position:left top; /* Hintergrundposition links - oben */
}
ul#nav2 li a#link_1:hover {
background-position:left center; /* Hintergrundposition links - mitte */
}
ul#nav2 li#current a#link_1 {
background-position:left bottom; /* Hintergrundposition links - unten */
}
/* #link_2 */
ul#nav2 li a#link_2:link, ul#nav2 li a#link_2:visited {
background-image:url(link_2_bg.png); /* Pfad zum Hintergrundbild */
background-position:left top; /* Hintergrundposition links - oben */
}
ul#nav2 li a#link_2:hover {
background-position:left center; /* Hintergrundposition links - mitte */
}
ul#nav2 li#current a#link_2 {
background-position:left bottom; /* Hintergrundposition links - unten */
}
/* #link_3 */
ul#nav2 li a#link_3:link, ul#nav2 li a#link_3:visited {
background-image:url(link_3_bg.png); /* Pfad zum Hintergrundbild */
background-position:left top; /* Hintergrundposition links - oben */
}
ul#nav2 li a#link_3:hover {
background-position:left center; /* Hintergrundposition links - mitte */
}
ul#nav2 li#current a#link_3 {
background-position:left bottom; /* Hintergrundposition links - unten */
}
|
Das vollständige Beispiel incl. der "Dummy"-Grafiken hänge ich hier wieder als ZIP-Datei an.
mfg Maik
|
|
|
|
| Tutorial-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
|
 |
|
»
Neue Tutorials
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
»
Letzte News
|
 |
|
|
|
|
|
|
|
|
|
|
»
Tools
|
 |
|
|
|
|
|
»
Neue Links
|
 |
|
|
|
|
(Cinema 4D-Objekte)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
»
Jobs @ tutorials.de
|
 |
|
|
|
|
|
|
|
|
|
|