Hinweis
Dieser Beitrag ist schon etwas in die Jahre gekommen. Zwar funktioniert das Dropdown-Menü so wie es soll, der Code ist jedoch nicht hunderprozentig valide. Ich habe daher ein aktualisiertes Tutorial dazu geschrieben, welches du unter diesem Link findest.
Ich habe mir schon lange vorgenommen mal ein Tutorial für ein horizontales Dropdown-Menü zu erstellen. Und da ich gerade mal wieder ein wenig Zeit und Lust hatte, habe ich mal hingesetzt und ein wenig ausprobiert.
Das ist dabei rausgekommen:
Wenn ihr ebenfalls etwas Zeit und Lust mitbringt, zeige ich in diesem Tutorial, wie ihr ein schickes horizontales Dropdown-Menü erstellt. Das Menü wird, mit Ausnahme der Hauptmenü-Icons, CSS-only, wir verwenden also keine Bilddateien.
Das Grundgerüst
Fangen wir mit der HTML-Struktur eines einfachen Menüs (ohne Untermenüs) an. Wir definieren einen übergeordneten Div-Container (menu
) eine Aufzählungsliste (ul
) mit Listenelementen (li
), welche von einem Hyperlink (a
) umschlossen sind, damit das gesamte Listenelement und nicht nur der Name klickbar ist.
<div id="menu"> <ul> <a href="#"><li>Home</li></a> <a href="#"><li>Über mich</li></a> <a href="#"><li>Kategorien</li></a> <a href="#"><li>Tags</li></a> <a href="#"><li>Gästebuch</li></a> <a href="#"><li>Impressum</li></a> </ul> </div>
Ohne Style-Deklaration wird das Menü vertikal dargestellt:
Damit das Menü horizontal angeordnet wird, definieren wir den Div-Container sowie die Aufzählungsliste und die Listenelemente wie folgt:
#menu { position: relative; width: 900px; margin: 20px auto; } #menu ul { position: absolute; margin: 0 auto; list-style: none; } #menu ul li { float: left; margin: 0 0 0 20px; }
womit das Menü nun wie gewollt horizontal ausgerichtet ist:
Um das Menü um Untermenüs zu erweitern, fügen wir im HTML-Code beim entsprechenden Hauptmenüpunkt eine weitere Aufzählungsliste mit weiteren Listenelementen ein.
<div id="menu"> <ul> <li><a href="#">Home</a></li> <li><a href="#">Über mich</a></li> <li><a href="#">Kategorien</a> <ul> <a href="#"><li>Kategorie 1</li></a> <a href="#"><li>Kategorie 2</li></a> <a href="#"><li>Kategorie 3</li></a> <a href="#"><li>Kategorie 4</li></a> <a href="#"><li>Kategorie 5</li></a> </ul> </li> <li><a href="#">Tags</a></li> <ul> <a href="#"><li>Tag 1</li></a> <a href="#"><li>Tag 2</li></a> <a href="#"><li>Tag 3</li></a> <a href="#"><li>Tag 4</li></a> <a href="#"><li>Tag 5</li></a> </ul> </li> <li><a href="#">Gästebuch</a></li> <li><a href="#">Impressum</a></li> </ul> </div>
Die weiteren Aufzählungslisten sowie die darin enthaltenen Listenelemente müssen entsprechend formatiert werden: die Aufzählungsliste positionieren wir absolut, 30 Pixel unterhalb des Hauptmenüs. Die Listenelemente des Untermenüs sollen nicht mehr horizontal sondern vertikal ausgerichtet werden. Daher werden diese nicht mehr gefloatet.
#menu ul ul { position: absolute; top: 30px; padding: 0; margin: 0; } #menu ul ul li { float: none; margin: 0; }
Das Menü zeigt nun die Hauptmenüelemente sowie die Untermenüelemente an:
Damit die Untermenüs nur angezeigt werden, wenn das Hauptmenüelement gehovert wird, verschieben wir die Untermenüs aus dem Bildausschnitt. Bei :hover
des Hauptmenüelements wird das Untermenü dann wieder zurück ins Bild geholt:
#menu ul ul { top: -9999px; } #menu ul li:hover ul { top: 55px; }
Das Grundgerüst für unser Menü ist damit abgeschlossen. Machen wir uns nun an den Feinschliff.
Das Feintuning
Beginnen wir mit der Schriftart. Ich habe in der Demo den Google Web Font „Bree Serif“ verwendet. Diesen binden wir als Standard-Schriftart für das gesamte Menü in die Style-Deklaration wie folgt ein:
@import url(http://fonts.googleapis.com/css?family=Bree+Serif); #menu { font-family: 'Bree Serif', serif; }
Widmen wir uns nun den Hauptmenüpunkten. Wir formatieren die Schrift und binden bei jedem Listenelement ein vorangestelltes Icon ein. Gleichzeitig verändern wir auch noch das Aussehen der Hyperlinks.
Die Icons mit einer Größe von 20 x 20 Pixeln binden wir als img
in den HTML-Code ein. Mittels border-radius
erhalten diese einen runden Hintergrund.
Wo wir gerade beim HTML sind, ergänzen wir die bisherigen Untermenüs um eine Überschrift (h3
). Ändert die HTML-Deklaration von oben wie folgt:
<div id="menu"> <ul> <li><a href="#"><img src="../images/home.png">Home</a></li> <li><a href="#"><img src="../images/ich.png">Über mich</a></li> <li><a href="#"><img src="../images/kategorien.png">Kategorien</a> <ul> <h3>Meistgenutzte Kategorien</h3> <a href="#"><li>Kategorie 1</li></a> <a href="#"><li>Kategorie 2</li></a> <a href="#"><li>Kategorie 3</li></a> <a href="#"><li>Kategorie 4</li></a> <a href="#"><li>Kategorie 5</li></a> </ul> </li> <li><a href="#"><img src="../images/tags.png">Tags</a> <ul> <h3>Meistgenutzte Tags</h3> <a href="#"><li>Tag 1</li></a> <a href="#"><li>Tag 2</li></a> <a href="#"><li>Tag 3</li></a> <a href="#"><li>Tag 4</li></a> <a href="#"><li>Tag 5</li></a> </ul> </li> <li><a href="#"><img src="../images/gb.png">Gästebuch</a></li> <li><a href="#"><img src="../images/impressum.png">Impressum</a></li> </ul> </div>
und definiert im CSS
#menu h3 { font-size: 16px; color: #fff; padding: 10px; margin: 0; background: #000; line-height: 20px; } #menu ul li { line-height: 50px; } #menu ul li a { color: #000; text-decoration: none; } #menu ul li a:hover { color: #999; } #menu ul li img { float: left; width: 16px; height: 16px; margin: 14px 5px; padding: 6px; background: #999; -webkit-border-radius: 25px; -moz-border-radius: 25px; border-radius: 25px; }
Kurz zur Erklärung des line-height
: Die Listenelemente des Hauptmenüs erhalten eine Zeilenhöhe von 50 Pixeln. Das ist notwendig, da wir die Untermenüs nach unten versetzen. Zwischen Hauptmenü und Untermenü wäre damit ein Abstand, der das hovern auf die Untermenüelemente unmöglich macht. Durch die Erhöhung der Zeilenhöhe gibt es keinen Abstand mehr und man kann ohne Probleme vom Hauptmenü in das Untermenü wechseln.
Die Zeilenhöhe von 50 Pixeln macht es notwendig die Bilddateien vertikal zu zentrieren. Zu diesem Zweck, definieren wir einen Außenabstand (margin
).
So schaut’s mittlerweile aus:
Kommen wir zu den Untermenüs, welche wir noch etwas aufhübschen werden. Wir verpassen der Aufzählungsliste des Untermenüs einen schicken Box-Schatten (box-shadow
), passen Innen- und Außenabstände der Liste sowie deren Elementen an, trennen die Listenelemente durch eine dezente Rahmenlinie unten und formatieren die Hyperlinks.
#menu ul ul { margin: 0; -webkit-box-shadow: 0 10px 20px #888; -moz-box-shadow: 0 10px 20px #888; box-shadow: 0 10px 20px #888; } #menu ul ul li { float: none; font-size: 16px; padding: 5px 10px; text-align: left; text-transform: uppercase; margin: 0; border-bottom: 1px solid #ddd; line-height: 20px; } #menu ul ul li:hover { background: #333; color: #fff; } #menu ul ul a { color: #333; text-decoration: none; }
Da wären wir:
Die Untermenüs sollen einen kleinen Pfeil in Richtung des Icons des Hauptmenüelements erhalten
Dazu nutzen wir das Pseudo-Element :before
:
#menu ul ul:before { position: absolute; content:""; width: 10px; height: 10px; top: -5px; left: 20px; background: #000; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -o-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); }
Kurz erklärt: wir erstellen mit der Anweisung ein Quadrat, drehen es mittels transform
um 45 Grad und positionieren es in das Untermenü, so dass der Pfeil genau mittig auf das Hauptmenüelement zeigt.
Das letzte Element in der Liste werden wir anders formatieren; insbesondere entfernen wir die Rahmenliste unten. Dazu erstellen wir eine Klasse, die sich auf die Listenelemente des Untermenüs bezieht.
#menu ul ul li.last { font-size: 12px; border-bottom: none; text-transform: none; }
Die zusätzliche Klasse müssen wir im HTML-Code beim letzten Listenelement der Untermenüs ergänzen:
<div id="menu"> <ul> <li><a href="#"><img src="../images/home.png">Home</a></li> <li><a href="#"><img src="../images/ich.png">Über mich</a></li> <li><a href="#"><img src="../images/kategorien.png">Kategorien</a> <ul> <h3>Meistgenutzte Kategorien</h3> <a href="#"><li>Kategorie 1</li></a> <a href="#"><li>Kategorie 2</li></a> <a href="#"><li>Kategorie 3</li></a> <a href="#"><li>Kategorie 4</li></a> <a href="#"><li>Kategorie 5</li></a> <a href="#"><li class="last">Letztes Listenelement →</li></a> </ul> </li> <li><a href="#"><img src="../images/tags.png">Tags</a> <ul> <h3>Meistgenutzte Tags</h3> <a href="#"><li>Tag 1</li></a> <a href="#"><li>Tag 2</li></a> <a href="#"><li>Tag 3</li></a> <a href="#"><li>Tag 4</li></a> <a href="#"><li>Tag 5</li></a> <a href="#"><li class="last">Letztes Listenelement →</li></a> </ul> </li> <li><a href="#"><img src="../images/gb.png">Gästebuch</a></li> <li><a href="#"><img src="../images/impressum.png">Impressum</a></li> </ul> </div>
Dem letzten Listenelement verpassen wir noch einen Pfeil nach rechts mittels des HTML-Zeichens →
.
Damit wäre das Menü schon einsatzbereit.
Als Sahnehäubchen wollen wir zum Schluss noch die Listenelemente, genauer gesagt den Farbübergang bei :hover
, per transition
animieren. Wir fügen dazu noch hinzu:
#menu ul li a { -webkit-transition: all .5s ease-in-out; -moz-transition: all .5s ease-in-out; -o-transition: all .5s ease-in-out; -ms-transition: all .5s ease-in-out; transition: all .5s ease-in-out; }
für die Listenelemente des Hauptmenüs und
#menu ul ul li { -webkit-transition: all .5s ease-in-out; -moz-transition: all .5s ease-in-out; -o-transition: all .5s ease-in-out; -ms-transition: all .5s ease-in-out; transition: all .5s ease-in-out; }
für die Listenelement der Untermenüs.
Da fällt mir gerade noch eins ein: wir könnten den Hintergrund der Icons der Hauptmenüelemente noch bei :hover
verändern und den Farbübergang ebenfalls animieren. Dazu ergänzen wir
#menu ul li img { -webkit-transition: all .5s ease-in-out; -moz-transition: all .5s ease-in-out; -o-transition: all .5s ease-in-out; -ms-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } #menu ul li:hover img { background: #000; }
Fertig.
Browserkompatibilität
Das Menü sollte in allen aktuellen Browsern einheitlich dargestellt werden. Da der Internet Explorer 9 keine transition
verarbeiten kann, sind die Farbübergänge der Listenelemente nicht animiert. Das sollte allerdings verschmerzbar sein.
Wie immer gibt es die Live-Demo zum Probefahren:
und den Download zur freien Verwendung
Variante
Eine Variante hätte ich noch. Ein wenig anders aufgemacht und mit Untermenüs:
Auch hier gibt es eine Live-Demo:
sowie den Download:
Viel Spass damit.
Ich hab mal ne Frage: Wie kann ich die Variante zentrieren? Also wenn ich da noch mehr obere Menüpunkte hinzufüge dass das immer mittig bleibt?
Hallo Max,
hier gibt es eine gute Beschreibung, wie eine Aufzählungsliste horizontal zentriert werden kann.
Gruß Olli
Hallo zurück,
iwie bekomme ich das nicht hin, wenn ich das mache tut das die Kästchen so komisch verziehen. Dann ist das in der Mitte länger als die anderen. Kannst du mir sagen wo ich das hinschreiben muss, das die Kästchen gleich bleiben?
MfG Max
Hallo Oliver,
ein sehr schönes Tutorial und ein wirklich schickes Dropdown Menü.
Kurz zu der Zentrierung:
Das Problem bei einigen wird wohl sein, dass die Navigation zu lang
für die 800px ist. Also erstmal diese Länge einfach anpassen, z. B. 1024px.
Um das Ganze perfekt zu zentrieren gleicht man noch die 20px Außenabstand
durch ein margin-left:-20px für #menue nav an.
Viele Grüße von der Bergstraße
Vielen dank bin gerade am lernen mit css umzugehen (just4fun) mein menu wollte nicht so wie ich das wollte deine Erklärung hat mir gut weiter geholfen
und nun habe ich das gewünschte menu.
MFG
Hallo Olli,
meine Frage hat zwar nicht direkt etwas mit dem Menü zu tun, aber interressiert mich trotzdem. Welches Plugin/ Colde hast du benutzt, dass wenn du Code einfügst der so cool erschint?
Liebe Grüße Dorian
Hallo Dorian,
das ist das Plugin SyntaxHighlighter Evolved.
Gruß Olli
Hallo Olli,
ich habe mir das Plugin installiert, nur kriege ich es nicht aktiviert. Ich habe den entsprechenden Code in
gesetzt, aber man sieht nur die ganznormale Ansicht (ohne Plugin). Hast Du eine Idee, was ich ändern muss/ was hast du gemacht, das es funktioniert. Ich benutzte bereits WordPress 3.4, denke aber das daher nicht die schwierigkeiten kommen, denn sonnst funktioniert alles (im Backend).
Vielen Dank für deine Hilfe.
LG Dorian
Hallo Dorian,
probier es mal mit eckigen Klammern:
Du kannst auch verschiedene „Sprachen“ nutzen. Für CSS-Code nutzt du:
Gruß Olli
Hallo Olli,
danke für deinen Tipp. Es hat geklappt. Aber eine Frage hätte ich noch: dein Layout für SyntayHighlighter Evolved ist keins der Standart-Layouts, oder? Und wie schaffe ich es eine Zeile hervorzuheben?
Liebe Grüße Dorian
Hallo Dorian,
doch, ist das Standard-Design. Hab’s nur ein wenig angepasst. Zeile hervorheben? Schau mal auf der Webseite vom Autor des Plugins.
Gruß Olli
Hallo Olli,
super Anleitung, danke, eine Frage hab ich allerdings die sich wohl nicht direkt auf das Menu bezieht, aber evtl kannst du mir helfen.
Das Menu selber sitzt bei mir in einem Header div und darunter liegt der Content div, das Menu schiebt sich aber andauernd unter das Content div, selbst wenn ich versuche irgendwie mit z-index zu arbeiten.
Hast du da evtl einen Tipp fuer mich?
Gruss,
Ben
Hallo Ben,
hast du nen Link, wo ich mir das mal anschauen kann (gerne auch per Kontaktformular)?
Gruß Olli
Ist per Kontaktformular abgeschickt :)
hio!! danke für das super tutorial, habe schon verschiedene lösungen ausprobiert und bin immer am IE9 gescheitert, der einfach die menus verschob! außerdem find ichs super das man das frei verwenden kann, werde wenn meine seite online geht deinen namen und homepage dankend in den quelltext verewigen!!!
liebe grüße, du hast da ein tolle sehr informative seite!
Hallo Oliver,
vielen Dank für dieses Tutorial. Hast du auch eine Lösung für :hover auf dem iPad? Ich habe über Google folgende Ergänzung für die css-Datei gefunden:
1. Schritt
#menu ul li:hover ul {
top: 55px;
display: block; /*für hover iPad*/
}
2. Schritt
#menu ul ul {
position: absolute;
top: -9999px;
display: none; /* für hover iPad*/
Weihnachtliche Grüße.
Jörg
Hallo Jörg,
wenn der Hauptmenüpunkt einen Link enthält, ist das ist ein Problem, da hast du recht. Deine Ergänzung reagiert aber auch auf ein :hover des Listenelements. Das wird imo nicht klappen.
Die einzige praktikable Möglichkeit die mir da spontan einfällt, wären Media Queries, mit denen die Untermenüs dann als normale Listenelemente angezeigt werden. So mache ich das mit dem Menü bei einigen meiner WordPress-Themes (z.B. ‚ZEHN‚).
Gruß Olli
Hallo, vielen vielen Dank für das äußerst coole DDM!
Mein Anliegen ist folgendes: wir sollen für die FH ein WordPressdesign erstellen, das u.a. ein Drop-Down Menu beinhaltet.
Nun dachte ich mir, dass ich das hübscher mache und deine Vorlage nehme (ich hoffe ich darf das? :) )
Jetzt habe ich das Problem, dass das Menü als Dummy an sich funktioniert, aber mit ‚menu‘ , ‚depth‘ => 4 ) ); ?> nur eine häßliche Linkliste zu sehen ist.
Könntest du mir evtl helfen, ein ähnlich hübsches Drop-Down menu in WordPress zu implementieren?
Vielen Dank
Christian Koch
Hallo Christian,
ob du das darfst, musst du mit deinem Dozenten klarmachen :) Von meiner Seite gerne.
Das Menü kannst du 1:1 für WordPress nutzen. Du musst nur die Ausgabe von
evtl. anpassen. Die Funktionsreferenz kennst du, oder?
Vielleicht hilft dir auch schon:
Dadurch wird kein zusätzlicher Div-Container für das Menü ausgegeben.
Gruß Olli
super danke! nene mein Dozent hat da nix gegen, eigentlich sollten wir auch ein (X)HTML /HTML5 Design nehmen und WordPress da reinzwängen.
schau dir mal meine Seite an bisher :) http://fhhtest.comuf.com/wordpress1/
jetzt muss ich noch ein Parent Class Menu einbauen. also Oben hauptnavigation und in der sidebar die childnavigation. Hast du da auch Tutorials für?
Vielen Dank
Christian
Hallo Christian,
ne, aber das kannst du sicher auch mit dem WordPress Nav-Menü machen.
Gruß Olli
Hey Olli Geiles Menü :D Respekt..
Hab nur eine Frage wie kann ich des Machen dass der Menü BG Transparent ist oder dass ich eigene Bilder einfügen kann..
LG
Phill
Hallo Phill,
du möchtest das Untermenü transparent machen? Das kriegst du am besten mit RGBA-Farben hin. So zum Beispiel:
Menübilder deklarierst du im HTML-Code, wie ich’s beschrieben habe:
Gruß Olli
Hallo Zusammen,
vorab ebenfalls großen Dank an Dich Olli für dieses hilfreiche Tut! Großartig.
Mich würde allerdings interessieren, was aus BEN (7. August 2012 um 21:30) geworden ist?
Also eher ob Ihr eine Lösung gefunden habt, da mich selbiges Schicksal ereilte :(
Danke nochmals
Gruß
Daniel
Hallo Daniel,
ist schon so lange her ;) Kann mich nicht mehr erinnern, was wir damals gemacht haben.
Beschreib‘ doch mal dein Problem. Wenn du einen Link posten kannst, wäre das hilfreich. Gerne auch per Kontaktformular.
Gruß Olli
hallo,
danke fuer das tolle tutorial.
wie wuerde man denn beim zweiten beispiel eine dritte ebene inkl. hover etc. reinbringen?
Hallo Greg,
wir haben im Stylesheet das Menü für die zweite Ebenen formatiert. Das gilt auch für alle weiteren Ebenen. Du musst also nur im HTML-Quellcode ein weiteres Untermenü anlegen. Das sollte dann so wie die zweite Ebene formatiert werden.
Gruß Olli
Das Tutorial war extrem hilfreich. Prima erklärt! Danke dafür.
Hallo
erst einmal echt ganz toll gemacht. Sehr schön nachvollziehbar. Ich habe mal eine Frage. Und zwar möchte ich die zweite Variante nutzen. Ist es möglich dort die einzelnen Menuepunkte 120px breit zu machen und eine höhe von 30px? Ebenfalls auch das Untermenü? Es wär klasse, wenn du Antworten auf meine Frage hast.
Viele Grüße
Antigone
Hallo Antigone,
hab für dich die Listenelemente auf eine feste Höhe und Breite angepasst. Schick’s dir gleich per Mail.
Viel Spass damit.
Gruß Olli
Hi Olli,
super vielen Dank für die schnelle Hilfe finde ich echt klasse, dass Du so etwas machst.
Viele Grüße
Antigone
Hi Olli,
finde dein Menü echt super! :)
Gibts eine Möglichkeit, dass sie auch in älteren Browsern läuft?
In alten IE scheint es nicht zu funktionierten :(
Danke und lg
Hi Matthias,
wird man sicher mit der ein oder anderen Anpassungen auch mit dem IE < 9 hinbekommen. Meine persönliche Meinung dazu: warum soll ich mir heutzutage die Mühe machen meine Webseite für mehrere Jahre alte Browser anzupassen? Wer heute keinen aktuellen Browser einsetzt hat halt Pech (und ein gewaltiges Sicherheitsproblem) und muss mit nicht optimaler Darstellung moderner Webseiten rechnen. Ich sehe auf meiner Seite das nur ein sehr geringer Anteil (weniger als 3%) mit einem älteren Browser unterwegs ist. Ich habe mit dem IE < 9 schon vor einigen Jahren abgeschlossen ;) Wenn du das Menü mit dem IE hin bekommst, kannst du hier natürlich gerne das Ergebnis posten. Gruß Olli
Hi Oli !
Ich beschäftige mich erst seit knapp einem Jahr mit dem Thema Webdesign und allem was da so mit drann hängt. Erarbeite mir alles im Selbststudium mittels Galileo DXD’s, Literatur und Internetrecherche. Es gibt nur sehr wenige, die ihr geistiges Eigentum so toll, verständlich und entgeltlos aufbereiten bzw. zur freien Verfügung stellen. Die meisten EDV’ler werden meist nur gestoßen, wenn etwas nicht funktioniert, daher denke ich ist es an der Zeit ganz einfach einmal „nur DANKE“ zu sagen. Ohne Leute wir dich oder Peter würde ich zwar nicht mehr in Kinderschuhen stecken, aber bei weitem noch nicht so weit sein. Ich schau immer wieder (seit ich auf dich gestoßen bin) gerne bei dir vorbei.
LG daHari
Hallo daHari,
vielen Dank für deine netten Worte. Freut mich immer ganz besonders so positives Feedback zu bekommen. Zeigt mir, dass meine Beiträge beim Zielpublikum ankommen, verstanden und auch gewürdigt werden :)
Gruß Olli
Ich schließe mich den Worten von Dahari gerne an. Weiß zwar seit einiger Zeit einiges (aber eben noch nicht alle Feinheiten) über horizontale Menüs. Habe auch schon detailliert zum Thema recherchiert, aber eine solche ausgezeichnete Darstellung zuvor nirgends gefunden. Das macht Appetit auf Ihre weiteren Artikel. Herzlichen Dank! Timo Adam
Hi Olli,
wirklich klasse Tutorial hast du da erstellt! Hat mir sehr weitergeholfen, nachdem ich schon fast am Verzweifeln war.
Aber wie bekommt man die Menüpunkte wie „Home“, „Über mich“ und „Kategorien“ zentriert? Also dass sie in der Leiste mittig erscheinen.
Falls das notwendig ist, hier noch der Link zu dem Testblog, auf dem ich an der Leiste bastel: http://erster-testblog.blogspot.de/
Ich hab schon einiges funktioniert, aber irgendwie hat nichts geklappt. (Wäre aber auch gut möglich, dass ich die gefundenen Codeschnipsel an den falschen Stellen hatte ^^‘)
Ich hoffe, du kannst mir helfen.
Liebe Grüße!
Hi Sarah,
das Problem liegt bei der Aufzählungsliste (
ul
). Diese zu zentrieren ist etwas „tricky“. Schau mal hier, da wird es gut und verständlich erklärt.Lieben Gruß und viel Erfolg
Hi Olli,
irgendwie bin ich zu doof dazu ._. Wenn ich das so mache wie in der Beschreibung, ist das Drop-Down verschwunden und zwischen „Home“ und „Über mich“ ist eine riesige Lücke… Na ja,ich werde nochmal ein bisschen herumprobieren.
Mal noch eine andere Frage:
Gibt es eine Möglichkeit, auf der rechten Seite in dem Menü so eine benutzerdefinierte Google-Suchleiste einzubauen?
Liebe Grüße!
Hi Sarah,
ich würde die Suche als Listenelement einbinden, dem Listenelement eine Klasse zuweisen und diese dann rechts floaten. Das sollte hinhauen.
Gruß Olli
Okay, danke. Ich werd’s mal versuchen :)
Moin, ich habe das Menü verwendet und an meine Seite angepasst. Eigentlich funktioniert alles so wie ich mir das wünsche, nur in Firefox gibt es Probleme. Da zappelt das Menü ohne Ende! Hovert man „Work“ kommt das Menü wie gewünscht. Nimmt man die Maus weg, verschiebt sich das Menü bevor es wieder verschwindet. Zieht man die Maus von „Work“ auf den nächsten Menüpunkt funktioniert gar nichts mehr… Ne Idee was da schief läuft?
Vielen Dank,
Arno
Moin Arno,
denke es liegt daran, dass das Submenü des ersten Listenelements zu tief angeordnet ist. Wenn du den Top-Abstand von
#menu ul li:hover ul
auf -40 Pixel setzt, dann ist Schluss mit Zappeln :)Gruß Olli
Das war es nicht direkt. Im nicht gehoverten Zustand war das Submenü nicht wie gehovert um -25px nach links verschoben.
VIELEN DANK! Ohne den Tip hätte ich wohl noch länger gesucht :-)
Hallo Oliver,
wunderbar einfaches Menü – gut nachvollziehbar. Ich habe nur Schwierigkeiten mit den verschiedenen Versionen des IE. Da wird das Untermenü nicht angezeigt. Kann das sein? Alle anderen Browser zeigen das Menü an.
Wenn ich die CSS-Definitionen schrittweise erstelle, kann ich in allen Browsern nachvollziehen, wie sie die Formatierung auswirkt – Beim
ist Schluss. Ich habe auch schon mal alle anderen CSS-Dateien ausgeblendet… no effect.
Gruß Michael
Hallo Michael,
beim IE10 ist alles okay. Und auch mit dem IE9 sollte das Menü funktionieren. Was ältere IE-Versionen angeht, schau mal ein paar Kommentare über deinem. Da habe ich meine Meinung dazu schon mal kundgetan.
Gruß Olli
Danke für Deine Antwort. Bei keinem der MS-Browser funktioniert es bei mir. Ich suche mal nach einem möglichen Konflikt mit anderen css- Definitionen
Hi,
ich habe nochmal rumprobiert – nervenaufreiebend… ;) ) Ich meine es, liegt am Schalter !DOCTYPE. Sobald ich
“ PUBLIC „-//W3C//DTD HTML 4.0 Transitional//EN““ erweitere werden alle meine CSS-Definitionen korrekt dargestellt. Aber die MS-Browser versagen das Pulldown-Menü.
Lass ich diese Definition weg, so funktioniert zwar das Puilldown-Menü – aber einige CSS-Definitionen verlieren ihre Wirkung… Mein „gesundes Halbwissen“ sagt mir…rätselhaft!
HAst DU einen Rat?
Gruß Michael
Hallo,
super Anleitung und es sieht auch echt klasse aus. Ich möchte in meinem Shop auch ein solches Menü bauen und teste momentan das hier beschriebene Verfahren.
Leider klappt das Untermenü bei mir im IE10 nicht auf. Das Original von dieser Seite funktioniert.
Welcher CSS-Eintrag könnte da Probleme machen?
Gruß
Michael
Hallo Michael,
und mit anderen Browsern klappt es? Hast du einen Link, wo ich mir das live anschauen kann?
Gruß Olli
Hallo Olli,
ich habe einen Link, aber der soll natürlich noch nicht veröffentlicht werden.
Kann ich Dir den per mail zukommen lassen?
Gruß
Michael
Klar. Hier ist das Kontaktformular.
Gruß Olli
Hallo,
ich bin ein ziemlicher Html/css – Anfänger und würde gerne eine ähnliche Menüleiste auf meinem Blog haben.
Nur sieht das bei mir leider noch überhaupt nicht so aus …
Die Unterpunkte bei den Menüpunkten sind nicht untereinander in einem schönen Kasten angeordnet, sondern immer noch nebeneinander obwohl ich float: none definiert habe, die Schriftart funktioniert nur in den Unterpunkten und alles hat seltsame Ränder …
Könntest du dir das mal anschauen und mir einen TIp geben? ich bin wirklich ratlos ;D
Liebe Grüße
Hanna
Hallo Hanna,
was mir aufgefallen ist: du definierst die „a“-Tags nicht als Blockelement. Ergänze mal deinen Code:
Mein Tutorial ist da etwas anders aufgebaut. Aber wenn du schon die „a“-Tags ansprichst, müssen diese Blockelemente sein. Ansonsten hilft kein float.
Gruß Olli
Hallo Olli,
Super! Danke für die schnelle Antwort!
Jetzt hab ich nur noch ein kleines Problem.
Du schreibst oben, dass die Zeilenhöhe von 50px notwendig ist, damit man den drop-down-Kasten anklicken kann, aber bei mir hilft das nichts, der bleibt ‚unanklickbar‘.
Hättest du da vielleicht noch einen Tipp, was ich falsch machen könnte?
Danke nochmal!
Grüße
Hanna
Hallo Hanna,
probier mal den Untermenüs einen höheren
z-index
zuzuweisen, als dem übergeordneten Menü:Gruß Olli
Hallo Olli,
hat funktioniert!
Vielen Dank, ich war echt schon am Verzweifeln.
Deine Seite ist wirklich super!
liebe Grüße
Hanna
Hallo, das Menü läuft prima danke.
Jetzt habe ich folgendes Problem.
Direkt unter dem Menü habe ich ein h1 platziert.
Das h1 legt sich über das Klappmenü und wenn man mit der Maus auf das h1 kommt klappt das Menü wieder zu, sodass man manchen Menüpunkt nicht auswählen kann.
Gibt es dazu eine Lösung?
Hallo Johannes,
ich vermute es liegt an der Positionierung der Elemente. Probiere mal das Menü mittels z-index nach oben zu holen, etwa so:
Gruß Olli
Hallo Olli,
super Tutorial. Ich habe noch eine Frage:
Wenn ich das Menü einfüge und das Browserfenster verkleinere, werden die menüpunkte untereinander angeordnet. Ist es möglich, dass diese immer nebeneinander bleiben, auch wenn das Fenster verkleinert wird?
Simon
Hallo Simon,
das Menü hat in meinem Beispiel eine feste Breite von 900 Pixel (
.inhalt
). Wenn du dem ersten Untermenü (ul
) ebenfalls eine feste Breite von 900 Pixel verpasst, bleiben die Menüelemente nebeneinander angeordnet:#menu .inhalt > ul {
width: 900px;
}
Allerdings sind dann einige Menüelemente nicht mehr sichtbar. Abhilfe könntest du mit einem responsivem Menü schaffen.
Gruß Olli
Super danke, werds sofort ausprobieren :) Dürfen Deine Vorlagen eigentlich auch kommerziell genutzt werden?
Hallo Simon,
darfst du gerne auch kommerziell verwenden.
Gruß Olli
Hallo Oliver,
zuerst einmal danke für das tolle Tut. habe es an meine seite angepasst und als ich die Farbe der menüleiste an meine Seite angepqasst habe, verschob sich das Untermenü komplett nach links.
Woran kann das liegen
Zu sehen hier: http://bluelanestables.funpic.de/
Hallo Claudia,
da musst du noch was anderes verändert haben, als nur die Farbe.
Gruß Olli
Hallo oliver habe nur in der Menü.css in der Zeile 15 die Farbe ersetzt.
mehr nicht.
http://pastebin.com/embed_js.php?i=QLAW76kM
sry hab den falschen link erwischt gehabt
Ganz toll!!! Vielen herzlichen Dank!!!
sehr schönes Tutorial und doch ist die Navigation schön schlicht gehalten. Ich habe da mal eine Frage mit was hast du die Hintergrund Animation auf dieser Seite gemacht Danke im Voraus
Hi,
schaust du hier.
Gruß Olli
Danke
[…] (Demo | Tutorial) […]
Da sind eine Menge Fehler in deinen Beispielcodes. So etwas sollte man als Tutorial-Autor vermeiden! Trotzdem zum Lernen gut geeignet, danke.