Erstellen Sie eine coole animierte Navigation mit CSS und jQuery
() translation by (you can also view the original English article)
Animation und visuelles Feedback sind großartige Möglichkeiten, um einen Benutzer bei der Navigation und Interaktion mit einer Website zu unterstützen. Während traditionell Adobe Flash das A und O für alles Animierte war, können wir heutzutage mit der Magie von Javascript Flash ganz vermeiden. Heute werden wir ein wirklich cooles animiertes Navigationsmenü erstellen, das nur CSS und jQuery verwendet.
Demo und Quellcode
Überblick
Das Menü, das wir erstellen, ist im folgenden Screenshot zu sehen. Sie können auch die endgültige Arbeitsversion hier sehen.



Ich werde dieses Tutorial wie folgt in fünf Abschnitte unterteilen:
- Grobe Skizze
- Ressourcen erstellen
- HTML aufschreiben
- CSS aufschreiben
- Erstellen der Animation mit jQuery
Schritt 1: Grobe Skizze
Lassen Sie uns zunächst sehen, was wir hier tun müssen.



Hier ist eine grobe Vorstellung davon, was wir tun sollten:
- Wir werden die Seite in 4 Teile aufteilen, Header, Navigations- und Inhaltsheader und den Rest des Inhalts
- Der Header-Bereich ist ein einfacher <div>-Container
- Der Navigationsbereich wird in mehrere <div>-Container aufgeteilt, die dem Menüpunkt entsprechen.
- Der Inhalt ist ein einfacher <div>-Container
Jetzt verwenden wir meistens <ul><li> Container, aber da jeder Menüpunkt einzigartig ist,
Ich sehe die Vorteile der Verwendung von <ul><li> nicht, daher werde ich stattdessen den <div>-Container verwenden.
Also um es zusammenzufassen
1 |
<!-- header section-->
|
2 |
<div id="header"></div> |
3 |
|
4 |
<!-- navigation section-->
|
5 |
<div id="navigation" class="container"> |
6 |
<div><a href="#">home</a></div> |
7 |
<div><a href="#">about</a></div> |
8 |
<div><a href="#">services</a></div> |
9 |
<div><a href="#">solutions</a></div> |
10 |
<div><a href="#">contact</a></div> |
11 |
</div>
|
12 |
|
13 |
<!-- container section-->
|
14 |
<div class="container"> |
15 |
<div id="content-title"></div> |
16 |
<!-- rest of the content -->
|
17 |
</div>
|
Es könnte hilfreich sein, die Verzeichnisstruktur zu zeigen, die ich bin. Die Verzeichnisstruktur ist wie folgt:



Schritt 2: Ressourcen
Ich gehe davon aus, dass Sie über Grundkenntnisse im Umgang mit Photoshop verfügen, daher werde ich keine zu detaillierten Anweisungen zum Erstellen der Ressourcen geben.
Es gibt mehrere Dinge, die wir erstellen müssen.
- Header-Hintergrund
- Inhaltstitel
- Navigation
- Hintergrundstreifen
Wenn Sie diesen Schritt überspringen möchten, können Sie am Ende des Tutorials die vollständige Zip-Datei herunterladen und meine Kopien extrahieren!
Okay, lassen Sie uns den Header-Hintergrund erstellen. Öffnen Sie Photoshop und erstellen Sie eine Leinwand mit 1x181 Pixel. Sie können sie auch vergrößern und dann das Bild zuschneiden.
Erstellen Sie eine Ebene und geben Sie ihr einen linearen Farbverlauf mit der Voreinstellung "Vordergrund zu Hintergrund" für 171 Pixel. Dies ist der Hauptverlauf.
Erstellen Sie eine weitere Ebene und geben Sie ihr einen linearen Verlauf mit der Voreinstellung "Vordergrund zu Transparent" für etwa 10 Pixel am unteren Rand der ersten Ebene, um einen Schatteneffekt zu erzielen.
Hier ist, wie es aussehen sollte, es ist 100x181 px, die ich später auf 1x181 px beschneide.



Speichern Sie dies als 'hdr-bkg.png' in unserem 'img'-Ordner.
Als nächstes erstellen wir den Inhaltstitel. Öffnen Sie erneut Photoshop und erstellen Sie 934x284 Pixel.
Erstellen Sie mit dem entsprechenden Werkzeug ein abgerundetes Rechteck, wählen Sie die erstellte Form aus, erstellen Sie eine neue Ebene, fügen Sie einen Verlauf hinzu und geben Sie ihr einen Schlagschatten.
Dann haben wir so etwas:



Speichern Sie dies als 'content-title.png' im Ordner 'img'.
Lassen Sie uns nun die für die Navigation benötigten Ressourcen erstellen. Wir brauchen zwei Navigationssätze und eine weiße Box.
Die weiße Box ist einfach. Erstellen Sie einfach ein abgerundetes Rechteck von ca. 98 x 58 Pixel und malen Sie es mit Weiß. Stellen Sie sicher, dass der Hintergrund transparent ist.

Speichern Sie dies als 'white.jpg' im Ordner 'img'.
Öffnen Sie für das Navigationselement Ihr Photoshop und erstellen Sie ein Dokument mit einer Größe von 490 x 58 Pixel.
Erstellen Sie ein abgerundetes Rechteck mit ca. 98 x 58 Pixel und fügen Sie Text ein. Wir benötigen zwei Kopien von jedem Text.
Ich habe auf jeden Text einen kleinen Schlagschatten aufgetragen, dies ist natürlich optional. Sie können Ihre eigenen Farben auswählen, um sie hier einzufügen.



Duplizieren Sie nun einfach diese Ebene entlang der horizontalen Linie. Wenden Sie verschiedene Farben und Texte an.



Speichern Sie dies als 'nav.jpg' im Ordner 'img'.
Schließlich habe ich für den Hintergrundstreifen einfach ein Online-Werkzeug namens Stripe Generator verwendet. Die Ausgabe sieht folgendermaßen aus:

Sie können meine Einstellungen hier sehen.
Natürlich können Sie den Streifen auch einfach in Photoshop erstellen, aber warum nicht stattdessen ein hübsches kleines Web-Werkzeug verwenden :-)
Schritt 3: HTML-Code
Notieren wir uns jetzt unseren HTML-Code.
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2 |
<html xmlns="http://www.w3.org/1999/xhtml"> |
3 |
<head>
|
4 |
<title>slick animated menu</title> |
5 |
<!--our CSS file-->
|
6 |
<link rel="stylesheet" href="css/main.css" type="text/css" /> |
7 |
<!--jQuery library-->
|
8 |
<script type="text/javascript" src="js/jquery.js" ></script> |
9 |
<!--jQuery plugin, we’ll get to this later-->
|
10 |
<script type="text/javascript" src="js/jquery-bp.js" ></script> |
11 |
<!--Our animation script-->
|
12 |
<script type="text/javascript" src="js/navigation.js" ></script> |
13 |
</head>
|
14 |
<body>
|
15 |
<div id="header"></div> |
16 |
<div id="navigation" class="container"> |
17 |
<div id="home"><a href="home">home</a></div> |
18 |
<div id="about"><a href="about">about</a></div> |
19 |
<div id="services"><a href="services">services</a></div> |
20 |
<div id="solutions"><a href="solutions">solutions</a></div> |
21 |
<div id="contact"><a href="contact">contact</a></div> |
22 |
</div>
|
23 |
<div class="container"> |
24 |
<div class="content"> |
25 |
<div id="content-title"></div> |
26 |
<!-- the rest of the content-->
|
27 |
</div>
|
28 |
</div>
|
29 |
</body>
|
Das ist sehr viel gemäß unserem Spielplan, der in Schritt 1 erklärt wurde.
Ich habe einen Link zu einer 'main.css'-Datei hinzugefügt, die noch erstellt werden muss und
Ich habe auch einige Verweise auf einige Javascript-Dateien hinzugefügt. Da jedes Navigationselement ein Unikat ist, habe ich jedem Element eine ID gegeben.
Wir benötigen weiterhin einen gemeinsamen Stil für jeden Menüpunkt. Dies erleichtert uns die Verwaltung des Stils in späteren Phasen.
Wenn wir mit der Maus über das Menü fahren oder ein Menüelement ausgewählt wird, wird über jedem Navigationselement ein weißes Feld angezeigt. Daher benötigen wir dafür einen weiteren <div>-Container. Das endgültige HTML sieht folgendermaßen aus:
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2 |
<html xmlns="http://www.w3.org/1999/xhtml"> |
3 |
<head>
|
4 |
<title>slick animated menu</title> |
5 |
|
6 |
<link rel="stylesheet" href="css/main.css" type="text/css" /> |
7 |
|
8 |
<script type="text/javascript" src="js/jquery.js" ></script> |
9 |
<script type="text/javascript" src="js/jquery-bp.js" ></script> |
10 |
<script type="text/javascript" src="js/navigation.js" ></script> |
11 |
</head>
|
12 |
<body>
|
13 |
<div id="header"></div> |
14 |
<div id="navigation" class="container"> |
15 |
<div id="home" class="pri-nav"><div><a href="home">home</a></div></div> |
16 |
<div id="about" class="pri-nav"><div><a href="about">about</a></div></div> |
17 |
<div id="services" class="pri-nav"><div><a href="services">services</a></div></div> |
18 |
<div id="solutions" class="pri-nav"><div><a href="solutions">solutions</a></div></div> |
19 |
<div id="contact" class="pri-nav"><div><a href="contact">contact</a></div></div> |
20 |
</div>
|
21 |
<div class="container"> |
22 |
<div class="content"> |
23 |
<div id="content-title"></div> |
24 |
<!-- the rest of the content-->
|
25 |
</div>
|
26 |
</div>
|
27 |
</body>
|
Speichern Sie dies als 'index.html'. Bis zu diesem Punkt haben wir dies als unsere HTML-Seite:



Schritt 4: CSS
Wenden wir einen grundlegenden Stil auf die Webseite an. Wir beginnen mit der Definition des Hintergrunds und dem Hinzufügen eines Kopfbereichs.
1 |
body { |
2 |
background: url(../img/body-bkg.jpg) repeat scroll; |
3 |
margin: 0; |
4 |
padding: 0; |
5 |
}
|
6 |
|
7 |
.containe r{ |
8 |
margin: 0pt auto; |
9 |
width:950px; |
10 |
}
|
11 |
#header { |
12 |
background: url(../img/hdr-bkg.jpg) repeat-x scroll; |
13 |
height:181px; |
14 |
}
|
Speichern Sie dies als "main.css" im Ordner "css".
Jetzt haben wir etwas, das aussieht wie:



Fügen wir nun jedem Menüpunkt einen Stil hinzu. Denken Sie daran, wir möchten das weiße Kästchen oben bei jedem Menüpunkt.
Daher muss die Position auf absolut gesetzt werden. Fügen Sie den folgenden Stil in unsere Datei 'main.css' ein.
1 |
#navigation{ |
2 |
height:60px; |
3 |
}
|
4 |
|
5 |
#home, #home div, |
6 |
#about, #about div, |
7 |
#services , #services div, |
8 |
#solutions, #solutions div, |
9 |
#contact, #contact div { |
10 |
height:80px; |
11 |
position:absolute; |
12 |
width:97px; |
13 |
float:left; |
14 |
}
|
15 |
|
16 |
#home, #about, #services, #solutions, #contact{ |
17 |
background-image: url(../img/nav.jpg); |
18 |
background-attachment: scroll; |
19 |
background-repeat: no-repeat; |
20 |
top:171px; |
21 |
}
|
22 |
|
23 |
#home{ |
24 |
background-position: 0px -25px; |
25 |
margin-left:6px; |
26 |
}
|
27 |
|
28 |
#about{ |
29 |
background-position: -98px -25px; |
30 |
margin-left:105px; |
31 |
}
|
32 |
|
33 |
#services{ |
34 |
background-position: -196px -25px; |
35 |
margin-left:204px; |
36 |
}
|
37 |
|
38 |
#solutions{ |
39 |
background-position: -294px -25px; |
40 |
margin-left:303px; |
41 |
}
|
42 |
|
43 |
#contact{ |
44 |
background-position: -392px -25px; |
45 |
margin-left:402px; |
46 |
}
|
47 |
|
48 |
#home div, #about div, #services div, #solutions div, #contact div { |
49 |
background-image: url(../img/white.jpg); |
50 |
background-attachment: scroll; |
51 |
background-repeat: no-repeat; |
52 |
background-position: 0px -60px; |
53 |
}
|
Jetzt haben wir:



Ein Problem ist, dass der <a href>-Link über den Menüelementen angezeigt wird. Entfernen Sie diesen Link mit einem großen Texteinzug, um ihn effektiv vom Bildschirm zu entfernen.
Fügen Sie dies unserem Stylesheet hinzu.
1 |
.pri-nav a{ |
2 |
display:block; |
3 |
text-decoration:none; |
4 |
text-indent:-30000px; |
5 |
}
|
Jetzt wird es so aussehen:



Wir haben immer noch ein Problem. Wir möchten, dass das Navigationsmenü unter dem Kopfschatten angezeigt wird. Wir können dies erreichen, indem wir unseren Header-Stil ändern.
1 |
#header{ |
2 |
background: url(../img/hdr-bkg.jpg) repeat-x scroll; |
3 |
height:181px; |
4 |
position:absolute; |
5 |
z-index :100; /* ensure the header is on top of navigation area */ |
6 |
top: 0px; |
7 |
left:0px; |
8 |
width:100%; |
9 |
}
|
Da wir nun eine PNG-Datei mit Transparenz verwendet haben, sollte sie folgendermaßen aussehen:



Perfekt! Fügen wir den Inhalt hinzu, damit wir zu unserem Animationsskript gelangen.
1 |
.content{ |
2 |
margin-top:160px; |
3 |
}
|
4 |
|
5 |
#content-title{ |
6 |
background: url(../img/content.jpg) no-repeat scroll; |
7 |
height:323px; |
8 |
position:absolute; |
9 |
width:100%; |
10 |
}
|
Schritt 5: Animationsskript
Laden Sie zuerst das neueste jQuery-Skript herunter und legen Sie es im Ordner 'js' ab.
Die Animation ist im Grunde eine Manipulation des Hintergrundpositionsstils.
Leider hat jQuery einen Fehler beim Animieren des Hintergrundpositionsstils. Aber mach dir keine Sorgen! Alexander Farkas hat ein Plugin erstellt, das dieses Problem löst.
Laden Sie die Datei herunter, benennen Sie sie in jquery-bp.js um und speichern Sie sie im Ordner 'js'.
Es gibt etwas, das wir verstehen müssen, bevor wir fortfahren. Ich zitiere aus der Plugin-Dokumentation:
Aufgrund einiger Browserfehler (d. H. Firefox) müssen Sie Ihre (anfängliche) Hintergrundposition inline festlegen:
<div style="background-position: 10px 20px"></div>
- Dies können Sie natürlich auch mit JavaScript (jQuery) erreichen:
$('#background').css({backgroundPosition: '10px 20px'});
Okay, jetzt wo wir das verstehen, fangen wir an. Wir werden den Backgroud-Positionsstil für jedes Element am Anfang unseres Skripts festlegen.
1 |
// id for each of our menu items
|
2 |
var nav = [ '#home', '#about', '#services', '#solutions', '#contact' ]; |
3 |
$(document).ready(function(){ |
4 |
setBkgPos(); |
5 |
});
|
6 |
|
7 |
function setBkgPos() |
8 |
{
|
9 |
for ( i = 0; i < nav.length; i++ ){ |
10 |
$(nav[i]).css({backgroundPosition: i*(-98) + 'px -25px'}); |
11 |
$(nav[i] + ' div').css({ backgroundPosition: '0px -60px'}); |
12 |
}
|
13 |
}
|
Speichern Sie dies als 'navigation.js' im Ordner 'js'.
Jetzt binden wir 3 Ereignisse an jeden der Menüpunkte. Wir können dies tun, indem wir die Bindefunktion aufrufen.
1 |
$(document).ready(function(){ |
2 |
setBkgPos(); |
3 |
|
4 |
// bind the event to function here
|
5 |
for ( i = 0; i < nav.length; i++ ) { |
6 |
$(nav[i]).bind( 'mouseover', mMouseOver ); |
7 |
$(nav[i]).bind( 'mouseout', mMouseOut ); |
8 |
$(nav[i]).bind( 'click', mClick ); |
9 |
}
|
10 |
});
|
Wenn ein Benutzer mit der Maus über das Navigationselement fährt, ruft unser Skript die Funktion "mMouseOver" auf.
Wenn der Benutzer das Navigationselement verlässt, ruft unser Skript die Funktion "mMouseOut" auf.
Wenn der Benutzer auf das Navigationselement klickt, ruft unser Skript die Funktion "mClick" auf.
Schritt 5.1: Maus over
Erstellen wir ein "Storyboard" für unsere Maus über Animation.
Bei 'Mouse Over':
- Ändern Sie das Navigationsmenübild (leuchten) und ändern Sie den Cursor auf Zeiger.
- Die Navigation wird etwas nach oben verschoben.
- Das weiße Feld wird nach unten verschoben.
- Das weiße Feld und das Navigationsmenü werden beide ausgeblendet.
- Das Navigationsmenü und das weiße Feld bewegen sich bis zur endgültigen Position.
- Und ändern Sie das Navigationsmenübild in den ursprünglichen Zustand.



Okay, fügen wir diese Funktionen unter dem vorherigen Skript hinzu:
1 |
function _getHPos( id ) |
2 |
{
|
3 |
for ( i = 0; i < nav.length; i++ ){ |
4 |
if ( '#' + id == nav[i] ){ |
5 |
return i*(-98); |
6 |
}
|
7 |
}
|
8 |
return 0; |
9 |
}
|
10 |
|
11 |
function mMouseOver(e) |
12 |
{
|
13 |
$(this) |
14 |
// stop any animation that took place before this
|
15 |
.stop() |
16 |
// step 1. change the image file and change the cursor
|
17 |
.css({backgroundImage: 'url('+site_url+'img/nav-over.jpg)',cursor: 'pointer'}) |
18 |
// step.2 move up the navigation item a bit
|
19 |
.animate({ backgroundPosition:'(' + _getHPos( this.id ) +'px -30px}'},"fast", |
20 |
// this section will be executed after the step.2 is done
|
21 |
function(){ |
22 |
$(this) |
23 |
.children() |
24 |
// step. 3 move the white box down
|
25 |
.animate({backgroundPosition:'(0px -40px)'},20) |
26 |
// step 4. move the white box down
|
27 |
.animate({backgroundPosition:'(0px -20px)'},"fast"); |
28 |
$(this) |
29 |
// step 4. move the navigation item down
|
30 |
.animate({backgroundPosition:'(' + _getHPos( this.id ) +'px 50px)'},"fast") |
31 |
// step 5. move the navigation item to its final position
|
32 |
.animate({backgroundPosition:'(' + _getHPos( this.id ) +'px 25px)'},"fast"); |
33 |
// store the parent element id for later usage
|
34 |
var parent = this; |
35 |
$(this) |
36 |
.children() |
37 |
// step 5. move the white box to its final position
|
38 |
.animate( {backgroundPosition:'(0px -45px)'},"fast", |
39 |
// this section will be executed after the step.2 is done
|
40 |
function(){ |
41 |
// step.6 change the image to its original image
|
42 |
$(parent).css({backgroundImage: 'url(img/nav.jpg)'}); |
43 |
});
|
44 |
});
|
45 |
}
|
Ich muss hier einige Dinge erklären:
- Mit _getHPos wird die horizontale Hintergrundpositionsnavigation für jedes Element angepasst.
Beispielsweise beginnt der Hintergrund des Elements "Startseite" bei 0, die horizontale Hintergrundposition "Info" bei -98 Pixel usw. - Beachten Sie auch, dass wir zu Beginn der Funktion die Stoppfunktion aufrufen. Wir tun dies, um sicherzustellen, dass die Animation ausgeführt wurde, bevor das Mouse-Over-Ereignis gestoppt wurde.
Warum? Wir werden später eine weitere Animation für das Mouse-Out-Ereignis hinzufügen.
Nehmen wir nun an, der Benutzer bewegt den Mauszeiger über ein Element und bewegt den Mauszeiger dann schnell an eine andere Stelle und erneut schnell über dasselbe Element.
Wenn wir die Animation nicht vor jedem Ereignis stoppen, tritt eine Verzögerung auf, da ein Teil der Animation in die Warteschlange gestellt wird oder, noch schlimmer, die Animation inkonsistent wird und den Benutzer stört.
Schritt 5.2: Maus Out
Nun ist das erledigt. Lassen Sie uns ein "Storyboard" für das "Mouse-Out" -Ereignis erstellen
Bei 'Mouse Out':
- Bewegen Sie das Navigationselement nach unten.
- Bewegen Sie die weiße Box nach unten.
- Bewegen Sie die Navigation nach oben.
- Bewegen Sie das Navigationselement an seine ursprüngliche Position.
- Bewegen Sie das weiße Feld an seine ursprüngliche Position (unsichtbar).
- Setzen Sie den Cursor wieder auf Normal.



Der Code:
1 |
function mMouseOut(e) |
2 |
{
|
3 |
$(this) |
4 |
// stop any animation that took place before this
|
5 |
.stop() |
6 |
// step.1 move down navigation item
|
7 |
.animate({backgroundPosition:'(' + _getHPos( this.id ) +'px 40px )'}, "fast", |
8 |
// this section will be executed after the step.1 is done
|
9 |
function(){ |
10 |
// step.2 white box move really fast
|
11 |
$(this).children().animate({backgroundPosition:'(0px 70px)'}, "fast"); |
12 |
// step 3. move navigation item up
|
13 |
$(this).animate( {backgroundPosition:'(' + _getHPos( this.id ) +'px -40px)'}, "fast", |
14 |
// this section will be executed after the step.3 is done
|
15 |
function(){ |
16 |
// step 4. move navigation item ot its original position
|
17 |
$(this).animate( {backgroundPosition:'(' + _getHPos( this.id ) +'px -25px)'}, "fast", |
18 |
// this section will be executed after the step.4 is done
|
19 |
function(){ |
20 |
// move white box to its original position, ready for next animation
|
21 |
$(this).children().css({ backgroundPosition:'0px -60px'}); |
22 |
})
|
23 |
})
|
24 |
})
|
25 |
.css({backgroundImage: 'url(img/nav.jpg)', cursor: ''}); |
26 |
}
|
Schritt 5.3: Klicken Sie auf
Fast dort! Jetzt müssen wir behandeln, wenn ein Benutzer auf das Navigationselement klickt.
1 |
function mClick(e) |
2 |
{
|
3 |
location.href = this.id; |
4 |
}
|
Natürlich können Sie hier auf den Ort zeigen, den Sie für richtig halten. Diese spezielle Funktion leitet Ihren Browser zu [current_url]/[navigation_id]. Für "home" ist es "[current_url]/home", für "about" ist es "[current_url]/about" und so weiter.
Schritt 5.4: Aktuelle Seitenanzeige
Natürlich brauchen wir einen Indikator, wenn wir bereits auf einer Seite sind. Dafür brauchen wir eine weitere CSS-Klasse.
Wir werden diese Klasse "active" nennen. Wenn wir zum Beispiel jetzt zu Hause sind, wird die HTML-Datei zu:
1 |
<div id="home" class="pri-nav active"><div><a href="home">home</a></div></div> |
Oder wenn wir bei 'about' sind, wird es:
1 |
<div id="about" class="pri-nav active"><div><a href="about">about</a></div></div> |
und so weiter.
Nachdem eine Seite geladen wurde, prüft unser Skript nun, welches Navigationselement die Klasse "active" hat.
Wir wenden dann einen Animationseffekt an. Außerdem müssen wir sicherstellen, dass andere Ereignisse ( ‘mouseover’, ‘mouseout’, ‘click’) keinen Animationseffekt auf dieses "active" Element verursachen.
Dafür müssen wir unseren Code etwas ändern. Hier ist der vollständige Code nach den Änderungen:
1 |
var site_url = ''; |
2 |
var nav = [ '#home', '#about', '#services', '#solutions', '#contact' ]; |
3 |
|
4 |
$(document).ready(function(){ |
5 |
setBkgPos(); |
6 |
|
7 |
for ( i = 0; i < nav.length; i++ ) { |
8 |
$(nav[i]).bind( 'mouseover', mMouseOver ); |
9 |
$(nav[i]).bind( 'mouseout', mMouseOut ); |
10 |
$(nav[i]).bind( 'click', mClick ); |
11 |
}
|
12 |
|
13 |
for ( i = 0; i < nav.length; i++ ) { |
14 |
// element with ‘active’ class will start animation
|
15 |
if ( $(nav[i]).get(0).className.indexOf('active') >= 0 ){ |
16 |
$(nav[i]) |
17 |
.animate({ backgroundPosition:'(' + _getHPos( nav[i] ) +'px -30px}'},"fast", |
18 |
function(){ |
19 |
$(this) |
20 |
.children() |
21 |
.animate({backgroundPosition:'(0px -40px)'},20) |
22 |
.animate({backgroundPosition:'(0px -20px)'},"fast"); |
23 |
$(this) |
24 |
.animate({backgroundPosition:'(' + _getHPos( nav[i] ) +'px 50px)'},"fast") |
25 |
.animate({backgroundPosition:'(' + _getHPos( nav[i] ) +'px 25px)'},"fast"); |
26 |
var parent = this; |
27 |
$(this) |
28 |
.children() |
29 |
.animate( {backgroundPosition:'(0px -45px)'},"fast", |
30 |
function(){ |
31 |
$(parent).animate({backgroundPosition:'(' + _getHPos( parent.id ) +'px 25px)'},"fast"); |
32 |
$(parent).css({backgroundImage: 'url(img/nav.jpg)'}); |
33 |
});
|
34 |
});
|
35 |
break; |
36 |
}
|
37 |
}
|
38 |
});
|
Fertig!
Und damit haben wir unser gesamtes kleines Menü.