1. Web Design
  2. HTML/CSS
  3. HTML

Wie man ein Kick-Butt-CSS3-Mega-Dropdown-Menü erstellt

Scroll to top
This post is part of a series called CSS3 Mastery.
Build Awesome Practical CSS3 Buttons

German (Deutsch) translation by Alex Grigorovich (you can also view the original English article)

Mega-Menüs, die häufig im E-Commerce oder auf großen Websites verwendet werden, werden immer beliebter, da sie eine effektive Lösung für die Anzeige vieler Inhalte bei gleichzeitig sauberem Layout bieten. In diesem Tutorial erfahren Sie, wie Sie mit netten CSS3-Funktionen ein browserübergreifendes, fantastisches Dropdown-Mega-Menü nur für CSS erstellen.

Schritt 1: Erstellen der Navigationsleiste

Beginnen wir mit einem Grundmenü, das aus einer ungeordneten Liste und einigen grundlegenden CSS-Stilen besteht.

1
<ul id="menu">
2
    <li><a href="#">Home</a></li>
3
    <li><a href="#">About</a></li>
4
    <li><a href="#">Services</a></li>
5
    <li><a href="#">Portfolio</a></li>
6
    <li><a href="#">Contact</a></li>
7
</ul>

Menücontainer erstellen

Wir werden jetzt einige grundlegende CSS-Stile anwenden. Für den Menücontainer definieren wir eine feste Breite, die wir zentrieren, indem wir den linken und rechten Rand auf "auto" setzen.

1
#menu {
2
	list-style:none;
3
	width:940px;
4
	margin:30px auto 0px auto;
5
	height:43px;
6
	padding:0px 20px 0px 20px;
7
}

Nun wollen wir sehen, wie wir es mit einigen CSS3-Funktionen verbessern können. Wir müssen unterschiedliche Syntaxen für Webkit-basierte Browser (wie Safari) und für Mozilla-basierte Browser (wie Firefox) verwenden. Wir müssen unterschiedliche Syntaxen für Webkit-basierte Browser (wie Safari) und für Mozilla-basierte Browser (wie Firefox) verwenden.

Für abgerundete Ecken lautet die Syntax:

1
-moz-border-radius: 10px
2
-webkit-border-radius: 10px;
3
border-radius: 10px;

Für den Hintergrund verwenden wir Farbverläufe und eine Fallback-Farbe für ältere Browser. Um die Konsistenz bei der Auswahl der Farben zu gewährleisten, gibt es ein fantastisches Tool namens Facade, mit dem Sie hellere und dunklere Töne einer Grundfarbe finden können.

1
background: #014464;
2
background: -moz-linear-gradient(top, #0272a7, #013953);
3
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#0272a7), to(#013953));

In der ersten Zeile wird eine einfache Hintergrundfarbe angewendet (für ältere Browser). Die zweite und dritte Zeile erzeugen einen Farbverlauf von oben nach unten in zwei Farben: #0272a7 und #013953.

Wir können jetzt einen dunkleren Rand hinzufügen und das Design mit einem "fake" Rand polieren, der mit der Funktion "box-shadow" erstellt wurde. Die Syntax ist für alle kompatiblen Browser gleich: Der erste Wert ist der horizontale Versatz, der zweite der vertikale Versatz, der dritte der Unschärferadius (ein kleiner Wert macht ihn schärfer; in unserem Beispiel beträgt er 1 Pixel). Wir setzen alle Offsets auf 0, damit der Unschärfewert einen einheitlichen Lichtrand erzeugt:

1
-moz-box-shadow:inset 0px 0px 1px #edf9ff;
2
-webkit-box-shadow:inset 0px 0px 1px #edf9ff;
3
box-shadow:inset 0px 0px 1px #edf9ff;

Hier ist der endgültige CSS-Code für den #menu container:

1
#menu {
2
	list-style:none;
3
	width:940px;
4
	margin:30px auto 0px auto;
5
	height:43px;
6
	padding:0px 20px 0px 20px;
7
8
	/* Rounded Corners */
9
	
10
	-moz-border-radius: 10px;
11
	-webkit-border-radius: 10px;
12
	border-radius: 10px;
13
14
	/* Background color and gradients */
15
	
16
	background: #014464;
17
	background: -moz-linear-gradient(top, #0272a7, #013953);
18
	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#0272a7), to(#013953));
19
	
20
	/* Borders */
21
	
22
	border: 1px solid #002232;
23
24
	-moz-box-shadow:inset 0px 0px 1px #edf9ff;
25
	-webkit-box-shadow:inset 0px 0px 1px #edf9ff;
26
	box-shadow:inset 0px 0px 1px #edf9ff;
27
}

Styling-Menüpunkte

Wir beginnen mit allen nach links ausgerichteten Menüelementen und platzieren sie mit einem margin-right (das Auffüllen ist für den Schwebezustand erforderlich):

1
#menu li {
2
	float:left;
3
	display:block;
4
	text-align:center;
5
	position:relative;
6
	padding: 4px 10px 4px 10px;
7
	margin-right:30px;
8
	margin-top:7px;
9
	border:none;
10
}

Für den Schwebezustand und das Dropdown habe ich ein graues Farbschema für den Hintergrund gewählt.

Die Fallback-Farbe ist hellgrau (#F4F4F4) und der Farbverlauf wird von oben (#F4F4F4) nach unten (#EEEEEE) angewendet. Abgerundete Ecken werden nur auf die oberen Ecken angewendet, da das Dropdown-Menü direkt unter den Menüelementen angezeigt wird.

1
background: #F4F4F4;
2
background: -moz-linear-gradient(top, #F4F4F4, #EEEEEE);
3
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F4F4F4), to(#EEEEEE));

Die linke und rechte Polsterung ist hier etwas kleiner, da beim Schweben ein Rand von 1 Pixel angezeigt wird. Wenn wir den gleichen Abstand beibehalten, werden die Menüelemente um zwei Pixel nach rechts verschoben, da beim Bewegen des Mauszeigers der linke und der rechte Rand hinzugefügt werden. Um dies zu vermeiden, entfernen wir 1 Pixel Polsterung auf beiden Seiten, sodass wir 9 statt 10 Pixel haben.

1
border: 1px solid #777777;
2
padding: 4px 9px 4px 9px;

Dann fügen wir oben nur abgerundete Ecken hinzu, damit das Dropdown-Menü perfekt unter dem übergeordneten Menüpunkt bleibt:

1
-moz-border-radius: 5px 5px 0px 0px;
2
-webkit-border-radius: 5px 5px 0px 0px;
3
border-radius: 5px 5px 0px 0px;

Hier ist das endgültige CSS für die Menüpunkte beim Hover:

1
#menu li:hover {
2
	border: 1px solid #777777;
3
	padding: 4px 9px 4px 9px;
4
	
5
	/* Background color and gradients */
6
	
7
	background: #F4F4F4;
8
	background: -moz-linear-gradient(top, #F4F4F4, #EEEEEE);
9
	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F4F4F4), to(#EEEEEE));
10
	
11
	/* Rounded corners */
12
	
13
	-moz-border-radius: 5px 5px 0px 0px;
14
	-webkit-border-radius: 5px 5px 0px 0px;
15
	border-radius: 5px 5px 0px 0px;
16
}

Für die Links wenden wir einen schönen Textschatten mit einer einfachen Syntax an: Der erste und der zweite Wert sind horizontale und vertikale Offsets für den Schatten (in unserem Beispiel 1 Pixel), der dritte ist die Unschärfe (auch 1 Pixel) und dann haben wir die (schwarze) Farbe:

1
text-shadow: 1px 1px 1px #000;

Hier ist das endgültige CSS für die Links:

1
#menu li a {
2
	font-family:Arial, Helvetica, sans-serif;
3
	font-size:14px; 
4
	color: #EEEEEE;
5
	display:block;
6
	outline:0;
7
	text-decoration:none;
8
	text-shadow: 1px 1px 1px #000;
9
}

Beim Bewegen der Maus verwenden wir, da der Hintergrund grau ist, eine dunklere Farbe (#161616) für die Links und die weiße Farbe für den Textschatten:

1
#menu li:hover a {
2
	color:#161616;
3
	text-shadow: 1px 1px 1px #FFFFFF;
4
}

Schließlich benötigen wir eine Möglichkeit, um anzuzeigen, ob ein Dropdown-Menü vorhanden ist oder nicht, indem wir ein einfaches Pfeilbild als Hintergrund verwenden. Es wird mithilfe der Polsterung rechts positioniert und der obere Rand wird richtig darauf ausgerichtet. Beim Hover wird dieser obere Rand auf 7 statt 8 Pixel gesetzt, da beim Hover mit der Maus ein zusätzlicher Rand angezeigt wird (andernfalls würde der Pfeil beim Hover um 1 Pixel nach unten gedrückt):

1
#menu li .drop {
2
	padding-right:21px;
3
	background:url("img/drop.png") no-repeat right 8px;
4
}
5
#menu li:hover .drop {
6
	background:url("img/drop.png") no-repeat right 7px;
7
}

Hier ist unser endgültiger Code für den Menücontainer und die Links. Nur das Element "Home" enthält derzeit keinen Dropdown-Inhalt:

1
<ul id="menu">
2
	<li><a href="#">Home</a></li>
3
	<li><a href="#" class="drop">About</a></li>
4
	<li><a href="#" class="drop">Services</a></li>
5
	<li><a href="#" class="drop">Portfolio</a></li>
6
	<li><a href="#" class="drop">Contact</a></li>
7
</ul>
1
#menu {
2
	list-style:none;
3
	width:940px;
4
	margin:30px auto 0px auto;
5
	height:43px;
6
	padding:0px 20px 0px 20px;
7
8
	/* Rounded Corners */
9
	
10
	-moz-border-radius: 10px;
11
	-webkit-border-radius: 10px;
12
	border-radius: 10px;
13
14
	/* Background color and gradients */
15
	
16
	background: #014464;
17
	background: -moz-linear-gradient(top, #0272a7, #013953);
18
	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#0272a7), to(#013953));
19
	
20
	/* Borders */
21
	
22
	border: 1px solid #002232;
23
24
	-moz-box-shadow:inset 0px 0px 1px #edf9ff;
25
	-webkit-box-shadow:inset 0px 0px 1px #edf9ff;
26
	box-shadow:inset 0px 0px 1px #edf9ff;
27
}
28
29
#menu li {
30
	float:left;
31
	display:block;
32
	text-align:center;
33
	position:relative;
34
	padding: 4px 10px 4px 10px;
35
	margin-right:30px;
36
	margin-top:7px;
37
	border:none;
38
}
39
40
#menu li:hover {
41
	border: 1px solid #777777;
42
	padding: 4px 9px 4px 9px;
43
	
44
	/* Background color and gradients */
45
	
46
	background: #F4F4F4;
47
	background: -moz-linear-gradient(top, #F4F4F4, #EEEEEE);
48
	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F4F4F4), to(#EEEEEE));
49
	
50
	/* Rounded corners */
51
	
52
	-moz-border-radius: 5px 5px 0px 0px;
53
	-webkit-border-radius: 5px 5px 0px 0px;
54
	border-radius: 5px 5px 0px 0px;
55
}
56
57
#menu li a {
58
	font-family:Arial, Helvetica, sans-serif;
59
	font-size:14px; 
60
	color: #EEEEEE;
61
	display:block;
62
	outline:0;
63
	text-decoration:none;
64
	text-shadow: 1px 1px 1px #000;
65
}
66
67
#menu li:hover a {
68
	color:#161616;
69
	text-shadow: 1px 1px 1px #FFFFFF;
70
}
71
#menu li .drop {
72
	padding-right:21px;
73
	background:url("img/drop.png") no-repeat right 8px;
74
}
75
#menu li:hover .drop {
76
	background:url("img/drop.png") no-repeat right 7px;
77
}

Und das Ergebnis ist:

Building a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down Menu

Schritt 2: Codieren des Dropdowns

Ein "klassisches" Dropdown-Menü enthält normalerweise Listen, die in übergeordneten Listenelementen verschachtelt sind, und sieht folgendermaßen aus:

1
<ul id="menu">
2
	<li><a href="#">Item 1</a><
3
		<ul>
4
			<li><a href="#">Subitem 1</a></li>
5
			<li><a href="#">Subitem 2</a></li>
6
			<li><a href="#">Subitem 3</a></li>
7
		</ul>
8
	</li>
9
	<li><a href="#">Item 2</a><
10
		<ul>
11
			<li><a href="#">Subitem 1</a></li>
12
			<li><a href="#">Subitem 2</a></li>
13
		</ul>
14
	</li>
15
</ul>

Allgemeine Struktur

Für unser Mega-Menü verwenden wir anstelle von verschachtelten Listen einfach Standard-DIVs, die wie jede verschachtelte Liste funktionieren:

1
<ul id="menu">
2
	<li><a href="#">Item 1</a>
3
		<div>
4
		Drop down Content
5
		<div>
6
	</li>
7
	<li><a href="#">Item 2</a>
8
		<div>
9
		Drop down Content
10
		<div>
11
	</li>
12
</ul>

Dies ist die Grundstruktur für das Dropdown. Die Idee ist, alle Arten von Inhalten wie Absätze, Bilder, benutzerdefinierte Listen oder ein Kontaktformular, die in Spalten organisiert sind, einschließen zu können.

Dropdown-Container

Container mit unterschiedlichen Größen enthalten den gesamten Dropdown-Inhalt. Ich habe die Tag-Namen entsprechend der Anzahl der Spalten ausgewählt, die sie enthalten sollen.

Um die Dropdowns auszublenden, verwenden wir die absolute Positionierung mit einem negativen linken Rand:

1
position:absolute;
2
left:-999em;

Die Hintergrund-Fallback-Farbe entspricht der für die Menüelemente verwendeten. Moderne Browser zeigen einen Verlauf an, der oben mit #EEEEEE beginnt (passend zum Verlauf des übergeordneten Menüelements) und unten mit #BBBBBB endet:

1
background:#F4F4F4;
2
background: -moz-linear-gradient(top, #EEEEEE, #BBBBBB);
3
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EEEEEE), to(#BBBBBB));

Wir werden wieder abgerundete Ecken verwenden, mit Ausnahme der oberen linken:

1
-moz-border-radius: 0px 5px 5px 5px;
2
-webkit-border-radius: 0px 5px 5px 5px;
3
border-radius: 0px 5px 5px 5px;
1
.dropdown_1column, 
2
.dropdown_2columns, 
3
.dropdown_3columns, 
4
.dropdown_4columns,
5
.dropdown_5columns {
6
	margin:4px auto;
7
	position:absolute;
8
	left:-999em; /* Hides the drop down */
9
	text-align:left;
10
	padding:10px 5px 10px 5px;
11
	border:1px solid #777777;
12
	border-top:none;
13
	
14
	/* Gradient background */
15
	background:#F4F4F4;
16
	background: -moz-linear-gradient(top, #EEEEEE, #BBBBBB);
17
	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EEEEEE), to(#BBBBBB));
18
19
	/* Rounded Corners */
20
	-moz-border-radius: 0px 5px 5px 5px;
21
	-webkit-border-radius: 0px 5px 5px 5px;
22
	border-radius: 0px 5px 5px 5px;
23
}

Um das zu veranschaulichen, wollen wir sehen, wie es aussehen würde, wenn wir nicht auf Details geachtet hätten:

Building a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down Menu

Hier ist unser Beispiel:

Building a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down Menu

Wie Sie sehen können, bleibt das Dropdown-Menü gut beim übergeordneten Menüpunkt.

Um einen perfekten Dropdown-Container zu haben, müssen wir die Breite für jeden angeben: 

1
.dropdown_1column {width: 140px;}
2
.dropdown_2columns {width: 280px;}
3
.dropdown_3columns {width: 420px;}
4
.dropdown_4columns {width: 560px;}
5
.dropdown_5columns {width: 700px;}

Und um die Dropdowns beim Mauszeiger anzuzeigen, verwenden wir einfach:

1
#menu li:hover .dropdown_1column, 
2
#menu li:hover .dropdown_2columns, 
3
#menu li:hover .dropdown_3columns,
4
#menu li:hover .dropdown_4columns,
5
#menu li:hover .dropdown_5columns {
6
	left:-1px;top:auto;
7
}

Verwenden der Dropdown-Container

Unsere Kurse sind bereit, in unser Menü aufgenommen zu werden. Wir werden jeden von ihnen verwenden, beginnend mit dem 5-Spalten-Layout bis zum Dropdown-Menü für eine einzelne Spalte:

1
<ul id="menu">
2
	<li><a href="#">Home</a></li>
3
	<li><a href="#" class="drop">5 Columns</a>
4
		<div class="dropdown_5columns">
5
		<p>5 Columns content</p>
6
		</div>
7
	</li>
8
	<li><a href="#" class="drop">4 Columns</a>
9
		<div class="dropdown_4columns">
10
		<p>4 Columns content</p>
11
		</div>
12
	</li>
13
	<li><a href="#" class="drop">3 Columns</a>
14
		<div class="dropdown_3columns">
15
		<p>3 Columns content</p>
16
		</div>
17
	</li>
18
	<li><a href="#" class="drop">2 Columns</a>
19
		<div class="dropdown_2columns">
20
		<p>2 Columns content</p>
21
		</div>
22
	</li>
23
	<li><a href="#" class="drop">1 Column</a>
24
		<div class="dropdown_1column">
25
		<p>1 Column content</p>
26
		</div>
27
	</li>
28
</ul>

Hier ist eine Vorschau des obigen Codes:

Building a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down Menu

Schritt 3: Erstellen der Dropdown-Containerspalten

Nachdem wir die Container bereit haben, erstellen wir Spalten mit zunehmender Größe nach den Prinzipien des 960-Rastersystems.

1
.col_1,
2
.col_2,
3
.col_3,
4
.col_4,
5
.col_5 {
6
	display:inline;
7
	float: left;
8
	position: relative;
9
	margin-left: 5px;
10
	margin-right: 5px;
11
}
12
.col_1 {width:130px;}
13
.col_2 {width:270px;}
14
.col_3 {width:410px;}
15
.col_4 {width:550px;}
16
.col_5 {width:690px;}

Spalten verwenden

Hier ist ein Beispiel für ein Dropdown-Menü mit mehreren Spalten. In diesem Beispiel haben wir verschiedene Kombinationen mit allen Arten von Spalten:

1
<ul id="menu">
2
	<li><a href="#" class="drop">5 Columns</a>
3
		<div class="dropdown_5columns">
4
			<div class="col_5">
5
			<p>This is a 5 Columns content</p>
6
			</div>
7
			<div class="col_1">
8
			<p>This is a 1 Column content</p>
9
			</div>
10
			<div class="col_1">
11
			<p>This is a 1 Column content</p>
12
			</div>
13
			<div class="col_1">
14
			<p>This is a 1 Column content</p>
15
			</div>
16
			<div class="col_1">
17
			<p>This is a 1 Column content</p>
18
			</div>
19
			<div class="col_1">
20
			<p>This is a 1 Column content</p>
21
			</div>
22
			<div class="col_4">
23
			<p>This is a 4 Columns content</p>
24
			</div>
25
			<div class="col_1">
26
			<p>This is a 1 Column content</p>
27
			</div>
28
			<div class="col_3">
29
			<p>This is a 3 Columns content</p>
30
			</div>
31
			<div class="col_2">
32
			<p>This is a 2 Columns content</p>
33
			</div>
34
		</div>
35
	</li>
36
</ul>

Code-Vorschau:

Building a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down MenuBuilding a CSS3 Mega Drop Down Menu

Schritt 4: Nach rechts ausrichten

Nun wollen wir sehen, wie wir unser Menü und den Dropdown-Inhalt am rechten Rand der Navigationsleiste ausrichten können. Nicht nur der Menüpunkt, sondern auch der Dropdown-Container sollte geändert werden.

Um dies zu erreichen, fügen wir dem übergeordneten Listenelement eine neue Klasse mit dem Namen .menu_right hinzu. Daher setzen wir den rechten Rand zurück und verschieben ihn nach rechts:

1
#menu .menu_right {
2
	float:right;
3
	margin-right:0px;
4
}

Als nächstes sehen wir uns das Dropdown an. Im vorherigen CSS-Code wurden abgerundete Ecken auf alle Ecken mit Ausnahme der linken oberen Ecke angewendet, um dem Hintergrund des übergeordneten Menüelements zu entsprechen. Jetzt möchten wir, dass dieses Dropdown-Menü am rechten Rand des übergeordneten Menüelements bleibt. Also überschreiben wir die Randradiuswerte mit einer neuen Klasse namens .align_right und setzen die obere rechte Ecke auf 0.

1
#menu li .align_right {
2
	/* Rounded Corners */
3
	-moz-border-radius: 5px 0px 5px 5px;
4
	-webkit-border-radius: 5px 0px 5px 5px;
5
	border-radius: 5px 0px 5px 5px;
6
}

Zu guter Letzt möchten wir, dass das Dropdown-Menü rechts angezeigt wird. Also werden wir unsere neue Klasse verwenden und den linken Wert zurücksetzen und ihn dann rechts halten:

1
#menu li:hover .align_right {
2
	left:auto;
3
	right:-1px;
4
	top:auto;
5
}

Jetzt kann es im Menü verwendet werden:

1
<li class="menu_right"><a href="#" class="drop">Right</a>
2
	<div class="dropdown_1column align_right">
3
		<div class="col_1">
4
		<p>This is a 1 Column content</p>
5
		</div>
6
	</div>
7
</li>

Und eine kleine Vorschau des obigen Codes:

Building a CSS3 Mega Drop Down Menu

Schritt 5: Hinzufügen und Gestalten von Inhalten

Nachdem wir die gesamte Struktur fertig haben, können wir so viel Inhalt hinzufügen, wie wir möchten: Text, Listen, Bilder usw.

Allgemeine Stylings

Beginnen wir mit einigen grundlegenden Stilen für Absätze und Überschriften:

1
#menu p, #menu h2, #menu h3, #menu ul li {
2
	font-family:Arial, Helvetica, sans-serif;
3
	line-height:21px;
4
	font-size:12px;
5
	text-align:left;
6
	text-shadow: 1px 1px 1px #FFFFFF;
7
}
8
#menu h2 {
9
	font-size:21px;
10
	font-weight:400;
11
	letter-spacing:-1px;
12
	margin:7px 0 14px 0;
13
	padding-bottom:14px;
14
	border-bottom:1px solid #666666;
15
}
16
#menu h3 {
17
	font-size:14px;
18
	margin:7px 0 14px 0;
19
	padding-bottom:7px;
20
	border-bottom:1px solid #888888;
21
}
22
#menu p {
23
	line-height:18px;
24
	margin:0 0 10px 0;
25
}
26
.strong {
27
	font-weight:bold;
28
}
29
.italic {
30
	font-style:italic;
31
}

Wir können den Links in der Dropdown-Liste eine schöne blaue Farbe zuweisen:

1
#menu li:hover div a {
2
	font-size:12px;
3
	color:#015b86;
4
}
5
#menu li:hover div a:hover {
6
	color:#029feb;
7
}

Listet Stylings auf

Lassen Sie uns unsere Listen überarbeiten. Wir müssen einige Stile wie die Hintergrundfarbe oder die Ränder, die in der Navigationsleiste verwendet werden, zurücksetzen:

1
#menu li ul {
2
	list-style:none;
3
	padding:0;
4
	margin:0 0 12px 0;
5
}
6
#menu li ul li {
7
	font-size:12px;
8
	line-height:24px;
9
	position:relative;
10
	text-shadow: 1px 1px 1px #ffffff;
11
	padding:0;
12
	margin:0;
13
	float:none;
14
	text-align:left;
15
	width:130px;
16
}
17
#menu li ul li:hover {
18
	background:none;
19
	border:none;
20
	padding:0;
21
	margin:0;
22
}

Styling von Bildern

1
.imgshadow {
2
	background:#FFFFFF;
3
	padding:4px;
4
	border:1px solid #777777;
5
	margin-top:5px;
6
	-moz-box-shadow:0px 0px 5px #666666;
7
	-webkit-box-shadow:0px 0px 5px #666666;
8
	box-shadow:0px 0px 5px #666666;
9
}

Und um einen Absatz mit einem Bild links zu erstellen:

1
.img_left {
2
	width:auto;
3
	float:left;
4
	margin:5px 15px 5px 5px;
5
}

Textfelder

Um einige Inhalte hervorzuheben, ist hier ein Beispiel für eine dunkle Box mit abgerundeten Ecken und einem subtilen Schatten:

1
#menu li .black_box {
2
	background-color:#333333;
3
	color: #eeeeee;
4
	text-shadow: 1px 1px 1px #000;
5
	padding:4px 6px 4px 6px;
6
7
	/* Rounded Corners */
8
	-moz-border-radius: 5px;
9
	-webkit-border-radius: 5px;
10
	border-radius: 5px;
11
12
	/* Shadow */
13
	-webkit-box-shadow:inset 0 0 3px #000000;
14
	-moz-box-shadow:inset 0 0 3px #000000;
15
	box-shadow:inset 0 0 3px #000000;
16
}

Restylings-Listen

Und zum Abschluss gibt es noch eine andere Möglichkeit, Ihre Listen mit etwas CSS3 zu gestalten:

1
#menu li .greybox li {
2
	background:#F4F4F4;
3
	border:1px solid #bbbbbb;
4
	margin:0px 0px 4px 0px;
5
	padding:4px 6px 4px 6px;
6
	width:116px;
7
8
	/* Rounded Corners */
9
	-moz-border-radius: 5px;
10
	-webkit-border-radius: 5px;
11
	border-radius: 5px;
12
}
13
#menu li .greybox li:hover {
14
	background:#ffffff;
15
	border:1px solid #aaaaaa;
16
	padding:4px 6px 4px 6px;
17
	margin:0px 0px 4px 0px;
18
}

Schritt 6: Umgang mit Browserkompatibilität und IE6

Alle Browser verarbeiten Hover auf Nicht-Anker-Tags...  außer Internet Explorer 6; Daher funktioniert unser Mega-Menü immer noch nicht mit diesem alten Browser. Wir können dieses Problem dank einer Verhaltensdatei beheben, die diese Funktionalität hinzufügt. Sie finden es hier und verwenden bedingte Kommentare, um nur auf IE6 abzuzielen. Weitere Erklärungen finden Sie in diesem Artikel von CSS-Tricks.

Um auf IE6 abzuzielen, verwenden wir den folgenden Code:

1
<!--[if IE 6]>

2
<style>

3
body {behavior: url("csshover3.htc");}

4
</style>

5
<![endif]-->

Ich habe in diesem Tutorial einige PNG-Dateien verwendet, und wie jeder weiß, unterstützt IE6 keine Transparenz, sodass wir verschiedene Lösungen haben:

  • Konvertieren Sie sie in das GIF- oder PNG-8-Format
  • Verwenden Sie ein Skript
  • Stellen Sie beispielsweise mit TweakPNG eine andere Hintergrundfarbe als das Standardgrau ein

Ich lasse Sie die auswählen, die Ihren Anforderungen entspricht. Lassen Sie uns nun ein voll funktionsfähiges Beispiel überprüfen.

Letztes Beispiel

HTML-Teil

1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml">
3
<head>
4
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
6
<link rel="stylesheet" href="menu.css" type="text/css" media="screen" />
7
8
<title>Mega Drop Down Menu</title>
9
<!--[if IE 6]>

10
<style>

11
body {behavior: url("csshover3.htc");}

12
#menu li .drop {background:url("img/drop.gif") no-repeat right 8px; 

13
</style>

14
<![endif]-->
15
16
</head>
17
18
<body>
19
20
<ul id="menu">
21
    
22
    <li><a href="#" class="drop">Home</a><!-- Begin Home Item -->
23
    
24
        <div class="dropdown_2columns"><!-- Begin 2 columns container -->
25
    
26
            <div class="col_2">
27
                <h2>Welcome !</h2>
28
            </div>
29
    
30
            <div class="col_2">
31
                <p>Hi and welcome here ! This is a showcase of the possibilities of this awesome Mega Drop Down Menu.</p>             
32
                <p>This item comes with a large range of prepared typographic stylings such as headings, lists, etc.</p>             
33
            </div>
34
    
35
            <div class="col_2">
36
                <h2>Cross Browser Support</h2>
37
            </div>
38
            
39
            <div class="col_1">
40
                <img src="img/browsers.png" width="125" height="48" alt="" />
41
            </div>
42
            
43
            <div class="col_1">
44
                <p>This mega menu has been tested in all major browsers.</p>
45
            </div>
46
          
47
        </div><!-- End 2 columns container -->
48
    
49
    </li><!-- End Home Item -->
50
51
    <li><a href="#" class="drop">5 Columns</a><!-- Begin 5 columns Item -->
52
    
53
        <div class="dropdown_5columns"><!-- Begin 5 columns container -->
54
        
55
            <div class="col_5">
56
                <h2>This is an example of a large container with 5 columns</h2>
57
            </div>
58
            
59
            <div class="col_1">
60
                <p class="black_box">This is a dark grey box text. Fusce in metus at enim porta lacinia vitae a arcu. Sed sed lacus nulla mollis porta quis.</p>
61
            </div>
62
            
63
            <div class="col_1">
64
                <p>Phasellus vitae sapien ac leo mollis porta quis sit amet nisi. Mauris hendrerit, metus cursus accumsan tincidunt.</p>
65
            </div>
66
            
67
            <div class="col_1">
68
                <p class="italic">This is a sample of an italic text. Consequat scelerisque. Fusce sed lectus at arcu mollis accumsan at nec nisi porta quis sit amet.</p>
69
            </div>
70
            
71
            <div class="col_1">
72
                <p>Curabitur euismod gravida ante nec commodo. Nunc dolor nulla, semper in ultricies vitae, vulputate porttitor neque.</p>
73
            </div>
74
            
75
            <div class="col_1">
76
                <p class="strong">This is a sample of a bold text. Aliquam sodales nisi nec felis hendrerit ac eleifend lectus feugiat scelerisque.</p>
77
            </div>
78
        
79
            <div class="col_5">
80
                <h2>Here is some content with side images</h2>
81
            </div>
82
           
83
            <div class="col_3">
84
            
85
                <img src="img/01.jpg" width="70" height="70" class="img_left imgshadow" alt="" />
86
                <p>Maecenas eget eros lorem, nec pellentesque lacus. Aenean dui orci, rhoncus sit amet tristique eu, tristique sed odio. Praesent ut interdum elit. Sed in sem mauris. Aenean a commodo mi. Praesent augue lacus.<a href="#">Read more...</a></p>
87
        
88
                <img src="img/02.jpg" width="70" height="70" class="img_left imgshadow" alt="" />
89
                <p>Aliquam elementum felis quis felis consequat scelerisque. Fusce sed lectus at arcu mollis accumsan at nec nisi. Aliquam pretium mollis fringilla. Nunc in leo urna, eget varius metus. Aliquam sodales nisi.<a href="#">Read more...</a></p>
90
            
91
            </div>
92
            
93
            <div class="col_2">
94
            
95
                <p class="black_box">This is a black box, you can use it to highligh some content. Sed sed lacus nulla, et lacinia risus. Phasellus vitae sapien ac leo mollis porta quis sit amet nisi. Mauris hendrerit, metus cursus accumsan tincidunt.Quisque vestibulum nisi non nunc blandit placerat. Mauris facilisis, risus ut lobortis posuere, diam lacus congue lorem, ut condimentum ligula est vel orci. Donec interdum lacus at velit varius gravida. Nulla ipsum risus.</p>
96
            
97
            </div>
98
        
99
        </div><!-- End 5 columns container -->
100
    
101
    </li><!-- End 5 columns Item -->
102
103
    <li><a href="#" class="drop">4 Columns</a><!-- Begin 4 columns Item -->
104
    
105
        <div class="dropdown_4columns"><!-- Begin 4 columns container -->
106
        
107
            <div class="col_4">
108
                <h2>This is a heading title</h2>
109
            </div>
110
            
111
            <div class="col_1">
112
            
113
                <h3>Some Links</h3>
114
                <ul>
115
                    <li><a href="#">ThemeForest</a></li>
116
                    <li><a href="#">GraphicRiver</a></li>
117
                    <li><a href="#">ActiveDen</a></li>
118
                    <li><a href="#">VideoHive</a></li>
119
                    <li><a href="#">3DOcean</a></li>
120
                </ul>   
121
                 
122
            </div>
123
    
124
            <div class="col_1">
125
            
126
                <h3>Useful Links</h3>
127
                <ul>
128
                    <li><a href="#">NetTuts</a></li>
129
                    <li><a href="#">VectorTuts</a></li>
130
                    <li><a href="#">PsdTuts</a></li>
131
                    <li><a href="#">PhotoTuts</a></li>
132
                    <li><a href="#">ActiveTuts</a></li>
133
                </ul>   
134
                 
135
            </div>
136
    
137
            <div class="col_1">
138
            
139
                <h3>Other Stuff</h3>
140
                <ul>
141
                    <li><a href="#">FreelanceSwitch</a></li>
142
                    <li><a href="#">Creattica</a></li>
143
                    <li><a href="#">WorkAwesome</a></li>
144
                    <li><a href="#">Mac Apps</a></li>
145
                    <li><a href="#">Web Apps</a></li>
146
                </ul>   
147
                 
148
            </div>
149
    
150
            <div class="col_1">
151
            
152
                <h3>Misc</h3>
153
                <ul>
154
                    <li><a href="#">Design</a></li>
155
                    <li><a href="#">Logo</a></li>
156
                    <li><a href="#">Flash</a></li>
157
                    <li><a href="#">Illustration</a></li>
158
                    <li><a href="#">More...</a></li>
159
                </ul>   
160
                 
161
            </div>
162
            
163
        </div><!-- End 4 columns container -->
164
    
165
    </li><!-- End 4 columns Item -->
166
167
	<li class="menu_right"><a href="#" class="drop">1 Column</a>
168
    
169
		<div class="dropdown_1column align_right">
170
        
171
                <div class="col_1">
172
                
173
                    <ul class="simple">
174
                        <li><a href="#">FreelanceSwitch</a></li>
175
                        <li><a href="#">Creattica</a></li>
176
                        <li><a href="#">WorkAwesome</a></li>
177
                        <li><a href="#">Mac Apps</a></li>
178
                        <li><a href="#">Web Apps</a></li>
179
                        <li><a href="#">NetTuts</a></li>
180
                        <li><a href="#">VectorTuts</a></li>
181
                        <li><a href="#">PsdTuts</a></li>
182
                        <li><a href="#">PhotoTuts</a></li>
183
                        <li><a href="#">ActiveTuts</a></li>
184
                        <li><a href="#">Design</a></li>
185
                        <li><a href="#">Logo</a></li>
186
                        <li><a href="#">Flash</a></li>
187
                        <li><a href="#">Illustration</a></li>
188
                        <li><a href="#">More...</a></li>
189
                    </ul>   
190
                     
191
                </div>
192
                
193
		</div>
194
        
195
	</li>
196
197
    <li class="menu_right"><a href="#" class="drop">3 columns</a><!-- Begin 3 columns Item -->
198
    
199
        <div class="dropdown_3columns align_right"><!-- Begin 3 columns container -->
200
            
201
            <div class="col_3">
202
                <h2>Lists in Boxes</h2>
203
            </div>
204
            
205
            <div class="col_1">
206
    
207
                <ul class="greybox">
208
                    <li><a href="#">FreelanceSwitch</a></li>
209
                    <li><a href="#">Creattica</a></li>
210
                    <li><a href="#">WorkAwesome</a></li>
211
                    <li><a href="#">Mac Apps</a></li>
212
                    <li><a href="#">Web Apps</a></li>
213
                </ul>   
214
    
215
            </div>
216
            
217
            <div class="col_1">
218
    
219
                <ul class="greybox">
220
                    <li><a href="#">ThemeForest</a></li>
221
                    <li><a href="#">GraphicRiver</a></li>
222
                    <li><a href="#">ActiveDen</a></li>
223
                    <li><a href="#">VideoHive</a></li>
224
                    <li><a href="#">3DOcean</a></li>
225
                </ul>   
226
    
227
            </div>
228
            
229
            <div class="col_1">
230
    
231
                <ul class="greybox">
232
                    <li><a href="#">Design</a></li>
233
                    <li><a href="#">Logo</a></li>
234
                    <li><a href="#">Flash</a></li>
235
                    <li><a href="#">Illustration</a></li>
236
                    <li><a href="#">More...</a></li>
237
                </ul>   
238
    
239
            </div>
240
            
241
            <div class="col_3">
242
                <h2>Here are some image examples</h2>
243
            </div>
244
            
245
            <div class="col_3">
246
                <img src="img/02.jpg" width="70" height="70" class="img_left imgshadow" alt="" />
247
                <p>Maecenas eget eros lorem, nec pellentesque lacus. Aenean dui orci, rhoncus sit amet tristique eu, tristique sed odio. Praesent ut interdum elit. Maecenas imperdiet, nibh vitae rutrum vulputate, lorem sem condimentum.<a href="#">Read more...</a></p>
248
    
249
                <img src="img/01.jpg" width="70" height="70" class="img_left imgshadow" alt="" />
250
                <p>Aliquam elementum felis quis felis consequat scelerisque. Fusce sed lectus at arcu mollis accumsan at nec nisi. Aliquam pretium mollis fringilla. Vestibulum tempor facilisis malesuada. <a href="#">Read more...</a></p>
251
            </div>
252
        
253
        </div><!-- End 3 columns container -->
254
        
255
    </li><!-- End 3 columns Item -->
256
257
258
</ul>
259
260
</body>
261
262
</html>

CSS-Teil

1
body, ul, li {
2
	font-size:14px; 
3
	font-family:Arial, Helvetica, sans-serif;
4
	line-height:21px;
5
	text-align:left;
6
}
7
8
/* Navigation Bar */
9
10
#menu {
11
	list-style:none;
12
	width:940px;
13
	margin:30px auto 0px auto;
14
	height:43px;
15
	padding:0px 20px 0px 20px;
16
17
	/* Rounded Corners */
18
	
19
	-moz-border-radius: 10px;
20
	-webkit-border-radius: 10px;
21
	border-radius: 10px;
22
23
	/* Background color and gradients */
24
	
25
	background: #014464;
26
	background: -moz-linear-gradient(top, #0272a7, #013953);
27
	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#0272a7), to(#013953));
28
	
29
	/* Borders */
30
	
31
	border: 1px solid #002232;
32
33
	-moz-box-shadow:inset 0px 0px 1px #edf9ff;
34
	-webkit-box-shadow:inset 0px 0px 1px #edf9ff;
35
	box-shadow:inset 0px 0px 1px #edf9ff;
36
}
37
38
#menu li {
39
	float:left;
40
	text-align:center;
41
	position:relative;
42
	padding: 4px 10px 4px 10px;
43
	margin-right:30px;
44
	margin-top:7px;
45
	border:none;
46
}
47
48
#menu li:hover {
49
	border: 1px solid #777777;
50
	padding: 4px 9px 4px 9px;
51
	
52
	/* Background color and gradients */
53
	
54
	background: #F4F4F4;
55
	background: -moz-linear-gradient(top, #F4F4F4, #EEEEEE);
56
	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F4F4F4), to(#EEEEEE));
57
	
58
	/* Rounded corners */
59
	
60
	-moz-border-radius: 5px 5px 0px 0px;
61
	-webkit-border-radius: 5px 5px 0px 0px;
62
	border-radius: 5px 5px 0px 0px;
63
}
64
65
#menu li a {
66
	font-family:Arial, Helvetica, sans-serif;
67
	font-size:14px; 
68
	color: #EEEEEE;
69
	display:block;
70
	outline:0;
71
	text-decoration:none;
72
	text-shadow: 1px 1px 1px #000;
73
}
74
75
#menu li:hover a {
76
	color:#161616;
77
	text-shadow: 1px 1px 1px #FFFFFF;
78
}
79
#menu li .drop {
80
	padding-right:21px;
81
	background:url("img/drop.png") no-repeat right 8px;
82
}
83
#menu li:hover .drop {
84
	background:url("img/drop.png") no-repeat right 7px;
85
}
86
87
/* Drop Down */
88
89
.dropdown_1column, 
90
.dropdown_2columns, 
91
.dropdown_3columns, 
92
.dropdown_4columns,
93
.dropdown_5columns {
94
	margin:4px auto;
95
	float:left;
96
	position:absolute;
97
	left:-999em; /* Hides the drop down */
98
	text-align:left;
99
	padding:10px 5px 10px 5px;
100
	border:1px solid #777777;
101
	border-top:none;
102
	
103
	/* Gradient background */
104
	background:#F4F4F4;
105
	background: -moz-linear-gradient(top, #EEEEEE, #BBBBBB);
106
	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EEEEEE), to(#BBBBBB));
107
108
	/* Rounded Corners */
109
	-moz-border-radius: 0px 5px 5px 5px;
110
	-webkit-border-radius: 0px 5px 5px 5px;
111
	border-radius: 0px 5px 5px 5px;
112
}
113
114
.dropdown_1column {width: 140px;}
115
.dropdown_2columns {width: 280px;}
116
.dropdown_3columns {width: 420px;}
117
.dropdown_4columns {width: 560px;}
118
.dropdown_5columns {width: 700px;}
119
120
#menu li:hover .dropdown_1column, 
121
#menu li:hover .dropdown_2columns, 
122
#menu li:hover .dropdown_3columns,
123
#menu li:hover .dropdown_4columns,
124
#menu li:hover .dropdown_5columns {
125
	left:-1px;
126
    top:auto;
127
}
128
129
/* Columns */
130
131
.col_1,
132
.col_2,
133
.col_3,
134
.col_4,
135
.col_5 {
136
	display:inline;
137
	float: left;
138
	position: relative;
139
	margin-left: 5px;
140
	margin-right: 5px;
141
}
142
.col_1 {width:130px;}
143
.col_2 {width:270px;}
144
.col_3 {width:410px;}
145
.col_4 {width:550px;}
146
.col_5 {width:690px;}
147
148
/* Right alignment */
149
150
#menu .menu_right {
151
	float:right;
152
	margin-right:0px;
153
}
154
#menu li .align_right {
155
	/* Rounded Corners */
156
	-moz-border-radius: 5px 0px 5px 5px;
157
    -webkit-border-radius: 5px 0px 5px 5px;
158
    border-radius: 5px 0px 5px 5px;
159
}
160
#menu li:hover .align_right {
161
	left:auto;
162
	right:-1px;
163
	top:auto;
164
}
165
166
/* Drop Down Content Stylings */
167
168
#menu p, #menu h2, #menu h3, #menu ul li {
169
	font-family:Arial, Helvetica, sans-serif;
170
	line-height:21px;
171
	font-size:12px;
172
	text-align:left;
173
	text-shadow: 1px 1px 1px #FFFFFF;
174
}
175
#menu h2 {
176
	font-size:21px;
177
	font-weight:400;
178
	letter-spacing:-1px;
179
	margin:7px 0 14px 0;
180
	padding-bottom:14px;
181
	border-bottom:1px solid #666666;
182
}
183
#menu h3 {
184
	font-size:14px;
185
	margin:7px 0 14px 0;
186
	padding-bottom:7px;
187
	border-bottom:1px solid #888888;
188
}
189
#menu p {
190
	line-height:18px;
191
	margin:0 0 10px 0;
192
}
193
194
#menu li:hover div a {
195
	font-size:12px;
196
	color:#015b86;
197
}
198
#menu li:hover div a:hover {
199
	color:#029feb;
200
}
201
.strong {
202
	font-weight:bold;
203
}
204
.italic {
205
	font-style:italic;
206
}
207
.imgshadow {
208
	background:#FFFFFF;
209
	padding:4px;
210
	border:1px solid #777777;
211
	margin-top:5px;
212
	-moz-box-shadow:0px 0px 5px #666666;
213
	-webkit-box-shadow:0px 0px 5px #666666;
214
	box-shadow:0px 0px 5px #666666;
215
}
216
.img_left { /* Image sticks to the left */
217
	width:auto;
218
	float:left;
219
	margin:5px 15px 5px 5px;
220
}
221
#menu li .black_box {
222
	background-color:#333333;
223
	color: #eeeeee;
224
	text-shadow: 1px 1px 1px #000;
225
	padding:4px 6px 4px 6px;
226
227
	/* Rounded Corners */
228
	-moz-border-radius: 5px;
229
	-webkit-border-radius: 5px;
230
	border-radius: 5px;
231
232
	/* Shadow */
233
	-webkit-box-shadow:inset 0 0 3px #000000;
234
	-moz-box-shadow:inset 0 0 3px #000000;
235
	box-shadow:inset 0 0 3px #000000;
236
}
237
#menu li ul {
238
	list-style:none;
239
	padding:0;
240
	margin:0 0 12px 0;
241
}
242
#menu li ul li {
243
	font-size:12px;
244
	line-height:24px;
245
	position:relative;
246
	text-shadow: 1px 1px 1px #ffffff;
247
	padding:0;
248
	margin:0;
249
	float:none;
250
	text-align:left;
251
	width:130px;
252
}
253
#menu li ul li:hover {
254
	background:none;
255
	border:none;
256
	padding:0;
257
	margin:0;
258
}
259
#menu li .greybox li {
260
	background:#F4F4F4;
261
	border:1px solid #bbbbbb;
262
	margin:0px 0px 4px 0px;
263
	padding:4px 6px 4px 6px;
264
	width:116px;
265
266
	/* Rounded Corners */
267
	-moz-border-radius: 5px;
268
	-webkit-border-radius: 5px;
269
	border-radius: 5px;
270
}
271
#menu li .greybox li:hover {
272
	background:#ffffff;
273
	border:1px solid #aaaaaa;
274
	padding:4px 6px 4px 6px;
275
	margin:0px 0px 4px 0px;
276
}

Interessante und relevante Links

Abschluss

Ich hoffe, Ihnen hat dieses Tutorial zum Erstellen von Mega-Menüs gefallen. Danke, dass Sie mitgehen!