<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>KS Webdesign - Der Blog &#187; dropdown</title>
	<atom:link href="http://webdesign-passau.com/wordpress/tag/dropdown/feed/" rel="self" type="application/rss+xml" />
	<link>http://webdesign-passau.com/wordpress</link>
	<description></description>
	<lastBuildDate>Wed, 18 Jan 2012 13:08:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Navi &#8211; Dropdown</title>
		<link>http://webdesign-passau.com/wordpress/navi-dropdown/</link>
		<comments>http://webdesign-passau.com/wordpress/navi-dropdown/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 13:39:24 +0000</pubDate>
		<dc:creator>Klaus</dc:creator>
				<category><![CDATA[Navigationen]]></category>
		<category><![CDATA[XHTML/CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[dropdown]]></category>
		<category><![CDATA[menü]]></category>
		<category><![CDATA[navi]]></category>

		<guid isPermaLink="false">http://webdesign-passau.com/wordpress/?p=141</guid>
		<description><![CDATA[Tutorial zur Erstellung eines einfachen Dropdown-Menüs mit XHTML/CSS und etwas Javascript für den IE 6. Hier findest du die dropdown_anfang.htm zum Quelltext rauskopieren. Im Browser schaut es so aus: Die XHTML-Struktur des Menüs ist folgende: &#60;ul id="navi"&#62; &#60;li&#62;&#60;strong class="aktiv"&#62;Startseite&#60;/strong&#62;&#60;/li&#62; &#60;li&#62;&#60;a &#8230; <a href="http://webdesign-passau.com/wordpress/navi-dropdown/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tutorial zur Erstellung eines einfachen Dropdown-Menüs mit XHTML/CSS und etwas Javascript für den IE 6.<span id="more-141"></span></p>
<p class="abstandoben2">Hier findest du die <a href="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/08/dropdown_anfang.htm">dropdown_anfang.htm</a> zum Quelltext rauskopieren.</p>
<p>Im Browser schaut es so aus:</p>
<p><img src="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/08/dropdown_anfang.png" alt="Dropdown Anfang" width="400" height="366" /></p>
<p class="abstandoben2 abstandunten0">Die XHTML-Struktur des Menüs ist folgende:</p>
<div class="beitragscode">
<ul>
<li><code>&lt;ul id="navi"&gt;</code></li>
<li><code>&lt;li&gt;&lt;strong class="aktiv"&gt;Startseite&lt;/strong&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Galerie&lt;/a&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;ul&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;li&gt;&lt;a href="#"&gt;Fotos&lt;/a&gt;&lt;/li&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;li&gt;&lt;a href="#"&gt;Gemälde&lt;/a&gt;&lt;/li&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;li&gt;&lt;a href="#"&gt;Grafiken&lt;/a&gt;&lt;/li&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;/ul&gt;</code></li>
<li><code><strong>&lt;/li&gt;</strong></code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Kontakt&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Links&lt;/a&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;ul&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;li&gt;&lt;a href="#"&gt;Gute&lt;/a&gt;&lt;/li&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;li&gt;&lt;a href="#"&gt;Schlechte&lt;/a&gt;&lt;/li&gt;</code></li>
<li class="codeeinrueckung"><code>&lt;/ul&gt;</code></li>
<li><code><strong>&lt;/li&gt;</strong></code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Impressum&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;/ul&gt;</code></li>
</ul>
</div>
<p>Die Untermenüs sind schon in die Menüliste eingeschachtelt. Zu beachten ist, das der Listenpunkt des Hauptmenüpunktes erst nach dem Submenü geschlossen werden darf. Den jeweils schließenden Hauptmenüpunkt habe ich <code><strong>fett</strong></code> hervorgehoben.</p>
<p>Die grundlegenden Formatierungen für die Links habe ich auch schon vorgenommen, damit wir uns ganz auf die Positionierung und Gestaltung der Submenüs konzentrieren können.</p>
<p class="abstandoben2">Los gehts! Bitte CSS ergänzen:</p>
<div class="beitragscode">
<ul>
<li><code>#topnavi  {</code></li>
<li class="codeeinrueckung"><code>float:left;</code></li>
<li class="codeeinrueckung"><code>width:36em;</code></li>
<li class="codeeinrueckung"><code>background-color:#f8f8cf;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>#navi  {</code></li>
<li class="codeeinrueckung"><code>float:left;</code></li>
<li class="codeeinrueckung"><code>width:100%;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>#navi li  {</code></li>
<li class="codeeinrueckung"><code>float:left;</code></li>
<li class="codeeinrueckung"><code>width:7.2em;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>#textbereich  {</code></li>
<li class="codeeinrueckung"><code>clear:both;</code></li>
<li><code>}</code></li>
</ul>
</div>
<p>Die Liste, alle Hauptmenüpunkte und der umgebende Container (<code>#topnavi</code>) werden gefloatet und im Textbereich wird gecleart, um den normalen Textfluß wiederherzustellen.</p>
<p>Das Ergebnis:</p>
<p><img src="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/08/dropdown_mitte.png" alt="Dropdown Mitte" width="400" height="243" /></p>
<p class="abstandoben2 abstandunten0">Bitte CSS ergänzen:</p>
<div class="beitragscode">
<ul>
<li><code>#navi li li  {</code></li>
<li class="codeeinrueckung"><code>float:none;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>#navi li ul  {</code></li>
<li class="codeeinrueckung"><code>position:absolute;</code></li>
<li class="codeeinrueckung"><code>left:-9999px;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>#navi li:hover ul  {</code></li>
<li class="codeeinrueckung"><code>left:auto;</code></li>
<li><code>}</code></li>
</ul>
</div>
<p class="abstandunten0">Der <em>Float</em> wird für die zweite Menüebene wieder aufgehoben, damit diese Links später untereinander stehen.</p>
<p class="abstandunten0">Die Liste der zweiten Ebene wird absolut positioniert und aus dem Bildschirm geschoben, damit sie die Umgebung nicht mehr beeinflusst und im <em>Normalzustand</em> nicht zu sehen ist.</p>
<p>Wenn ein Hauptmenüpunkt <em>gehovert</em> wird, springt das Submenü wieder in den sichtbaren Bereich, weil die Positionsangabe <code>left:auto;</code> definiert wurde.</p>
<p class="abstandoben">Der optische Stand der Dinge:</p>
<p><img src="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/08/dropdown_fertig.jpg" alt="Dropdown Fertig" width="400" height="179" /></p>
<p class="abstandoben">Einwandfrei!</p>
<p class="abstandunten0">Und jetzt mal im IE 7 öffnen.</p>
<p>Das Submenü klappt nicht aus</p>
<p class="abstandunten0">Der IE7 leidet am <strong>CSS Popup Bug</strong>, der bestimmte Angaben für das gehoverte Element (hier <code>li</code>) benötigt, wenn sich dessen Nachfahren (hier <code>ul</code>) ändern sollen.</p>
<p>Außerdem tritt beim IE7 der <strong>Whitespace-Bug</strong> auf, d.h. zwischen den <code>li</code>-Elementen des Submenüs sind Lücken zu sehen. Das kommt daher weil die <code>li</code>-Elemente durch die Angabe einer Breite <a href="http://onhavinglayout.fwpf-webdesign.de/" title="Externer Link">HasLayout</a> haben, die Links jedoch nicht. Davon sind auch die älteren IE’s betroffen. </p>
<p class="abstandunten0 abstandoben2">Bitte den Conditional Comment ergänzen:</p>
<div class="beitragscode">
<ul>
<li><code>&lt;!--[if lte IE 8]&gt;</code></li>
<li><code>&lt;style type="text/css"&gt;</code></li>
<li><code><strong>/* CSS Popup-Bug */</strong></code></li>
<li><code>*+html #navi li:hover { text-indent: 0; }</code></li>
<li><code><strong>/* Whitespace-Bug */</strong></code></li>
<li><code>*+html #navi a { min-height: 0; }</code></li>
<li><code><strong>/* HasLayout für die Links im IE 6 */</strong></code></li>
<li><code>* html #navi a  {  height: 1px;  }</code></li>
<li><code>&lt;/style&gt;</code></li>
<li><code>&lt;![endif]--&gt;</code></li>
</ul>
</div>
<p class="abstandunten0">Im IE 7 ist alles in Ordnung, aber was ist mit dem IE 6?</p>
<p>Das Submenü klappt immer noch nicht aus. Das liegt daran das der IE 6 <code>:hover</code> nur in Verbindung mit <code>a</code> kennt. Mit <code>li:hover</code> kann er nix anfangen.</p>
<p>Mit etwas Javascript bekommen wir das in den Griff. Damit ist es möglich den <code>li</code>-Elementen bei <code>onmouseover</code> eine Klasse <code>.sfhover</code> hinzuzufügen, die dann per CSS angesprochen werden kann.</p>
<p class="abstandunten0 abstandoben2">Bitte einen weiteren Conditional Comment hinzufügen:</p>
<div class="beitragscode">
<ul>
<li><code>&lt;!--[if lt IE 7]&gt;</code></li>
<li><code>&lt;script type="text/javascript"&gt;</code></li>
<li><code><em> // Son of Suckerfish Dropdowns</em></code></li>
<li><code><em> // http://htmldog.com/articles/suckerfish/dropdowns/</em></code></li>
<li><code>sfHover = function() {</code></li>
<li><code>var sfEls = document.getElementById("navi").getElementsByTagName("LI");</code></li>
<li><code>for (var i=0; i&lt;sfEls.length; i++) {</code></li>
<li><code> sfEls[i].onmouseover=function() {</code></li>
<li><code>this.className+=" sfhover";</code></li>
<li><code>}</code></li>
<li><code> sfEls[i].onmouseout=function() {</code></li>
<li><code>this.className=this.className.replace(new RegExp(" sfhover\\b"), "");</code></li>
<li><code>}</code></li>
<li><code>}</code></li>
<li><code>}</code></li>
<li><code> if (window.attachEvent) window.attachEvent("onload", sfHover);</code></li>
<li><code>&lt;/script&gt;</code></li>
<li><code>&lt;![endif]--&gt;</code></li>
</ul>
</div>
<p class="abstandunten0 abstandoben2">Bitte CSS ergänzen:</p>
<div class="beitragscode">
<ul>
<li><code>#navi li:hover ul,</code></li>
<li><code><strong>#navi li.sfhover ul</strong>  {</code></li>
<li class="codeeinrueckung"><code> left:auto;</code></li>
<li><code>}</code></li>
</ul>
</div>
<p>Jetzt ist auch im IE 6 alles in Ordnung.</p>
<p class="abstandoben2">Inspiriert von: <a href="http://www.galileocomputing.de/1668?GPP=fcsst2" title="Externer Link">Fortgeschrittene CSS-Techniken</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webdesign-passau.com/wordpress/navi-dropdown/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

