<?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; CSS-Tabelle</title>
	<atom:link href="http://webdesign-passau.com/wordpress/tag/css-tabelle/feed/" rel="self" type="application/rss+xml" />
	<link>http://webdesign-passau.com/wordpress</link>
	<description>Ein weiteres tolles WordPress-Blog</description>
	<lastBuildDate>Wed, 04 Aug 2010 11:29:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Navi &#8211; CSS-Tabelle</title>
		<link>http://webdesign-passau.com/wordpress/navi-css-tabelle/</link>
		<comments>http://webdesign-passau.com/wordpress/navi-css-tabelle/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 05:21:31 +0000</pubDate>
		<dc:creator>Klaus</dc:creator>
				<category><![CDATA[Navigationen]]></category>
		<category><![CDATA[CSS-Tabelle]]></category>
		<category><![CDATA[mehrzeilig]]></category>
		<category><![CDATA[menü]]></category>
		<category><![CDATA[navi]]></category>
		<category><![CDATA[Tabelle]]></category>

		<guid isPermaLink="false">http://webdesign-passau.com/wordpress/?p=324</guid>
		<description><![CDATA[Ein horizontales Menü dessen Links teilweise zwei,- und/oder dreizeilig sind, lassen sich mithilfe einer CSS-Tabelle recht gut gestalten. Die Vorteile der Tabellendarstellung bestehen darin, dass die Tabellenzellen einer Zeile immer gleich hoch sind und sich immer auf die gesamte Breite der Tabelle verteilen. Es gibt keinen Umbruch der Tabellenzellen und die Inhalte fließen nicht über. [...]]]></description>
			<content:encoded><![CDATA[<p>Ein horizontales Menü dessen Links teilweise zwei,- und/oder dreizeilig sind, lassen sich mithilfe einer <em>CSS-Tabelle</em> recht gut gestalten.</p>
<p>Die Vorteile der Tabellendarstellung bestehen darin, dass die Tabellenzellen einer Zeile immer gleich hoch sind und sich immer auf die gesamte Breite der Tabelle verteilen. Es gibt keinen Umbruch der Tabellenzellen<br />
und die Inhalte fließen nicht über.<span id="more-324"></span></p>
<p class="abstandoben2">Hier findest du die <a href="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/09/navi_tabelle_anfang.htm">navi_tabelle_anfang.htm</a> zum Quelltext rauskopieren.</p>
<p>Die benötigten Grafiken kannst du dir hier holen: <a href="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/09/navi_tabelle_grafik.htm">navi_tabelle_grafik.htm</a></p>
<p>Im Browser schaut es so ungfähr aus:</p>
<p><img src="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/09/navi_tabelle_anfang.png" alt="Menü mit CSS-Tabelle - Anfang" width="480" height="215" /></p>
<p class="abstandunten0 abstandoben2">Der Quellcode des Navi-Containers schaut so aus:</p>
<div class="beitragscode">
<ul>
<li><code>&lt;div id=&quot;navi&quot;&gt;</code></li>
<li><code>&lt;ul id=&quot;navigation&quot;&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Windows&lt;/span&gt; Betriebssystem&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Linux&lt;/span&gt; Betriebssystem&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Mac&lt;/span&gt; Betriebssystem&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Klemptnersglück&lt;/span&gt; Betriebssystem&lt;br /&gt;Gibts das?&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;/ul&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
</ul>
</div>
<p class="abstandunten0">Und wo ist jetzt die Tabelle, werdet ihr euch vielleicht jetzt fragen?</p>
<p>Im Quelltext werden wir sie nicht anlegen. Sie wird ausschließlich über CSS-Eigenschaften und Werte<br />
realisiert!</p>
<p class="abstandunten0 abstandoben2">Fangen wir also mit CSS-Ergänzungen an:</p>
<div class="beitragscode">
<ul>
<li><code>div#navi  {</code></li>
<li class="codeeinrueckung"><code>display:table;</code></li>
<li class="codeeinrueckung"><code>width:100%;</code></li>
<li class="codeeinrueckung"><code>background:#f8e580 url(navi_tabelle_verlauf.png) repeat-x left top;</code></li>
<li class="codeeinrueckung"><code>border-bottom:1px solid #a8a79f;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>div#navi ul  {</code></li>
<li class="codeeinrueckung"><code>display:table-row;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>div#navi ul li  {</code></li>
<li class="codeeinrueckung"><code>display:table-cell;</code></li>
<li class="codeeinrueckung"><code>vertical-align:top; <span class="kommentarfarbe">/* Text wird oben in der Zelle angeordnet */</span></code></li>
<li class="codeeinrueckung"><code>text-align:center;</code></li>
<li><code>}</code></li>
</ul>
</div>
<p><code>div#navi</code> wird zur <em>Tabelle</em>, die <code>ul</code> zur <em>Tabellenzeile</em><br />
und die Listenpunkte zur <em>Tabellenzelle</em>. <code>div#navi</code> hat eine horizontale Verlaufsgrafik zugewiesen bekommen.</p>
<p class="abstandoben2">Zwischenstand im Browser:</p>
<p><img src="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/09/navi_tabelle_mitte.png" alt="Menü mit CSS-Tabelle - Mitte" width="480" height="165" /></p>
<p class="abstandoben">Noch nicht perfekt, aber auch nicht ganz schlecht.</p>
<p class="abstandunten0">Als nächstes bekommen alle Listenpunkte im Quelltext <strong>bis auf den ersten</strong> die Klasse <code>.trennlinie</code> zugewiesen.</p>
<p>Der erste Listenpunkt bekommt die Klasse nicht, weil sonst der Außenrahmen vom <code>div#umhang</code> in Höhe des Menüs auf der linken Seite <code>1px</code> breiter wäre als überall sonst. Das mag optisch kaum ins Gewicht fallen, aber mich stört es schon weil ich es weiss.</p>
<p>Die Links und das <code>span</code> wo wir das jeweils erste Wort des Linktextes eingewickelt haben werden gleich mitgestaltet.</p>
<p class="abstandunten0 abstandoben2">Bitte CSS ergänzen:</p>
<div class="beitragscode">
<ul>
<li><code>.trennlinie  {</code></li>
<li class="codeeinrueckung"><code>background: url(navi_tabelle_linie.png) repeat-y left top;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>div#navi li a  {</code></li>
<li class="codeeinrueckung"><code>display:block;</code></li>
<li class="codeeinrueckung"><code>color:#995d08;</code></li>
<li class="codeeinrueckung"><code>font-size:0.8em;</code></li>
<li class="codeeinrueckung"><code>text-decoration:none;</code></li>
<li class="codeeinrueckung"><code>padding:0.5em 0;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>div#navi ul li a:hover  {</code></li>
<li class="codeeinrueckung"><code>color:#d90000;</code></li>
<li><code>}</code></li>
</ul>
<ul>
<li><code>div#navi ul li a span  {</code></li>
<li class="codeeinrueckung"><code>display:block;</code></li>
<li class="codeeinrueckung"><code>font-size:1.5em;</code></li>
<li class="codeeinrueckung"><code>line-height:1.1;</code></li>
<li><code>}</code></li>
</ul>
</div>
<p>Ergebnis im Browser:</p>
<p><img src="http://webdesign-passau.com/wordpress/wp-content/uploads/2009/09/navi_tabelle_fertig.png" alt="Menü mit CSS-Tabelle - Fertig" width="480" height="165" /></p>
<p class="abstandoben">Soweit, sogut. Was ist mit dem IE 6/7?</p>
<p class="abstandunten0">Wir erleben die übliche, böse Überraschung.</p>
<p>Alle Menüpunkte stehen untereinander, weil der IE 6/7 mit <code>display:table/table-row/table- cell</code> nix anfangen kann.</p>
<p>Die <em>Conditional Comments</em> werden nun ausgiebig mit Anweisungen gefüllt, damit diese Browser unser Menü vernünftig umsetzen.</p>
<p class="abstandunten0 abstandoben2">Bitte den Conditional Comment ergänzen:</p>
<div class="beitragscode">
<ul>
<li><code class="kommentarfarbe">&lt;!--[if lte IE 8]&gt;&lt;style type=&quot;text/css&quot;&gt;</code></li>
<li><code>*+html #navi ul li  {</code></li>
<li class="codeeinrueckung"><code>width:24.9%;</code></li>
<li class="codeeinrueckung"><code>display:inline;</code></li>
<li class="codeeinrueckung"><code>zoom:1;</code></li>
<li><code>}</code></li>
<li><code>* html #navi ul li  {</code></li>
<li class="codeeinrueckung"><code>width:24.9%;</code></li>
<li class="codeeinrueckung"><code>display:inline;</code></li>
<li class="codeeinrueckung"><code>zoom:1;</code></li>
<li><code>}</code></li>
<li><code class="kommentarfarbe">&lt;/style&gt;&lt;![endif]--&gt;</code></li>
</ul>
</div>
<p class="abstandunten0">Mit <code>display:inline;</code> und <code>zoom:1;</code> wird ein <em>Inlineblock-</em>ähnliches Verhalten für den IE 6/7 erzeugt.</p>
<p>Eine feste Breite von etwas weniger als 25% wird zugewiesen. Etwas weniger deshalb, um Rundungsfehler abzufangen.</p>
<p>Die Listenpunkte stehen schon mal nebeneinander. Leider verlängert sich die vertikale Trenngrafik für die Listenpunkte nicht bis unten.</p>
<p>Ein Griff in die Trickkiste wird fällig!</p>
<p class="abstandunten0 abstandoben2">Bitte den Conditional Comment ergänzen:</p>
<div class="beitragscode">
<ul>
<li><code class="kommentarfarbe">&lt;!--[if lte IE 8]&gt;&lt;style type=&quot;text/css&quot;&gt;</code></li>
<li><code>*+html div#navi ul li  {</code></li>
<li class="codeeinrueckung"><code>padding-bottom:6em;</code></li>
<li class="codeeinrueckung"><code>margin-bottom:-5.5em;</code></li>
<li><code>}</code></li>
<li><code>* html div#navi ul li  {</code></li>
<li class="codeeinrueckung"><code >padding-bottom:6em;</code></li>
<li class="codeeinrueckung"><code>margin-bottom:-5.5em;</code></li>
<li><code>}</code></li>
<li><code class="kommentarfarbe">&lt;/style&gt;&lt;![endif]--&gt;</code></li>
</ul>
</div>
<p>Die Listenpunkte bekommen ein unmäßiges unteres <code>padding</code> und zum Ausgleich ein fast genauso großes unteres <code>margin</code>.</p>
<p>Im IE 6 ist nun alles korrekt. Der IE7 macht es im Prinzip auch richtig, jedoch ragen die senkrechten HG-Grafiken für die Listenpunkte nach unten heraus.</p>
<p class="abstandunten0 abstandoben2">Bitte den Conditional Comment ergänzen:</p>
<div class="beitragscode">
<ul>
<li><code class="kommentarfarbe">&lt;!--[if lte IE 8]&gt;&lt;style type=&quot;text/css&quot;&gt;</code></li>
<li><code>*+html div#navi ul {</code></li>
<li class="codeeinrueckung"><code>overflow-y:hidden;</code></li>
<li><code>}</code></li>
<li><code class="kommentarfarbe">&lt;/style&gt;&lt;![endif]--&gt;</code></li>
</ul>
</div>
<p>Mit dieser Anweisung stimmt es jetzt auch im IE 7.</p>
<p class="abstandoben2">Zu erwähnen wäre noch, dass wenn die Navigation den ganzen sichtbaren Bereich einnimmt, d.h. ohne Begrenzung durch ein umgebendes Element ist, der IE7 eine <em>Mindestbreite</em> braucht, um bei kleinem Viewport eine Überlappung der Linktexte zu verhindern (<code>min-width:40em;</code> z.B.).</p>
<p>Des Weiteren können die Listenpunkte in diesem Fall beim Verkleinern des Viewportes in die nächste Zeile umbrechen. Um das zu verhindern bekommt die <code>ul white-space:nowrap;</code> zugewiesen.</p>
<p>Damit die Linktexte über zwei oder mehr Zeilen laufen können benötigt <code>a</code> gleichzeitig noch <code>white-space:normal;</code>.</p>
<p>Natürlich alles per Conditional Comment.</p>
<p class="abstandoben">Diese Art der Menügestaltung kommt sicher nicht allzuhäufig zur Anwendung, da der Teufel hier im Detail steckt. Aber gut zu wissen, das es so auch geht.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdesign-passau.com/wordpress/navi-css-tabelle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
