Heute gibt es mal wieder ein kleines Tutorial auf SchmaRs-World.de. Dieses Mal geht es um eine Simple „drop down Navigation“. Die „Inspiration“ zu diesem Tutorial habe ich durch ein Codesnippet zum Thema „Mouseover mit CSS“ von Raph im Eurostyle-Webmedia.de Forum bekommen. Herzlichen Dank an dieser Stelle dafür
.
Wir werden die Navigation mit 4 ineinander verschachtelten Listen realisieren. 1 Dieser Listen ist die „Hauptnavigation“ in welche die anderen eingebettet werden.
Dieses Tutorial richtet sich an Anfänger/Fortgeschrittene um es verstehen zu können sollte man bereits einige Grundkenntnisse in (x)html und CSS haben.
Hier ist eine Preview unseres Ziels
Das xhtml Grundgerüst
Als erstes Fangen wir mit dem xhtml- Code an. Den Anfang bildet wie immer der obligatorische Link zum Stylesheet innerhalb der <head></head> tags.
<link href="style.css" media="screen" type="text/css" rel="stylesheet" />
Als nächstes brauchen wir eine Liste hierfür eignet sich eine ungeordnete Liste also <ul></ul>. Diese liste bekommt nun 3 Einträge für die Kategorien unserer Navigation. Jedem dieser Einträge weisen wir die CSS-Klasse „navi“ zu, welche wir später noch definieren werden. Die list-Items (<li>) bekommen jetzt noch den Inhalt „Kategorie 1-3“. Unser Quellcode sieht nun wie folgt aus.
Jetzt bekommt jedes Element unserer Liste eine weitere Liste als Inhalt, auch hier bietet sich eine wieder eine ungeordnete Liste an. Jeder dieser „Unterlisten“ weisen wir die CSS-Klasse „submenu“ zu. Alle Listen mit der „submenu- Klasse“ bekommen jeweils 3 list-tems mit dem Inhalt „link1-3“.
<li class="navi">Kategorie 1 <ul class="submenu"> <li>link1</li> <li>link1</li> <li>link1</li> </ul> </li> <li class="navi">Kategorie 2 <ul class="submenu"> <li>link2</li> <li>link2</li> <li>link2</li> </ul> </li> <li class="navi">Kategorie 3 <ul class="submenu"> <li>link3</li> <li>link3</li> <li>link3</li> </ul> </li> </ul>
So das war es auch schon von der xhtml Seite, weiter geht’s mit dem Cascading Style Sheet.
Die style.css
Der CSS Code ist recht minimalistisch, jedoch sehr wirkungsvoll.
Als erstes beginnen wir mit einigen Allgemeinen Eigenschaften.
*, html, body{ margin:0; padding:0; } body{ color:#000000; background-color:#EFEFEF; font-family:Arial, Helvetica, sans-serif; font-size:12px; }
(Der Code der in der body klasse enthalten ist, dient lediglich dem Layout.)
Nun ist die Klasse "Navi" dran. Wir setzen die Eigenschaft display auf inline um aus den (in den meisten Fällen) standardmäßig als Block-Elemente deklarierten List-items ein Inline-Element zu formen. Die restlichen Angaben in dieser Klasse sind lediglich für das Layout zuständig und können nach belieben gestaltet oder weggelassen werde.
.navi{ display:inline; background:#97E1FD; font-size:16px; border:#66FFFF 2px dotted; margin-left:100px; }
In diesen kleinen aber feinen Schritt definieren wir die Klasse „submenu“. Sie bekommt lediglich die Eigenschaft „display“ mit dem Wert „none“ zugewiesen wodurch alle „submenu-Elemente“ nicht angezeigt werden.
.submenu{ display:none; }
Jetzt kommt das Herzstück unserer Navigation. Die Deklaration des Verhaltens der Klasse „submenu“, wenn sich der Mauszeiger über einen „navi“ Element befindet. Die Eigenschaft „display“ wird auf „inline“ gesetzt wodurch die zuvor nicht sichtbare Liste als inline-Element dargestellt wird. Das setzen der Eigenschaft „position“ auf „absolute“ ist neben den eben bei display angewandten verfahren Elementar. Das setzen von absolute entfernt die „submenu-Elemente“ aus dem normalen Textfluss sodass sie über oder unter den anderen Elementen angezeigt werden und nicht das Layout zerstören. Mit der Eigenschaft „z-index“ wir angeben welches Element über welchen liegt. z.B. wird ein Element das einen „z-index“ von 1 hat unter einem mit einem „z-index“ von 2 dargestellt. Die Eigenschaft „margin-left“ hat in diesem Fall nur Layouttechnische Bedeutung.
.navi:hover .submenu{ display:inline; position:absolute; z-index:2; margin-left:1px; }
Nun ist es fast geschafft jetzt folgt noch eine kleine Definition des Verhaltens von List-Items innerhalb eines „submenu“ Elements. Hierbei sind die Eigenschaften „display“ und „list-style-position“ wichtig. Die auf Block gestellte Eigenschaft „display“ sorgt dafür dass die Listenelemente untereinander also als Block Elemente dargestellt werden. list-style-position:outside; ist lediglich ein Fix für den IE7 da dieser ansonsten vor den Inhalt der List-Item einen freien platz darstellt.
.navi:hover .submenu li{ display:block; background-color:#6699FF; border:#66FFFF 1px dotted; list-style-position:outside; }
Hier die Tutorial Dateien.
So da war es auch schon mit unserem kleinen Turorial ich hoffe es hat euch weitergeholfen und war gut zu verstehen. Für Kritik positive wie negative bin offen, also lasst eure Meinung in den Kommentaren da.




By koellmania on Sep 10, 2008 | Reply
Gute Aufteilung!
Ich würde es aber angenehmer finden, wenn die Dateien nicht als .rar zur Verfügung gestellt werden sondern auch noch online zu besichtigen sind. Aber tolles Tutorial, gefällt mir!
koellmanias letzter Artikel..Blogparade die 2te: Worauf achtest Du beim PC-Kauf?
By SchmaR on Sep 12, 2008 | Reply
Hi freut mich das dir das Tutorial gefällt.
Die Datein sind Online einsehbar in der Preview hast den Htmlquelltext von welchen aus man sich auch die CSS angucken könnte aber hier noch einmal ein Konfotabler Link.
http://www.schmars-world.de/inhalt/tutorials/demos/navi/style.css
By Huggy on Sep 18, 2008 | Reply
Schöne Anleitung, auch wenn mein browser (safari) es manchmal falsch anzeigt..firefox perfekt
By SchmaR on Sep 18, 2008 | Reply
Hi Huggy schön das dir das Tutorial gefällt, das mitn Safari ist ärgerlich ich hatte nicht viel Zeit als ich das Tutorial gemacht habe deshalb habe ich es nur in IE 7 und FF 3 getestet.