Erstellen einer Navigationsleiste. Navigationsleisten mit CSS Wie man eine HTML-Navigation macht
Ein einfach zu bedienendes Navigationssystem ist für jede Website sehr wichtig.
Mit CSS können Sie langweilige HTML-Menüs in großartig aussehende Navigationsleisten verwandeln.
Navigationsleisten = Linkliste
Die Navigationsleiste verwendet Standard-HTML als Basis.
In unseren Beispielen werden wir eine Navigationsleiste aus einer regulären HTML-Liste erstellen.
Die Navigationsleiste ist im Wesentlichen eine Liste von Links, verwendet also Elemente
- und
- ganz logisch:
Beispiel
- Inline, zusätzlich zum obigen "Standard" -Code:
Beispiel Erklärung:
- Anzeige: Inline; - Standardartikel
- sind gesperrt. Hier entfernen wir Zeilenumbrüche vor und nach jedem Listenelement, um sie in derselben Zeile anzuzeigen.
Schwebende Listenelemente
Beispiel
li
{
Schwimmer:links;
}
a
{
Bildschirmsperre;
Breite: 80px;
Hintergrundfarbe:#dddddd;
}
Kommentar: Geben Sie für Elemente immer eine Breite an in der vertikalen Navigationsleiste. Wenn Sie die Breite weglassen, zeigt IE6 möglicherweise unerwartete Ergebnisse an.
Horizontale Navigationsleiste
Es gibt zwei Möglichkeiten, eine horizontale Navigationsleiste zu erstellen. Verwendungszweck eingebettet oder schwebend Artikel auflisten.
Beide Methoden funktionieren hervorragend, aber wenn Sie möchten, dass alle Links dieselbe Größe haben, müssen Sie die Float-Methode verwenden.
Eingebaute Listenelemente
Eine Möglichkeit, eine horizontale Navigationsleiste zu erstellen, besteht darin, Elemente zu erstellen
Einer der am schwierigsten anzupassenden Teile einer Website ist die Navigation. Dieser Teil ist sehr wichtig für die Benutzerfreundlichkeit der Website, da er eine der Möglichkeiten ist, wie Benutzer von Seite zu Seite navigieren.
Es gibt viele Möglichkeiten, eine ansprechende Site-Navigation zu erstellen, und mehrere jQuery-Plug-ins sind sogar in der Lage, dies sofort zu tun.
Anstatt jedoch eine vorgefertigte Lösung zu verwenden, gehen wir in diesem Tutorial durch den Prozess des Erstellens einer einfachen Navigation von Grund auf mit CSS3-Medienabfragen und ein wenig, um sie auf einem kleinen Smartphone-Bildschirm richtig hinzubekommen.
Fangen wir also an.
HTML
Stile
In diesem Abschnitt wenden wir Stile auf die Navigation an. Der Stil hier ist rein dekorativ, Sie können beliebige Farben wählen. Aber in diesem Fall hat der Körper eine zarte cremige Farbe.
Körper ( Hintergrundfarbe : #ece8e5 ; )
Das nav-Tag, das die Navigation definiert, wird im Browserfenster zu 100 % in voller Breite angezeigt, während die ul, die unsere Hauptmenü-Links enthält, 600 Pixel breit ist.
Nav (Höhe: 40px; Breite: 100 % ; Hintergrund : # 455868 ; Schriftgröße: 11pt Schriftfamilie : "PT Sans" , Arial, serifenlos ; Schriftdicke: fett ; Position : relativ ; Rand unten : 2px solide # 283744 ; ) nav ul ( padding : 0 ; margin : 0 auto ; width : 600px ; height : 40px ; )
Wir wenden dann die left float-Eigenschaft auf die Menü-Links an, sodass sie horizontal in einer Reihe stehen, aber die Anwendung dieser Eigenschaft auf ein Element führt dazu, dass das übergeordnete Element zusammenfällt.
Nav li ( display : inline ; float : left ; )
Wie Sie anhand des obigen HTML-Markups bemerken, haben wir der Klasseneigenschaft für nav und ul bereits einen Clearfix hinzugefügt, um Platz zu schaffen, wenn wir Elemente darin mit dem CSS-Clearfix-Hack schweben lassen. Lassen Sie uns also die folgenden Stilregeln zum Stylesheet hinzufügen.
Clearfix :before , .clearfix :after ( Inhalt : " " ; Anzeige : Tabelle; ) .clearfix :after ( clear : both ; ) .clearfix ( *zoom: 1 ; )
Da wir sechs Menü-Links haben und dem Container auch eine Breite von 600 Pixel gegeben haben, ist jeder Menü-Link 100 Pixel breit.
Nav a ( color : #fff ; display : inline-block ; width : 100px ; text-align : center ; text-decoration : none ; line-height : 40px ; text-shadow : 1px 1px 0px # 283744 ; }
Die Menülinks werden mit Ausnahme des letzten durch einen rechten Rand von 1 Pixel getrennt. Unter Berücksichtigung des Box-Modells aus dem letzten Tutorial wird die Breite des Menülinks durch das Hinzufügen des Rahmens um 1 Pixel erhöht, sodass er 101 Pixel beträgt. Daher ändern wir hier das Box-Sizing-Modell in Border-Box, um es beizubehalten die Menülinkbreite bei 100px.
Nav li a (Rand rechts: 1px solid # 576979 ; box-sizing:border-box ; -moz-box-sizing:border-box ; -webkit-box-sizing:border-box ; ) nav li:last-child a ( border-right : 0 ; )
Nav a:hover , nav a:active ( Hintergrundfarbe : #8c99a4 ; )
Nav a#pull ( Anzeige : keine ; )
An diesem Punkt gestalten wir nur den Navigationsblock, und es passiert nichts, wenn wir die Größe des Browserfensters ändern. Kommen wir also zum nächsten Schritt.
Medien-Anfragen
Menüanzeige
An diesem Punkt ist das Menü immer noch ausgeblendet und wird nur sichtbar, wenn es benötigt wird, nachdem auf den Menü-Link getippt oder geklickt wurde, und wir können diesen Effekt mit slideToggle() von jQuery erzielen.
$(function() ( var pull = $("#pull" ) ; menu = $("nav ul" ) ; menuHeight = menu.height () ; $(pull) .on ("click" , function(e) ( e.preventDefault () ; menu.slideToggle () ; ) ) ; ) );
Wenn Sie jedoch die Größe des Fensters auf einem kleinen Bildschirm direkt nach dem Ein- und Ausblenden des Menüs ändern, wird das Menü ausgeblendet, da der von jQuery generierte display: none -Stil immer noch auf das Element angewendet wird.
Also müssen wir diesen Stil entfernen, wenn wir die Größe des Fensters wie folgt ändern:
$(window) .resize (function() ( var w = $(window) .width () ; if(w > 320 && menu.is (":hidden" ) ) ( menu.removeAttr ("style" ) ; ) ) ) ;
Das ist alles, das ist alles, was wir an Code benötigen. Jetzt können wir den Navigationsblock über die folgenden Links anzeigen, und wir empfehlen, ihn mit einem Design-responsiven Tool wie dem Responsinator zu testen, damit Sie ihn sehen können verschiedene Varianten gleichzeitig seine Breite.
Bonus: Alternativer Weg
Wie bereits in diesem Tutorial erwähnt, gibt es andere Möglichkeiten, dies zu tun, und mit JavaScript Die SelectNav.js-Bibliotheken sind eine der einfachsten Möglichkeiten. Das reines JavaScript, die nicht von anderen Bibliotheken von Drittanbietern wie jQuery abhängt.
Grundsätzlich wird dadurch Ihre Menüliste dupliziert und in umgewandelt
Einer der Vorteile dieser Methode ist, dass wir uns nicht um die Gestaltung des Navigationsfelds kümmern müssen, da das Menü
Übersetzung - Schreibtisch
Horizontales Menü ist eine Liste von Abschnitten der Website, daher ist es logischer, innerhalb des Elements zu markieren
- und wenden Sie dann CSS-Stile auf seine Elemente an. Diese Anordnung des Menüs ist aufgrund der offensichtlichen Vorteile bei der Positionierung auf einer Webseite am gebräuchlichsten.
- Menüpunkt
- Menüpunkt
- Menüpunkt ...
- enthält einen Link . HTML5 hat ein separates Tag für die Navigation eingeführt
So erstellen Sie ein horizontales Menü: Markup- und Designbeispiele
HTML-Markup und grundlegende Stile für das horizontale Menü
Standardmäßig werden alle Listenelemente lokalisiert vertikal, die die gesamte Breite des Behälterelements überspannt, das wiederum die gesamte Breite seines Behälterblocks überspannt.
HTML-Markup für die horizontale Navigation
Ein innerhalb des Tags befindliches horizontales Menü kann zusätzlich innerhalb des Elements platziert werden und/oder
... . Dank dieses HTML-Markups wird semantische Bedeutung gegeben und erscheint auch zusätzliche Möglichkeit um den Menüblock zu formatieren.Es gibt mehrere Möglichkeiten, sie zu platzieren horizontal. Zuerst müssen Sie die Standardbrowserstile für Navigationselemente zurücksetzen:
Ul ( list-style: none; /*listenmarkierungen entfernen*/ margin: 0; /*den oberen und unteren Rand von 1em entfernen*/ padding-left: 0; /*den linken Abstand von 40px entfernen*/ ) a ( text-decoration: none; /*Unterstreichung des Linktextes entfernen*/)
Methode 1. li (Anzeige: inline;)
Machen Sie Listenelemente inline. Als Ergebnis werden sie horizontal angeordnet, auf der rechten Seite wird zwischen ihnen ein Abstand von 0,4 em hinzugefügt (berechnet relativ zur Schriftgröße). Um es zu entfernen, fügen Sie li li einen negativen rechten Rand hinzu (margin-right: -4px;) . Gestalten Sie als Nächstes die Links nach Ihren Wünschen.
Methode 2. li (float: left;)
Wir machen die Elemente der Liste schwebend. Dadurch sind sie horizontal angeordnet. Die Höhe des ul-Containerblocks wird Null. Um dieses Problem zu lösen, fügen wir (overflow: hidden;) zu ul hinzu, erweitern es und erlauben es so, schwebende Elemente zu enthalten. Fügen Sie für Links ein (Anzeige: Block;) hinzu und gestalten Sie sie nach Ihren Wünschen.
Methode 3. li (Anzeige: Inline-Block;)
Listenelemente inline-blockieren. Sie sind horizontal angeordnet, auf der rechten Seite entsteht wie im ersten Fall eine Lücke. Fügen Sie für Links ein (Anzeige: Block;) hinzu und gestalten Sie sie nach Ihren Wünschen.
Methode 4. ul (Anzeige: flex;)
Die ul-Liste mithilfe der .ul-Liste zu einem flexiblen Container machen. Dadurch werden die Elemente der Liste horizontal angeordnet. Fügen Sie ein (Anzeige: Block;) für Links hinzu und gestalten Sie sie nach Ihren Wünschen.
1. Responsives Menü mit Unterstreichungseffekt beim Bewegen der Maus über einen Link
@Import-URL("https://fonts.googleapis.com/css?family=Ubuntu+Condensed"); .menu-main ( list-style: none; margin: 40px 0 5px; padding: 25px 0 5px; text-align: center; background: white; ) .menu-main li (display: inline-block;) .menu- main li:after ( Inhalt: "|"; Farbe: #606060; Anzeige: Inline-Block; vertikale Ausrichtung:top; ) .menu-main li:last-child:after (Inhalt: keine;) .menu-main a ( Textdekoration: keine; Schriftfamilie: "Ubuntu Condensed", serifenlos; Buchstabenabstand: 2px; Position: relativ; Polsterung unten: 20px; Rand: 0 34px 0 30px; Schriftgröße: 17px; Text-Transformation: Großbuchstaben; Anzeige: Inline-Block; Übergang: Farbe .2s; ) .menu-main a, .menu-main a:visited (Farbe: #9d999d;) .menu-main a.current, .menu- main a:hover(color: #feb386;) .menu-main a:before, .menu-main a:after ( content: ""; position: absolute; height: 4px; top: auto; right: 50%; bottom : -5px; links: 50%; Hintergrund: #feb386; Übergang: .8s; ) .menu-main a:hover:before, .menu-main .current:before (links: 0;) .menu-main a: hover:after, .menu-main .current:after (rechts: 0; ) @media (max-width: 550px) ( .menu-main (padding-top: 0;) .menu-main li (display: block;) .menu-main li:after (content: none;) .menu- main a ( padding: 25px 0 20px; Rand: 030px; ) )2. Responsives Menü für eine Hochzeitswebsite
@Import-URL("https://fonts.googleapis.com/css?family=PT+Sans"); .top-menu ( position: relative; background: #fff; box-shadow: inset 0 0 10px #ccc; ) .top-menu:before, .top-menu:after ( content: ""; display: block; height : 1 Pixel; Rand oben: 3 Pixel fest #575350; Rand unten: 1 Pixel fest #575350; Rand unten: 2 Pixel; ).top-menu:after (Rand unten: 3 Pixel fest #575350; Rand oben: 1 Pixel fest #575350; box-shadow: 0 2px 7px #ccc; margin-top: 2px; ) .menu-main ( list-style: none; padding: 0 30px; margin: 0; font-size: 18px; text-align: center; position: relative; ) .menu-main:before, .menu-main:after ( content: "\25C8"; line-height: 1; position: absolute; top: 50%; transform: translateY(-50% ); ) .menu-main:before (links: 15px;) .menu-main:after (rechts: 15px;) .menu-main li ( display: inline-block; padding: 5px 0; ) .menu-main a ( Textdekoration: keine; Anzeige: Inline-Block; Rand: 2px 5px; Polsterung: 6px 15px; Schriftfamilie: "PT Sans", serifenlos; Schriftgröße: 16px; Farbe: #777777; Rand unten : 1px solide transparent n: 0,3 s linear; ) .menu-main .current, .menu-main a:hover ( Randradius: 3px; Hintergrund: #f3ece1; Farbe: #313131; Textschatten: 0 1px 0 #fff; Randfarbe: #c6c6c6; ) @media (max-width: 500px) ( .menu-main li (display: block;) )3. Responsive Menü mit Jakobsmuscheln
@Import-URL("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .menu-main ( list-style: none; padding: 0 30px; margin: 0; font-size: 18px; text-align: center; position: relative; background: white; ) .menu-main:after ( content: ""; Position: absolut; Breite: 100 %; Höhe: 20 Pixel; links: 0; unten: -20 Pixel; Hintergrund: Radialverlauf (weiß 0 %, weiß 70 %, rgba(255,255,255,0) 70 %, rgba( 255,255,255,0) 100%) 0 -10px; Hintergrundgröße: 20px 20px; Hintergrundwiederholung: Wiederholung-x; ) .menu-main li (Anzeige: Inline-Block;) .menu-main a ( Textdekoration: keine; Anzeige: Inline-Block; Rand: 0 15px; Polsterung: 10px 30px; Schriftfamilie: "PT Sans Caption", serifenlos; Farbe: #777777; Übergang: .3s linear; Position: relativ; ) .menu -main a:before, .menu-main a:after ( content: ""; position: absolute; top: calc(50% - 3px); width: 6px; height: 6px; border-radius: 50%; background: #F58262; Deckkraft: 0; Übergang: .5s Ease-in-out; ) .menu-main a:before (links: 5px;) .menu-main a:after (rechts: 5px;) .menu-main a. aktuell:vorher, .menu-main a.cur rent:after, .menu-main a:hover:before, .menu-main a:hover:after (Deckkraft: 1;) .menu-main a.current, .menu-main a:hover (Farbe: #F58262; ) @media(max-width:680px) ( .menu-main li (Anzeige: Block;) )4. Reaktionsschnelles Menüband
@Import-URL("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .top-menu ( Rand: 0 60px; Position: relativ; Hintergrund: #5A394E; Box-Schatten: Einschub 1px 0 0 rgba(255,255,255,.1), Einschub -1px 0 0 rgba(255,255,255,.1), Einschub 150px 0 150px -150px rgba(255,255,255,.12), Einschub -150px 0 150px -150px rgba(255,255,255,.12); ) ; Z-Index: 2; links: 0; Breite: 100%; Höhe: 3px; ) . top-menu:before (oben: 0; border-bottom: 1px gestricheltes rgba(255,255,255,.2); ) .top-menu:after (bottom: 0; border-top: 1px gestricheltes rgba(255,255,255,.2); ) .menu-main ( list-style: none; padding: 0; margin: 0; text-align: center; ) . menu-main:before, .menu-main:after ( content: ""; position: absolute; Breite: 50 Pixel; Höhe: 0; Oben: 8 Pixel; Rand oben: 18 Pixel solide #5A394E; Rand unten: 18 Pixel solide # 5A394E; Transformation: Rotieren (360 Grad); Z-Index: -1; ) .menu-main: vorher (links: -30px; linker Rand: 12px solides RGB(255, 255, 255, 0); ) .menu- main:after (rechts: -30px; rechter Rand: 12px solides RGB(2 55, 255, 255, 0); ) .menu-main li ( display: inline-block; margin-right: -4px; ) .menu-main a ( text-decoration: none; display: inline-block; padding: 15px 30px; font-family: "PT Sans Caption", serifenlos; Farbe: weiß; Übergang: .3s linear; ) .menu-main a.current, .menu-main a:hover (Hintergrund: rgba(0,0,0,.2);) @media (max-width: 680px) ( .top-menu (margin: 0;) .menu-main li ( display: block; margin-right: 0; ) .menu-main:before, .menu-main:after (Inhalt: keine;) .menu-main a (Anzeige: block;) )5. Responsives Menü mit einem Logo in der Mitte
@Import-URL("https://fonts.googleapis.com/css?family=Arimo"); .top-menu ( position: relative; background: rgba(34,34,34,.2); ) .menu-main ( list-style: none; margin: 0; padding: 0; ) .menu-main:after ( Inhalt: ""; Anzeige: Tabelle; Löschen: beide; ) .left-item (float: left;) .right-item (float: right;) .navbar-logo ( Position: absolute; left: 50%; top : 50%; transform: translate(-50%,-50%); ) .menu-main a (Textdekoration: keine; Anzeige: Block; Zeilenhöhe: 80px; Polsterung: 0 20px; Schriftgröße: 18px ; Buchstabenabstand: 2px; Schriftfamilie: "Arimo", serifenlos; Schriftstärke: fett; Farbe: weiß; Übergang: .3s linear; ) .menu-main a:hover (Hintergrund: rgba(0, 0,0,.3);) @media (max-width: 830px) ( .menu-main ( padding-top: 90px; text-align: center; ) .navbar-logo ( position: absolute; left: 50% ;top: 10px; transform: translateX(-50%); ) .menu-main li (float: none; display: inline-block; ) .menu-main a ( line-height: normal; padding: 20px 15px; font -size: 16px; ) ) @media (max-width: 630px) ( .menu-main li (display: block;) )6. Responsives Menü mit Logo auf der linken Seite
@Import-URL("https://fonts.googleapis.com/css?family=Arimo"); .top-menu ( background: rgba(255,255,255,.5); box-shadow: 3px 0 7px rgba(0,0,0,.3); padding: 20px; ) .top-menu:after ( content: "" ;display: table; clear: both; ) .navbar-logo (display: inline-block;) .menu-main ( list-style: none; margin: 0; padding: 0; float: right; ) .menu-main li (display: inline-block;) .menu-main a ( text-decoration: none; display: block; position: relative; line-height: 61px; padding-left: 20px; font-size: 18px; letter-spacing : 2px; Schriftfamilie: "Arimo", serifenlos; Schriftstärke: fett; Farbe: #F73E24; Übergang: .3s linear; ) .menu-main a:before ( Inhalt: ""; Breite: 9px; Höhe: 9px; Hintergrund: #F73E24; Position: absolut; links: 50%; transformieren: rotieren (45 Grad) translateX (6.5px); Deckkraft: 0; Übergang: .3s linear; ) .menu-main a:hover:before (Deckkraft: 1;) @media (max. Breite: 660px) ( .menu-main ( float: none; padding-top: 20px; ) .top-menu ( text-align: center; padding: 20px 0 0 0; ) .menu-main a (Padding: 0 10px;) .menu-main a:be fore (transform: rotation(45deg) translateX(-6px);) ) @media (max-width: 600px) ( .menu-main li (display: block;) )Navigation ist auf jeder guten Website vorhanden, auch wenn es sich um eine einseitige Website handelt. Je nach Situation können Navigationslinks zu verschiedenen Abschnitten der Website führen oder zu einem Lesezeichen (Anker) senden, das sich auf der aktuellen Seite befindet. Eine kompetente Zusammenstellung der Navigation, bei der der Benutzer nicht verwirrt wird, erfordert gewisse Kenntnisse und Erfahrungen. Auch das Design der Navigationsleiste muss mit Bedacht angegangen werden, und in diesem Tutorial zeigen wir Ihnen, wie Sie ein komfortables Navigationsmenü erstellen.
Navigation erstellen
Was ist Navigation? Dies ist eine Reihe von Links, die oft nach Bedeutung geordnet und gruppiert sind. Ein Navigationsmenü wird oft mit einem HTML-Listen-Tag erstellt.
- , wo an jedem Punkt
- Inline, zusätzlich zum obigen "Standard" -Code: