Online Marketing Blog

Online Marketing Solutions AG
Usability

Dropdown Menü mit CSS ohne JavaScript

26. September 2011

Heute geht es darum, wie man ein Dropdown Menü mit CSS/HTML erstellt ohne die Nutzung von JavaScript. Diese Art der Navigation funktioniert auch im Internet Explorer ab Version 7.0.

Was sind die Vor- und Nachteile von einem CSS Dropdown Menü ohne JavaScript?

Einige Besucher, wenn auch nur die Minderheit, haben in ihrem Browser JavaScript deaktiviert. Bei Besuchern mit deaktiviertem JavaScript, ist die Dropdown-Funktion des Menüs mit CSS gegeben, da dieser nur mittels HTML und CSS gesteuert wird. Ein Dropdown Menü in JavaScript hingegen, wird bei deaktiviertem JavaScript nicht funktionieren.

Ein weiterer wichtiger Faktor ist der Google Bot (Crawler), denn dieser hat keine Probleme mit dem crawlen einer HTML/CSS Datei Navigation und den entsprechenden Verlinkungen. Je nachdem wie ein Dropdown Menü in JavaScript programmiert ist, könnte es gut möglich sein, dass der Google Bot die entsprechenden Links nicht crawlen kann, weil diese z.B. nicht direkt im HTML stehen sondern in einer JavaScript Datei ausgelagert wurden.

Manche Versionen des Internet Explorer benötigen beim CSS Dropdown Menü eine Sonderbehandlung. Wie bereits erwähnt, funktioniert das Dropdown Menü mit CSS ab IE Version 7.0. Für IE 6.0 oder älter muss leider noch eine “Fallback”-Methode mit JavaScript genutzt werden. Wer dies möchte sollte die untere (zweite Variante nutzen).

In der folgenden Grafik ist ein Dropdown Menü mit CSS ohne JavaScript abgebildet. Der entsprechende Code dazu befindet sich direkt darunter.

HTML Code

		<div>
			<ul id="menu">
				<li><a href="#" title="Home">Home</a></li>
				<li><a href="#" title="Angebote">Angebote</a>
					<ul>
						<li><a href="#" title="Angebot 1">Angebot 1</a></li>
						<li><a href="#" title="Angebot 2">Angebot 2</a></li>
						<li><a href="#" title="Angebot 3">Angebot 3</a></li>
						<li><a href="#" title="Angebot 4">Angebot 4</a></li>
						<li><a href="#" title="Angebot 5">Angebot 5</a></li>
					</ul>
				</li>
				<li><a href="#" title="Support Pakete">Support Pakete</a>
					<ul>
						<li><a href="#" title="Paket 1">Paket 1</a></li>
						<li><a href="#" title="Paket 2">Paket 2</a></li>
						<li><a href="#" title="Paket 3">Paket 3</a></li>
						<li><a href="#" title="Paket 4">Paket 4</a></li>
						<li><a href="#" title="Paket 5">Paket 5</a></li>
					</ul>
				</li>
				<li><a href="#" title="">Kontakt</a></li>
				<li><a href="#" title="">Impressum</a></li>
			</ul>
		</div>
	

CSS Code

		body {font-family:arial; font-size:12px;}
		div {cursor:default;}
		a {text-decoration:none; color:#000000;}

		#menu ul {margin:0px; padding:0px; list-style-type:none;}
		#menu li {float:left; width:90px; text-align:center;}
		#menu li ul{display:none; padding-top:3px;}
		#menu li:hover ul {display:block;}
		#menu li ul li {background-color:#2F2D49; border-bottom:1px solid #FFFFFF;}
		#menu li ul li a{color:#FFFFFF;}
		#menu li ul li:hover {background-color:#232323;}
	

IE 6 “Fallback”-Methode mit JavaScript

Wer die entsprechende “Fallback”-Methode für IE 6 in JavaScript anwenden möchte, muss die folgende Scripte einbinden:

		<!--[if lte IE 6]>
			<script src="http://code.jquery.com/jquery-latest.js"></script>
			<script type="text/javascript" src="script.js"></script>
		<![endif]-->
	

Auch die HTML Sturktur muss leicht angepasst werden. Hier erhalten die Drop-Down Listen eine entsprechende ID.

HTML Code mit ID für IE 6

		<div>
			<ul id="menu">
				<li><a href="#" title="Home">Home</a></li>
				<li id="angebote"><a href="#" title="Angebote">Angebote</a>
					<ul>
						<li><a href="#" title="Angebot 1">Angebot 1</a></li>
						<li><a href="#" title="Angebot 2">Angebot 2</a></li>
						<li><a href="#" title="Angebot 3">Angebot 3</a></li>
						<li><a href="#" title="Angebot 4">Angebot 4</a></li>
						<li><a href="#" title="Angebot 5">Angebot 5</a></li>
					</ul>
				</li>
				<li id="support"><a href="#" title="Support Pakete">Support Pakete</a>
					<ul>
						<li><a href="#" title="Paket 1">Paket 1</a></li>
						<li><a href="#" title="Paket 2">Paket 2</a></li>
						<li><a href="#" title="Paket 3">Paket 3</a></li>
						<li><a href="#" title="Paket 4">Paket 4</a></li>
						<li><a href="#" title="Paket 5">Paket 5</a></li>
					</ul>
				</li>
				<li><a href="#" title="">Kontakt</a></li>
				<li><a href="#" title="">Impressum</a></li>
			</ul>
		</div>
	

script.js

		$(document).ready(function(){
			$('li').mouseover(function() {
				var $id = $(this).attr('id');
				$('#'+$id+' ul').css('display','block');
			});
			$('li').mouseout(function() {
				var $id = $(this).attr('id');
				$('#'+$id+' ul').css('display','none');
			});
		});
	

Download DropDown-Menu + IE 6 JavaScript

DropDown-menu-IE6

Verfasst von Arwin Barsekhian

Dieser Eintrag wurde am Montag, 26. September 2011 um 15:25 erstellt und ist abgelegt unter Usability. Mit dem RSS 2.0 Feed kannst du den Antworten zu diesem Artikel folgen. Du kannst eine Antwort hinterlassen, oder einen Trackback von deiner eigenen Seite senden.


10 Antworten zu “Dropdown Menü mit CSS ohne JavaScript”

  1. einer sagt:

    Toller Beitrag,

    aber der Titel müsste “Dropdown Menü mit CSS und Unobtrusive JavaScript” heißen.

    http://de.wikipedia.org/wiki/Unobtrusive_JavaScript

    Schönen Gruß aus Dortmund

  2. Peter sagt:

    Eine ähnliche Lösung setze ich bei mir auch ein, die JS Spielereien benötige ich nicht und bevor ich knapp 5% der Nutzer von der Navigation ausschließe, nutze ich lieber CSS.
    Allerdings sehe ich es nicht ein, weiterhin für den IE6 zu optimieren, auch wenn der einen höheren Anteil hat, als die Nicht-JS Nutzer.

  3. jutta sagt:

    Wurde zwar schon öfters auf anderen Blogs erwähnt, aber hier auch noch mit IE6 Fallback, funktioniert es in allen anderen Browsern problemlos, ich mein der IE7 hätte auch Probleme mit li:hover.

  4. Arwin Barsekhian sagt:

    Hallo Leute,

    Danke für die Kommentare. Also ich persönlich und privat beachte auch die IE6 Browser nicht. Allerdings ist es für manche Firman ratsam. Die CSS Navigation funktioniert auch mit IE7. Ihr könnt die ZIP Datei runterladen und mit dem IETester die entsprechende DropDown Navigations testen.

  5. jutta sagt:

    IETEster habe ich natürlich installiert, hatte es aber vorher nicht getestet.
    Dann ist alles in Ordnung.

  6. winner sagt:

    Lösungen ohne JS bevorzuge ich auch, wenn es möglich ist, hoffentlich ist die Kampagne gegen den IE6 bald erfolgreicher, der Marktanteil ist ja immer noch ziemlich hoch.

  7. Nessa sagt:

    Danke für den super Beitrag Arwin!

  8. Jtgarrett sagt:

    Schade… leider funktioniert o.g. Code bei mir nicht.

    Habe alle erforderlichen Dateien erstellt und das Menü in die index.php eingebunden. Aber anstelle des gewollten Menüs kam eine Auflistung als wenn ich normale gepunktete Listen erstellt hätte…

  9. Arwin sagt:

    Hallo Jtgarrett,

    Unter dem Punkt “Download DropDown-Menu + IE 6 JavaScript” habe ich die Beispiel Navigation als Download bereitgestellt.

  10. Stefanie Sp sagt:

    cool Arwin! Danke.

Hinterlasse eine Antwort