Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

Erstellen Sie eine coole animierte Navigation mit CSS und jQuery

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Tatsiana Bochkareva (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.
  • 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.

  • Der Inhalt ist ein einfacher <div>-Container

Also um es zusammenzufassen

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.

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:

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.

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.

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.

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.

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.

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.

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.

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:

Ich muss hier einige Dinge erklären:

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

Schritt 5.3: Klicken Sie auf

Fast dort! Jetzt müssen wir behandeln, wenn ein Benutzer auf das Navigationselement klickt.

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:

Oder wenn wir bei 'about' sind, wird es:

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:

Fertig!

Und damit haben wir unser gesamtes kleines Menü.

Laden Sie eine ZIP-Datei der Site herunter

Demo ansehen!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.