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 :-)

Themen: 242.975 | Beiträge: 1.352.293 | Mitglieder: 169.418 (Stand 28.01.10) | Fragen zur Nutzung von Tutorials.de? Nutzungsregeln | Kontaktformular | Impressum

Jubiläums-Countdown 23.02 23.03 23.04 23.05 23.06 23.07 23.08 23.09


4 kostenlose Bücher bei unserer Buch-Verschenkaktion 03/2010
  Tutorial geschlossenGeschlossen    
  Tutorial geschlossenGeschlossen    
 
Tutorial-Optionen Ansicht
CSS-Rollover
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.

  1. CSS-Rollover mit background-image

    Die drei "Zustände" sind in einzelnen Grafiken enthalten, die über die URI der background-image-Eigenschaft aufgerufen werden:

    Name:  bg_normal.png
Hits: 1531
Größe:  252 Bytes (bg_normal.png)

    Name:  bg_hover.png
Hits: 1306
Größe:  249 Bytes (bg_hover.png)

    Name:  bg_active.png
Hits: 1299
Größe:  248 Bytes (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.


  2. 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:

    Name:  bg.png
Hits: 1465
Größe:  421 Bytes (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!
______________________________________________________________________________________________
Interpol und Deutsche Bank, FBI und Scotland Yard, Finanzamt und das BKA haben unsere Daten da.

[ Kraftwerk - Computerwelt - 1981 ]
Angehängte Dateien
Dateityp: zip css_rollover.zip (2,4 KB, 598x aufgerufen)

Bewertung
 
Ausführlichkeit
93.8%93.8%93.8%
4,69
Verständlichkeit
93.8%93.8%93.8%
4,69
Kompetenz
96.2%96.2%96.2%
4,81
Gesamteindruck
93.8%93.8%93.8%
4,69
8 User bewerteten mit 94% durchschnittlich

Tutorial-Optionen
 

  #1 (permalink)  
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.

  1. 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:

    Name:  link_1_normal.png
Hits: 7611
Größe:  273 Bytes (link_1_normal.png)

    Name:  link_1_hover.png
Hits: 7596
Größe:  275 Bytes (link_1_hover.png)

    Name:  link_1_active.png
Hits: 7601
Größe:  273 Bytes (link_1_active.png)

    Name:  link_2_normal.png
Hits: 7590
Größe:  276 Bytes (link_2_normal.png)

    Name:  link_2_hover.png
Hits: 7582
Größe:  278 Bytes (link_2_hover.png)

    Name:  link_2_active.png
Hits: 7573
Größe:  274 Bytes (link_2_active.png)

    Name:  link_3_normal.png
Hits: 7584
Größe:  272 Bytes (link_3_normal.png)

    Name:  link_3_hover.png
Hits: 7564
Größe:  273 Bytes (link_3_hover.png)

    Name:  link_3_active.png
Hits: 7568
Größe:  270 Bytes (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 */
    }

  2. 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:

    Name:  link_1_bg.png
Hits: 7575
Größe:  481 Bytes (link_1_bg.png)

    Name:  link_2_bg.png
Hits: 7580
Größe:  489 Bytes (link_2_bg.png)

    Name:  link_3_bg.png
Hits: 7571
Größe:  477 Bytes (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
Angehängte Dateien
Dateityp: zip css_rollover_teil_2.zip (7,1 KB, 539x aufgerufen)


Tutorial-Optionen
Ansicht
Ähnliche Themen
 
Tutorial Autor Forum Kommentare Letzter Beitrag
CSS Menü, aufklappbar bei Rollover legio_x CSS 22 22.04.08 20:07
CSS Rollover Navigation Bicko CSS 5 24.02.05 13:23
Rollover mit CSS IE und NS Baerwatz CSS 4 17.03.04 14:37
rollover "popup" bei href - css oder java? kaot HTML 4 08.02.04 00:09
CSS Rollover Navigation - Wie? sunshineworld CSS 2 26.06.02 11:41
» Tools
 
tutorials.de-Tools tutorial.de-Suchfeld tutorial.de-Widget tutorial.de-RSS-Feed tutorial.de-Banner
» Neue Links
 
Hits: 134
»
JHT's Planetary...
(Cinema 4D-Objekte)
Hits: 261
»
Tageslicht ohne GI
(Cinema 4D-Tutorials)
Hits: 149
»
Puzzle
(Cinema 4D-Tutorials)
Hits: 100
»
Lacreme
(Cinema 4D-Tutorials)
Hits: 190
»
Liquid Light
(Cinema 4D-Tutorials)
» Aktuelle Umfrage
 
Bist du mit der Geschwindigkeit der Tutorials.de-Website zufrieden?
Ja, es putzt mir glatt den Staub vom Bildschirm! - 79,79%
150 Stimmen
Nein, ich denke da muss noch nachgebessert werden... - 20,21%
38 Stimmen
Stimmen gesamt: 188
Du darfst bei dieser Umfrage nicht abstimmen.

 

Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.


Powered by vBulletin® Version 3.8.5 (Deutsch) & vBadvanced CMPS v.3.2.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.5.0 RC2 ©2010, Crawlability, Inc.
Alle Rechte vorbehalten ©2000 - 2010 tutorials.de
Design by Mark, CSS by Maik & Sven Mintel
Seite generiert in 0,25079 Sekunden mit 33 queries