Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [CSS] CSS-Hover ohne Nachladen
Antwort
 
Themen-Optionen
Alt 06.01.2006, 18:49   Nach oben    #1
pichfl
CSS-Spinner
 
Benutzerbild von pichfl
 
Registriert seit: 27.08.2005
Ort: Kissing
Beiträge: 46
Standard [CSS] CSS-Hover ohne Nachladen

In diesem Tutorial werde ich versuchen jedem, der sich zumindest ein wenig mit (x)HTML und CSS auskennt zu erklären wie man Menüpunkte oder auch beliebige Links ein Bild mit Hovereffekt (auch Mouseover genannt) ausstattet. Dazu brauche ich nicht mehr als:

Die Zutaten
  • eine Seite mit validem Markup (keine Angst, ich liefere Beispiele mit)
    • am Besten xHTML 1.0 Strict (damit werde ich arbeiten)
    • aber es geht auch jede andere HTML-Version (z.b. 4.01)
  • eine CSS-Datei (darauf gehe ich später näher ein)
  • eine Bildbearbeitungssoftware, um die Grafiken zu erstellen
Mehr erwartet? Kann ich leider nicht helfen, mehr ist es nicht.

1. Vorbereitung
Eine gültige xHTML-Datei sieht so aus:
HTML-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>CSS Hover Beispieldokument 1</title>
</head>
<body>
</body>
</html>
Oder als Datei: Beispieldatei1

Wir betrachten uns als erstes den <head> näher und binden eine CSS-Datei ein. Wie das funktioniert kann man auf selfhtml.org nachlesen.

Ich habe mich entschieden die Datei einem @import-Befehl einzubinden, da dies hilft, dass dieDarstellung in längst veralteten Browsern trotzdem noch einigermaßen gut aussieht, da diese Browser diesen Code noch nicht unterstützen.

HTML-Code:
...
<head>
<meta http-equiv="Content-Type" content="text/html;  charset=iso-8859-1" />
<title>CSS Hover Beispieldokument 1</title>
<style type="text/css" media="screen" >
<–
@import url("beispiel_css_1.css");
–>
</style>
</head>
...
Als nächstes fügen wir in den <body> eine Liste ein, die später die Menüpunkte enthalten soll, die wir mit CSS bearbeiten wollen.
HTML-Code:
...
<ul>
<li><a href="#">Start</a></li>
<li><a href="#">Über Mich</a></li>
<li><a href="#">Projekte</a></li>
</ul>
...
Das Ergebnis kann man hier sehen: HTML-Beispieldatei 2 und CSS-Beispieldatei 1

2. Die Bilder
Dieser Punkt spielt eine entscheidende Rolle und man sollte genau überlegen, Wo man Was einsetzt.
Im Normalfall weiß man nicht vorher, wie lange der Text eines Menüpunktes wird, besonders wenn man realisiert, dass jeder Endnutzer die Schriftgröße in seinem Browser anders sieht und eventuell sogarumgestellt hat.

Auch kann ich aus eigender Erfahrung sagen, dass viele Designer gerne eine bestimmte Schrift im Menü haben wollen und bekannterweise ist das ohne Bild nicht ganz einfach zu realisieren.
Deshalb habe ich mich für dieses Tutorial entschieden, den Buttontext einfach direkt in meiner Bildbearbeitungssoftware auf den Button aufzubringen.

Jetzt wirds interessant. Um auf einen Preloader verzichten zu können, sorgen wir dafür, dass das Image, dass am Anfang geladen wird einfach gleich alle Stati (Mehrzahl von Status, schon klar? ) enthält, die wir später brauchen.

So wird aus

und


zum Beispiel:


(Ich habe diese letzte Grafik natürlich auch für alle anderen Menüpunkte erstellt.)

3. Erweiterung des HTML-Codes
Damit das Bild auch wirklich anstatt und nicht gleichzeitig mit dem Menütext angezeigt wird, gibt es einige Austauschmethoden, von denen ich eine besonders bevorzuge, die von Dave Shea. Um diese jedoch anwenden zu können muss ich den Code der HTML-Datei erneut anpassen und um ein paar <span>s erweitern.

HTML-Code:
<li><a href="#">Start</a></li>
wird zu
HTML-Code:
<li id="start"><a href="#" title="Startseite"><span><!--Start --></span>Start</a></li>
Bei den anderen Menüpunkten wird nach dem selben Muster verfahren, der HTML-Kommentar dient nur der Ordnung, sollte aber da sein, weil bei leeren Elementen der Validator ab und an zickt, leere Elemente sind aber laut Spezifikationen nicht verboten. Die “ID” der <li> darf jeweils nur einmal vorkommen und sollte möglichst sinnvoll gewählt werden.

Die Liste habe ich ebenfalls mit einer ID versehen, um sie später besser per CSS ansprechen zu können.

Das Ergebnis kann man hier sehen: HTML-Beispieldatei 3. Damit sind an der HTML keine weiteren Änderungen mehr notwendig und wir können uns der CSS-Datei widmen.

4. Die CSS
Um jetzt die Listenpunkte <li> zu den gewünschten Buttons zu machen, brauchen wir ein wenig CSS. Beginnen wir damit, die Liste zu formatieren.

Code:
ul#menu{
margin:2em;
padding:0; /*Innenabstände brauchen wir fürs erste nicht */
font-size:100%;
line-height:100%; /*Diese Angaben verhindern eine unschöne Darstellung im IE*/
position:relative;}

ul#menu li, ul#menu li a{
/*dieser Styleblock gilt sowohl für Listenpunkte als auch für deren Links */
height:30px;
width:150px;
position:relative;
display:block;
overflow:hidden;
list-style-type:none;
list-style-position:outside;}

ul#menu li a span{
height:30px;
width:150px;
position:absolute;
display:block; }
Somit hätten wir dann Beispiel 4 mit dieser CSS: CSS-Beispieldatei 2.

Jetzt fehlen nur noch die Bilder, für die wir pro Listenpunkt jeweils diesen Code verwenden (natürlich) jeweils angepasst im Bezug auf die IDs

Code:
li#start a span,
li#start a:link span,
li#start a:visited span{
background:scroll #0db8ff url(images/start.gif) 0px 0px no-repeat; }
Und hier kommt der Trick ins Spiel, den ich bei wellstyled.com gefunden habe:
Code:
li#start a:focus span,
li#start a:hover span,
li#start a:active span{
background:scroll #0db8ff url(images/start.gif) 0px -30px no-repeat; }
Das sieht dann so aus: Beispiel 5 und die CSS lässt sich entweder durch einen mittlerweile geübten Blickin den Quellcode finden oder man ist faul und klickt auf den Link zur CSS-Beispieldatei 3.

Fertig!
Das fertige Menü kann man im Beispiel 6 betrachten, schuldig ist diesmal zur CSS-Beispieldatei 4.

Das ganze lässt sich natürlich noch ausbauen und etwas verfeinern und schon hat man eine kleine Seite fertig, Beispiel 7 lässt da keinen Zweifel (das Beispiel ist für Firefox und Opera ausgelegt, andere Browser können unter Umständen Probleme mit der Darstellung haben).
Fragen, Anregungen und Ergänzungen könnt Ihr im HTML-/CSS-Forum stellen bzw. anbringen.


Wenns uch gefallen und geholfen hat, wäre es schön zu erfahren wo und wie. (Mit Link, wenn verfügbar).

Grüße, pichfl


// edit by Jann Hendrik: Ich habe die verlinkten Beispieldateien (nach Absprache mit dem Autor) auf diesen Server gelegt und die links entspr. angepasst.

Geändert von Jann Hendrik (27.03.2008 um 11:23 Uhr).
pichfl ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[CSS] Div + CSS + IE6 -> Problem Binary HTML, XML und CSS 5 14.02.2007 16:24
"12 lessons for those afraid of CSS and standards", Ben Henick Ben Literatur 0 11.01.2007 10:12
[Umfrage] Hover Effekt: CSS oder Javascript DER_Brain Plauderecke 27 12.09.2006 13:05
css einführen lycoos HTML, XML und CSS 5 02.04.2006 13:36
[CSS] Hoverbutton mit HTML/CSS ohne JS/Flash RaZoR Tutorials 35 06.01.2006 18:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:25 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44