<?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>Braekling.de &#187; HTML und CSS</title>
	<atom:link href="http://www.braekling.de/cat/web-design/html-und-css/feed" rel="self" type="application/rss+xml" />
	<link>http://www.braekling.de</link>
	<description>Technik &#38; Kommunikation</description>
	<lastBuildDate>Tue, 07 Sep 2010 22:22:20 +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>HTML5: Web Storage (Local und Session Storage)</title>
		<link>http://www.braekling.de/web-design/3596-html5-web-storage-local-und-session-storage.html</link>
		<comments>http://www.braekling.de/web-design/3596-html5-web-storage-local-und-session-storage.html#comments</comments>
		<pubDate>Mon, 09 Aug 2010 07:09:27 +0000</pubDate>
		<dc:creator>André Bräkling</dc:creator>
				<category><![CDATA[HTML und CSS]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[dom event]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[local storage]]></category>
		<category><![CDATA[referenz]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[session storage]]></category>
		<category><![CDATA[Speicher]]></category>
		<category><![CDATA[web storage]]></category>

		<guid isPermaLink="false">http://www.braekling.de/?p=3596</guid>
		<description><![CDATA[Mit den DOM-Objekten localStorage und sessionStorage serviert HTML5 uns eine wunderbare Alternative zu den bisherigen Cookies. Zunächst werden die Daten dadurch nicht mehr bei jedem Request vollständig mitgesendet, was so manche Kopfschmerzen bei der Performance-Optimierung von Webseiten ersparen sollte. Außerdem werden die Begrenzungen von Cookies aufgehoben, denn via Web Storage können abhängig vom Limit des [...]]]></description>
			<content:encoded><![CDATA[<p>Mit den DOM-Objekten <em>localStorage</em> und <em>sessionStorage</em> serviert HTML5 uns eine wunderbare Alternative zu den bisherigen Cookies. Zunächst werden die Daten dadurch nicht mehr bei jedem Request vollständig mitgesendet, was so manche Kopfschmerzen bei der <a href="/web-development/2290-webseiten-performance-erhohen-ladezeit-verbessern.html" title="Webseiten-Performance erhöhen, Ladezeiten verbessern">Performance-Optimierung von Webseiten</a> ersparen sollte. Außerdem werden die Begrenzungen von Cookies aufgehoben, denn via Web Storage können abhängig vom Limit des Browsers mehrere Megabyte Daten gespeichert werden. In diesem Artikel stelle ich die neuen Möglichkeiten vor, die übrigens von allen modernen Browsern inkl. dem Internet Explorer 8 unterstützt werden, vor.<span id="more-3596"></span></p>
<h4>Local oder Session?</h4>
<p>Zunächst zum Unterschied zwischen <em>localStorage</em> und <em>sessionStorage</em>: Die Daten werden in der <em>local</em>-Variante quasi dauerhaft auf der Clientseite gespeichert, d.h. sie verbleiben auch, wenn der Browser geschlossen wird. Sie können nur durch die Webseite selbst oder natürlich durch den Nutzer gelöscht werden. Vergessen darf man dabei aber nicht, dass die clientseitige Speicherung vom System und vom Browser abhängig ist. Verwendet der Benutzer einen anderen Browser oder einen anderen Rechner, kann er nicht auf die Daten zugreifen, sofern sie nicht auch serverseitig abgelegt wurden. Kurzlebiger ist hingegen die <em>session</em>-Variante, da sie lediglich an die aktuelle Browsersession gebunden ist. Demnach werden die Daten gelöscht, sobald der Browser (ggf. auch nur Fenster/Tab, je nachdem ob der Browser diese als eigenständige Session sieht) geschlossen wird.</p>
<h4>Verwendung</h4>
<p>Die Benutzung beider Varianten ist identisch, da sie jeweils das <a href="http://dev.w3.org/html5/webstorage/#the-storage-interface" title="W3C: The Storage Interface">Storage-Interface</a> verwenden:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> cnt <span style="color: #339933;">=</span> localStorage.<span style="color: #660066;">length</span><span style="color: #339933;">;</span><br />
localStorage.<span style="color: #660066;">key</span><span style="color: #009900;">&#40;</span>n<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
localStorage.<span style="color: #660066;">getItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
localStorage.<span style="color: #660066;">setItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #339933;">,</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
localStorage.<span style="color: #660066;">removeItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
localStorage.<span style="color: #660066;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009966; font-style: italic;">/* bzw. */</span><br />
<span style="color: #003366; font-weight: bold;">var</span> cnt <span style="color: #339933;">=</span> sessionStorage.<span style="color: #660066;">length</span><span style="color: #339933;">;</span><br />
sessionStorage.<span style="color: #660066;">key</span><span style="color: #009900;">&#40;</span>n<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
sessionStorage.<span style="color: #660066;">getItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
sessionStorage.<span style="color: #660066;">setItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #339933;">,</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
sessionStorage.<span style="color: #660066;">removeItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
sessionStorage.<span style="color: #660066;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<h4>Attribute und Funktionen</h4>
<p>Das <em>length</em>-Attribut und die Funktionen im Überblick:</p>
<ul>
<li><strong>Attribut length:</strong> Enthält die Anzahl der gespeicherten Elemente.</li>
<li><strong>Funktion key(n):</strong> Gibt den Namen des <em>n</em>-ten Keys zurück. So können zusammen mit <em>length</em> auch Datensätze unbekannter Größe durchlaufen werden.</li>
<li><strong>Funktion getItem(key):</strong> Liefert den Wert zum Schlüssel <em>key</em>.</li>
<li><strong>Funktion setItem(key, value):</strong> Legt den Wert <em>value</em> unter dem Schlüssel <em>key</em> ab.</li>
<li><strong>Funktion removeItem(key):</strong> Löscht den Wert zum Schlüssel <em>key</em>.</li>
<li><strong>Funktion clear():</strong> Löscht alle gespeicherten Daten.</li>
</ul>
<h4>Beispiel</h4>
<p>Eine kleine <a href="http://www.braekling.de/testlab/html5-webstorage-demo.html" item="Web Storage Demo">Web Storage Demo</a> habe ich natürlich auch vorbereitet. Hier der Quelltext des JavaScript-Teils:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #006600; font-style: italic;">/* Als obj wird entsprechend sessionStorage<br />
&nbsp; &nbsp;oder localStorage uebergeben. */</span><br />
<br />
<span style="color: #003366; font-weight: bold;">function</span> fullclear<span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;obj.<span style="color: #660066;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;buildTables<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">function</span> save<span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #003366; font-weight: bold;">var</span><br />
&nbsp; &nbsp; &nbsp; key <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'key'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; value <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'value'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;obj.<span style="color: #660066;">setItem</span><span style="color: #009900;">&#40;</span>key.<span style="color: #660066;">value</span><span style="color: #339933;">,</span> htmlEncode<span style="color: #009900;">&#40;</span>value.<span style="color: #660066;">value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;buildTables<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;key.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> value.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">function</span> buildTables<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;buildTable<span style="color: #009900;">&#40;</span>sessionStorage<span style="color: #339933;">,</span> <span style="color: #3366CC;">'session'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;buildTable<span style="color: #009900;">&#40;</span>localStorage<span style="color: #339933;">,</span> <span style="color: #3366CC;">'local'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">function</span> remove<span style="color: #009900;">&#40;</span>obj<span style="color: #339933;">,</span> key<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;obj.<span style="color: #660066;">removeItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;buildTables<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">function</span> buildTable<span style="color: #009900;">&#40;</span>obj<span style="color: #339933;">,</span> id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #003366; font-weight: bold;">var</span> <br />
&nbsp; &nbsp; &nbsp; cnt <span style="color: #339933;">=</span> obj.<span style="color: #660066;">length</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; e <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; iHTML <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; key <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> cnt<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; key <span style="color: #339933;">=</span> obj.<span style="color: #660066;">key</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; iHTML <span style="color: #339933;">+=</span> <span style="color: #3366CC;">'&lt;tr&gt;&lt;td&gt;'</span> <span style="color: #339933;">+</span> key <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/td&gt;&lt;td&gt;'</span> <span style="color: #339933;">+</span> obj.<span style="color: #660066;">getItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/td&gt;&lt;td&gt;&lt;input type=&quot;button&quot; value=&quot;L&amp;ouml;schen&quot; onclick=&quot;javascript:remove('</span><span style="color: #339933;">+</span>id<span style="color: #339933;">+</span><span style="color: #3366CC;">'Storage, <span style="color: #000099; font-weight: bold;">\'</span>'</span><span style="color: #339933;">+</span>key<span style="color: #339933;">+</span><span style="color: #3366CC;">'<span style="color: #000099; font-weight: bold;">\'</span>);&quot;&gt;&lt;/td&gt;&lt;/tr&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;e.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> iHTML<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">function</span> htmlEncode<span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #003366; font-weight: bold;">var</span> <br />
&nbsp; &nbsp; &nbsp; text <span style="color: #339933;">=</span> document.<span style="color: #660066;">createTextNode</span><span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; e <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;e.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #000066; font-weight: bold;">return</span> e.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<h4>Objekte speichern</h4>
<p>Leider können auch hier, wie bei Cookies, nur Strings gespeichert werden. Hier kann man sich aber mit JSON helfen:</p>
<p>1. Objekt <em>value</em> in <em>key</em> speichern:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">localStorage.<span style="color: #660066;">setItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #339933;">,</span> JSON.<span style="color: #660066;">stringify</span><span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>2. Objekt aus <em>key</em> laden:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> value <span style="color: #339933;">=</span> JSON.<span style="color: #660066;">parse</span><span style="color: #009900;">&#40;</span>localStorage.<span style="color: #660066;">getItem</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'Braekling';
var flattr_url = 'http://www.braekling.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Braekling.de';
var flattr_dsc = 'Technik &amp; Kommunikation';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script>
	<p class="hop"><strong>Weitere Artikel zum Thema:</strong></p>
	<ul class="st-related-posts">
	<li><a href="http://www.braekling.de/web-design/3311-css3-color-farben-mit-farbtabellen.html" title="CSS3: color (Farben) mit Farbtabellen (18. Juli 2010)">CSS3: color (Farben) mit Farbtabellen</a> (0)</li>
	<li><a href="http://www.braekling.de/web-development/22-web-entwicklung-1-die-grundgedanken.html" title="Web-Entwicklung 1: Die Grundgedanken (10. März 2008)">Web-Entwicklung 1: Die Grundgedanken</a> (0)</li>
	<li><a href="http://www.braekling.de/personal-interests/3051-mal-kurz-rundgeschaut-19.html" title="Mal kurz rundgeschaut&#8230; #19 (26. März 2010)">Mal kurz rundgeschaut&#8230; #19</a> (1)</li>
	<li><a href="http://www.braekling.de/html5-und-css3" title="HTML5 und CSS3 (20. Juli 2010)">HTML5 und CSS3</a> (0)</li>
	<li><a href="http://www.braekling.de/web-development/634-web-entwicklung-3-tabellen-html.html" title="Web-Entwicklung 3: Tabellen (HTML) (6. Dezember 2008)">Web-Entwicklung 3: Tabellen (HTML)</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.braekling.de/web-design/3596-html5-web-storage-local-und-session-storage.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3: transform (Lineare Transformationen)</title>
		<link>http://www.braekling.de/web-design/3443-css3-transform-lineare-transformationen.html</link>
		<comments>http://www.braekling.de/web-design/3443-css3-transform-lineare-transformationen.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 18:12:56 +0000</pubDate>
		<dc:creator>André Bräkling</dc:creator>
				<category><![CDATA[HTML und CSS]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[2D]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[koordinatensystem]]></category>
		<category><![CDATA[linear]]></category>
		<category><![CDATA[lineare transformation]]></category>
		<category><![CDATA[Matrix]]></category>
		<category><![CDATA[referenz]]></category>
		<category><![CDATA[rotate]]></category>
		<category><![CDATA[scale]]></category>
		<category><![CDATA[skew]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[stylesheet]]></category>
		<category><![CDATA[transform]]></category>
		<category><![CDATA[transformation]]></category>
		<category><![CDATA[translate]]></category>
		<category><![CDATA[vektor]]></category>

		<guid isPermaLink="false">http://www.braekling.de/?p=3443</guid>
		<description><![CDATA[Eine hochinteressante, neue Eigenschaft in CSS3 ist transform. Sie ermöglicht lineare Transformationen beliebiger Seitenelemente, d.h. wir können sie verschieben, rotieren, skalieren und scheren. Auf den ersten Blick wirkt das Konzept recht kompliziert und mag so manchen abschrecken, der von Vektoren und Matrizen Ausschlag bekommt. In Wirklichkeit ist es aber gar nicht so kompliziert, zumal es [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.braekling.de/wp-content/uploads/css3_wuerfel.gif" alt="CSS3: Würfel" title="CSS3: Würfel" width="150" height="154" class="alignleft size-full wp-image-3531" />Eine hochinteressante, neue Eigenschaft in CSS3 ist <em>transform</em>. Sie ermöglicht lineare Transformationen beliebiger Seitenelemente, d.h. wir können sie verschieben, rotieren, skalieren und scheren. Auf den ersten Blick wirkt das Konzept recht kompliziert und mag so manchen abschrecken, der von Vektoren und Matrizen Ausschlag bekommt. In Wirklichkeit ist es aber gar nicht so kompliziert, zumal es gesonderte Funktionen gibt, die sich intuitiv nutzen lassen, und die die Matrix vor den Augen des Designers verbergen. Auch diese neue Eigenschaft wird von allen modernen Browsern, abgesehen vom IE, bereits unterstützt.<span id="more-3443"></span></p>
<h4>Definition</h4>
<p>Die <strong><em>transform</em>-Eigenschaft</strong> ist eigentlich recht simpel:</p>
<p>&lt;transform&gt; =<br />
none|&lt;transform-function&gt;[ &lt;transform-function&gt;]* </p>
<p>Der Standardwert ist schlicht <em>none</em>, es wird also keine Transformation durchgeführt. Alternativ kann eine einzelne oder eine Folge von beliebig vielen Transformationsfunktionen angegeben werden, die entsprechend ihrer Reihenfolge durchgeführt werden.</p>
<p>Zusätzlich existiert eine zweite Eigenschaft namens <strong><em>transform-origin</em></strong>. Sie definiert, wo der Ursprung des zu transformierenden Objektes liegt. Dies ist beispielsweise bei Rotationen interessant, da es einen Unterschied macht, ob ich ein Objekt um sich selbst (Ursprung = der eigene Mittelpunkt) drehe, oder es auf die Umlaufbahn um ein anderes Objekt schicke (Ursprung = Mittelpunkt der Umlaufbahn). Unverständlich? Dann hilft ein Blick auf das <a href="#b2">Beispiel zur Rotation</a> und das <a href="#b3">anschließende Beispiel zum versetzten Ursprung</a>.</p>
<p>Standardmäßig ist der Ursprung immer der Mittelpunkt des zu transformierenden Objektes. <em>transform-origin</em> ist wie folgt definiert:</p>
<p>&lt;transform-origin&gt;=<br />
[[&lt;percentage&gt;|&lt;length&gt;|left|center|right] [&lt;percentage&gt;|&lt;length&gt;|top|center|bottom]?] |<br />
[[left|center|right] || [top|center|bottom]] </p>
<p>Der Ursprung kann also aus einer Prozent/Länge/Keyword-Kombination definiert werden, z.B. <em>50% 50%</em> für den Mittelpunkt, <em>0 0</em> für die linke, obere Ecke oder <em>right bottom</em> für die untere, rechte Ecke. Wird nur ein Wert angegeben, wird der zweite Wert als <em>center</em> angenommen. Der erste Wert steht jeweils für die horizontale und der zweite Wert für die vertikale Richtung, wobei bei Verwendung von zwei Keywords die Reihenfolge auch geändert werden kann, da sich die Ausrichtung dann aus den Keywords ergibt.</p>
<h4>Funktionen und Parameter</h4>
<p>Wie zuvor erwähnt, erhält die <em>transform</em>-Eigenschaft nicht einfach nur ein paar Parameter, sondern verschiedene Funktionen, die der Reihe nach abgearbeitet werden. In diesem Abschnitt werde ich die <em>matrix</em>-Funktion genauer erläutern und auf die weiteren kurz eingehen. Die anschließende Sektion <a href="#beispiele">Beispiele</a> zeigt die einzelnen Funktionen dann im Einsatz.</p>
<p><strong>matrix(&lt;number&gt;,&lt;number&gt;,&lt;number&gt;,&lt;number&gt;,&lt;number&gt;,&lt;number&gt;)</strong></p>
<p><em>matrix</em> ist sozusagen die <strong>Mutter aller Transformationsfunktionen</strong>. Mit ihr lassen sich alle folgenden Funktionen und deren Kombinationen in einer einzelnen Funktion abbilden. Das ist nicht so intuitiv und lesbar, wie es die Verwendung der anderen Funktionen wäre, kann aber gerade bei komplexen Funktionsfolgen deutlich kürzer und bei dynamischen Variationen (z.B. via JavaScript) praktischer sein. Wem die Matrixschreibweise zu kompliziert ist, der kann auch <a href="#translate">direkt zu den anderen Funktionen springen</a>. Ich bemühe mich, alles einigermaßen verständlich zu erklären, auch wenn dabei möglicherweise die mathematische Genauigkeit ein wenig verloren geht. Anschließend gibt es aber noch ein paar Links zur Vertiefung im Detail <img src='http://www.braekling.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img src="http://www.braekling.de/wp-content/uploads/matrix.gif" alt="3x3 2D-Transformationsmatrix" title="3x3 2D-Transformationsmatrix" width="150" height="105" class="alignright size-full wp-image-3543" />Alle Transformationen können mit einer <strong>3&#215;3-Matrix</strong> dargestellt werden, wie in der rechten Abbildung zu sehen ist. Da die letzte Zeile konstant ist, müssen wir der Matrixfunktion nur 6 Parameter übergeben: <em>matrix(a,b,c,d,e,f)</em>. Eine solche Matrix definiert den Unterschied von einem neuen Koordinatensystem zum ursprünglichen Koordinatensystem. Unser Objekt wird also in ein neues Koordinatensystem übertragen. Die einfachste Abbildung ist diejenige, die nichts verändert: <em>matrix(1,0,0,1,0,0)</em>. <em>e</em> und <em>f</em> ermöglichen es uns, unser Objekt zu verschieben (Translation). Setzen wir z.B. jeweils <em>10px</em> ein, dann verschieben wir das Objekt 10 Pixel nach rechts und 10 Pixel nach unten, ändern es aber sonst nicht: <em>matrix(1,0,0,1,10px,10px)</em>. Für die anderen Transformationen sieht es so aus:</p>
<ul>
<li><strong>Scaling via Matrix:</strong> <em>matrix(x,0,0,y,0,0)</em><br />
Mit x definieren wir die Skalierung in der x-Achse (Breite) und mit y in der y-Achse (Höhe). Setzen wir x z.B. auf 2, dann verdoppeln wir die Breite, setzen wir y auf 0.5, dann halbieren wir die Höhe.</li>
<li><strong>Rotation via Matrix:</strong> <em>matrix(cos(x), sin(x), -sin(x), cos(x), 0, 0)</em><br />
Hier entspricht x dem Winkel der Rotation. Wollen wir unser Objekt um den Winkel x=90° drehen, dann wäre der Funktionsaufruf <em>matrix(0,1,-1,0,0,0)</em>.</li>
<li><strong>Skew X via Matrix:</strong> <em>matrix(1, 0, tan(x), 1, 0, 0)</em><br />
<strong>Skew Y via Matrix:</strong> <em>matrix(1, tan(x), 0, 1, 0, 0)</em><br />
Auch beim Scheren brauchen wir einen Winkel. Dieser beschreibt, wie sich die zu verändernde Achse im Verhältnis zur anderen Achse bewegen soll. Daher auch der Begriff &#8220;scheren&#8221;: wir klappen die Achsen des Koordinatensystems wie eine Schere zusammen bzw. auseinander. Wollen wir um 45° längs der x-Achse scheren, dann wäre der Aufruf <em>matrix(1, 0, 1, 1, 0, 0)</em>, d.h. wir drehen die x-Achse um 45° auf die y-Achse zu.</li>
</ul>
<p><a href="http://www.braekling.de/testlab/css3tools/css-transform-matrizenrechner.html"><img src="http://www.braekling.de/wp-content/uploads/matrizenrechner.jpg" alt="CSS3 transform Matrizenrechner" title="CSS3 transform Matrizenrechner" width="150" height="126" class="alignleft size-full wp-image-3554" /></a>Wollen wir mehrere Transformationen hintereinander mit einer Matrix ausführen, dann müssen wir die <strong>Matrizen miteinander multiplizieren</strong>. Die Ergebnismatrix ist dann sozusagen unser all-inclusive-Paket, wie man beim <a href="#b5">Beispiel zur Kombination von Funktionen</a> sehen kann. Um diesen Schritt etwas zu vereinfachen, habe ich einen <a href="/testlab/css3tools/css-transform-matrizenrechner.html" title="CSS3 transform: Matrizenrechner">CSS3 transform Matrizenrechner</a> zusammengebaut. Damit könnt ihr Transformationsmatrizen miteinander multiplizieren, einzelne Funktionen auf eure Matrix anwenden, ein Beispiel ansehen (sofern es in das Sichtfeld passt <img src='http://www.braekling.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) und auch die Rechenschritte beim Multiplizieren der Matrizen nachvollziehen.</p>
<p>Hier noch ein paar weiterführende Links, bevor wir uns den einfacheren Alias-Funktionen zuwenden:</p>
<ul>
<li><a href="http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined" title="Definition der Transformationsmatrix beim W3C">Definition der Transformationsmatrix beim W3C</a></li>
<li><a href="http://de.wikipedia.org/wiki/Koordinatentransformation#Lineare_Transformationen" title="Lineare Transformationen - Eintrag bei Wikipedia">Wikipedia: Lineare Transformationen</a></li>
<li><a href="http://de.wikipedia.org/wiki/Matrix_%28Mathematik%29#Matrizenmultiplikation" title="Matrizenmultiplikation - Eintrag bei Wikipedia">Wikipedia: Matrizenmultiplikation</a></li>
</ul>
<p><img src="http://www.braekling.de/wp-content/uploads/translate.gif" alt="Translation" title="Translation" width="150" height="150" class="alignright size-full wp-image-3564" /><strong><a name="translate">translate(&lt;translation-value&gt;[,&lt;translation-value&gt;])</a></strong></p>
<p>Translate verschiebt das Objekt entsprechend des angegebenen Längenwertes (z.B. 10px). Der erste Wert bezieht sich auf die x-Achse (horizontal), der zweite Wert auf die y-Achse (vertikal). Wird der zweite Wert nicht angegeben, wird <em>0</em> angenommen. Alternativ kann mit <em>translateX(&lt;translation-value&gt;)</em> bzw. <em>translateY(&lt;translation-value&gt;)</em> direkt ein Wert für Verschiebung auf der x- bzw. y-Achse angegeben werden. (Somit sind <em>translate(&lt;translation-value&gt;)</em> und <em>translateX(&lt;translation-value&gt;)</em> synonym.) [<a href="#b1">Beispiel</a>]</p>
<p><img src="http://www.braekling.de/wp-content/uploads/scale.gif" alt="Scaling" title="Scaling" width="150" height="150" class="alignleft size-full wp-image-3566" /><strong>scale(&lt;number&gt;[,&lt;number&gt;])</strong></p>
<p>Skaliert das Objekt um den numerischen Wert, also z.B. 2 für die doppelte und 0.5 für die halbe Größe. Der erste Wert bezieht sich auf die x-Achse (horizontal), der zweite auf die y-Achse (vertikal). Wird nur der erste Parameter angegeben, wird der Wert für beide Achsen verwendet. Alternativ kann mit <em>scaleX(&lt;number&gt;)</em> oder <em>scaleY(&lt;number&gt;)</em> eine Achse auch direkt verändert werden. [<a href="#b4">Beispiel</a>]</p>
<p><img src="http://www.braekling.de/wp-content/uploads/rotate.gif" alt="Rotation" title="Rotation" width="150" height="150" class="alignright size-full wp-image-3567" /><strong>rotate(&lt;angle&gt;)</strong></p>
<p>Dreht das Objekt gemäß dem angegebenen Winkel um den Ursprung. Winkel werden als Zahl + <em>deg</em> geschrieben, also wäre der Parameter <em>90deg</em> für eine Rotation um 90°. [<a href="#b2">Beispiel</a>]</p>
<p><img src="http://www.braekling.de/wp-content/uploads/skew.gif" alt="Skewing" title="Skewing" width="150" height="150" class="alignleft size-full wp-image-3568" /><strong>skew(&lt;angle&gt;[,&lt;angle&gt;])</strong></p>
<p>Schert das Objekt. Auch hier sind Winkelangaben (Zahl + <em>deg</em>, also z.B. <em>90deg</em> für 90°) notwendig. Der erste Wert steht für die Scherung zur x-Achse, der zweite Wert für die Scherung zur y-Achse. Wird nur der erste Wert angegeben, wird für die y-Achse 0° (= keine Änderung) angenommen. Alternativ gibt es <em>skewX(&lt;angle&gt;)</em> bzw. <em>skewY(&lt;angle&gt;)</em>, um gezielt eine Achse anzusprechen. [<a href="#b6">Beispiel</a>]</p>
<blockquote class="info"><p>
Solange sich die Eigenschaft noch in Entwicklung befindet, verwenden Webkit- und Mozilla-Browser ein Präfix. Möchte man sie bereits verwenden, muss sie daher mehrfach mit gleichen Parametern definiert werden: transform[-origin] (Opera), -moz-transform[-origin] (Mozilla) und -webkit-transform[-origin] (Webkit).
</p></blockquote>
<h4><a name="beispiele">Beispiele</a></h4>
<p>Die folgenden Beispiele werden an einem 50% transparenten, gelben <em>DIV</em>-Element mit rotem Rahmen gezeigt. Im Zentrum des <em>DIV</em>-Elements steht zudem der einfache Text <em>CSS3</em>. Zum besseren Verständnis befindet sich im Hintergrund ein Koordinatensystem, dass zusätzlich durch einen schwarzen Rahmen die Ursprungsform des <em>DIV</em>-Elements zeigt. So sieht das ganze ohne Transformationen aus (der schwarze Ursprungsrahmen ist hier natürlich nicht zu sehen):</p>
<table class="demobox" style="width:403px;">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td style="padding:0;height:402px;background:url(http://www.braekling.de/wp-content/uploads/coords.gif) no-repeat">
<div style="position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">CSS3</div>
</td>
</tr>
</table>
<p>Für eigene Experimente eignet sich der <a href="/testlab/css3tools/css-transform-matrizenrechner.html" title="CSS3 transform: Matrizenrechner">CSS3 transform Matrizenrechner</a>.</p>
<p><a name="b1"><strong>1. Translation</strong></a></p>
<p>Bei der Translation handelt es sich um die einfachste Form der Transformation. Das Objekt wird einfach innerhalb des Koordinatensystems verschoben. Eine Translation kann folgendermaßen definiert werden:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">/* Variante 1: Matrix */</span><br />
transform<span style="color: #00AA00;">:</span>matrix<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #933;">50px</span><span style="color: #00AA00;">,</span> <span style="color: #933;">50px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 2: Translate */</span><br />
transform<span style="color: #00AA00;">:</span>translate<span style="color: #00AA00;">&#40;</span><span style="color: #933;">50px</span><span style="color: #00AA00;">,</span> <span style="color: #933;">50px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 3: TranslateX und TranslateY */</span><br />
transform<span style="color: #00AA00;">:</span>translateX<span style="color: #00AA00;">&#40;</span><span style="color: #933;">50px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* entspricht translate(50px); */</span><br />
transform<span style="color: #00AA00;">:</span>translateY<span style="color: #00AA00;">&#40;</span><span style="color: #933;">50px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox" style="width:403px;">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td style="padding:0;height:402px;background:url(http://www.braekling.de/wp-content/uploads/coords.gif) no-repeat">
<div style="transform:translate(50px,50px);-webkit-transform:translate(50px,50px);-moz-transform:translate(50px,50px);position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">CSS3</div>
</td>
</tr>
</table>
<p><a name="b2"><strong>2. Rotation</strong></a></p>
<p>Bei einer Rotation wird das Objekt einem Winkel entsprechend um den Ursprung gedreht. Per Default liegt der Ursprung in der Mitte des Objektes:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">/* Variante 1: Matrix <br />
&nbsp; &nbsp;matrix(cos(45°), sin(45°), -sin(45°), cos(45°), 0, 0) */</span><br />
transform<span style="color: #00AA00;">:</span>matrix<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0.7</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0.7</span><span style="color: #00AA00;">,</span> -<span style="color: #cc66cc;">0.7</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0.7</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 2: Rotate */</span><br />
transform<span style="color: #00AA00;">:</span>rotate<span style="color: #00AA00;">&#40;</span>45deg<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox" style="width:403px;">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td style="padding:0;height:402px;background:url(http://www.braekling.de/wp-content/uploads/coords.gif) no-repeat">
<div style="transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">CSS3</div>
</td>
</tr>
</table>
<p><a name="b3"><strong>3. Ursprung</strong></a></p>
<p>Am Beispiel der Rotation kann die Eigenschaft <em>transform-origin</em> schön demonstriert werden. Eigentlich gilt der Mittelpunkt des Objektes als Ursprung, aber mit <em>transform-origin</em> kann er beliebig verschoben werden. Das folgende Beispiel zeigt <em>rotate</em> mit den gleichen Parametern, wie sie in Beispiel 2 gesetzt waren, verschiebt aber den Ursprung von der Mitte in die linke, obere Ecke des Objektes:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">/* Variante 1: Prozent */</span><br />
transform-origin<span style="color: #00AA00;">:</span><span style="color: #933;">0%</span> <span style="color: #933;">0%</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 2: Längenangaben */</span><br />
transform-origin<span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 3: Konstanten */</span><br />
transform-origin<span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">top</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox" style="width:403px;">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td style="padding:0;height:402px;background:url(http://www.braekling.de/wp-content/uploads/coords.gif) no-repeat">
<div style="transform-origin:top left;-webkit-transform-origin:top left;-moz-transform-origin:top left;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">CSS3</div>
</td>
</tr>
</table>
<p><a name="b4"><strong>4. Scaling</strong></a></p>
<p>Scaling ermöglicht es uns, unser Objekt in die x- bzw. y-Richtung zu skalieren, also zu verkleinern oder zu vergößern. Im Beispiel wird die Höhe halbiert und die Breite verdoppelt:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">/* Variante 1: Matrix */</span><br />
transform<span style="color: #00AA00;">:</span>matrix<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 2: Scale */</span><br />
transform<span style="color: #00AA00;">:</span>scale<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 3: ScaleX und ScaleY */</span><br />
transform<span style="color: #00AA00;">:</span>scaleX<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* entspricht scale(2,1); */</span><br />
transform<span style="color: #00AA00;">:</span>scaleY<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox" style="width:403px;">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td style="padding:0;height:402px;background:url(http://www.braekling.de/wp-content/uploads/coords.gif) no-repeat">
<div style="transform:scale(2, 0.5);-webkit-transform:scale(2, 0.5);-moz-transform:scale(2, 0.5);position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">CSS3</div>
</td>
</tr>
</table>
<p><a name="b6"><strong>5. Skew</strong></a></p>
<p>Mit Skew können wir unser Objekt längs seiner x- bzw. y-Achse scheren. Im Beispiel wird um 45° längs der y-Achse verzerrt:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">/* Variante 1: Matrix<br />
matrix(1, tan(45°), tan(0°), 1, 0, 0)<br />
*/</span><br />
transform<span style="color: #00AA00;">:</span>matrix<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 2: Skew */</span><br />
transform<span style="color: #00AA00;">:</span>skew<span style="color: #00AA00;">&#40;</span>0deg<span style="color: #00AA00;">,</span> 45deg<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 3: SkewX und SkewY */</span><br />
<span style="color: #808080; font-style: italic;">/* transform:skewX(0deg); -- in diesem Fall unnötig,<br />
&nbsp; &nbsp;entspricht skew(0deg,0deg); */</span><br />
transform<span style="color: #00AA00;">:</span>skewY<span style="color: #00AA00;">&#40;</span>45deg<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox" style="width:403px;">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td style="padding:0;height:402px;background:url(http://www.braekling.de/wp-content/uploads/coords.gif) no-repeat">
<div style="transform:skew(0deg, 45deg);-webkit-transform:skew(0deg, 45deg);-moz-transform:skew(0deg, 45deg);position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">CSS3</div>
</td>
</tr>
</table>
<p><a name="b5"><strong>6. Kombinationen</strong></a></p>
<p>Natürlich können wir die einzelnen Funktionen auch kombinieren &#8211; entweder in einer Matrix, oder eben durch Hintereinanderausführen der Funktionen:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">/* Variante 1: Matrix */</span><br />
<span style="color: #6666ff;">.div1</span> <span style="color: #00AA00;">&#123;</span>transform<span style="color: #00AA00;">:</span>matrix<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> -<span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">,</span> <span style="color: #933;">25px</span><span style="color: #00AA00;">,</span> <span style="color: #933;">26px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.div2</span> <span style="color: #00AA00;">&#123;</span>transform<span style="color: #00AA00;">:</span>matrix<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">,</span> -<span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #933;">75px</span><span style="color: #00AA00;">,</span> <span style="color: #933;">-25px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.div3</span> <span style="color: #00AA00;">&#123;</span>transform<span style="color: #00AA00;">:</span>matrix<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #933;">-101px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#125;</span><br />
<span style="color: #808080; font-style: italic;">/* Variante 2: Einzelfunktionen */</span><br />
<span style="color: #6666ff;">.div1</span> <span style="color: #00AA00;">&#123;</span>transform<span style="color: #00AA00;">:</span>translate<span style="color: #00AA00;">&#40;</span><span style="color: #933;">25px</span><span style="color: #00AA00;">,</span><span style="color: #933;">26px</span><span style="color: #00AA00;">&#41;</span> skewX<span style="color: #00AA00;">&#40;</span>-45deg<span style="color: #00AA00;">&#41;</span> scaleY<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.div2</span> <span style="color: #00AA00;">&#123;</span>transform<span style="color: #00AA00;">:</span>translate<span style="color: #00AA00;">&#40;</span><span style="color: #933;">75px</span><span style="color: #00AA00;">,</span><span style="color: #933;">-25px</span><span style="color: #00AA00;">&#41;</span> skewY<span style="color: #00AA00;">&#40;</span>-45deg<span style="color: #00AA00;">&#41;</span> scaleX<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.div3</span> <span style="color: #00AA00;">&#123;</span>translateY<span style="color: #00AA00;">&#40;</span><span style="color: #933;">-101px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<table class="demobox" style="width:403px;">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td style="padding:0;height:402px;background:url(http://www.braekling.de/wp-content/uploads/coords.gif) no-repeat">
<div style="transform:translate(25px,26px) skewX(-45deg) scaleY(0.5);-webkit-transform:translate(25px,26px) skewX(-45deg) scaleY(0.5);-moz-transform:translate(25px,26px) skewX(-45deg) scaleY(0.5);position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">div1</div>
<div style="transform:translate(75px,-25px) skewY(-45deg) scaleX(0.5);-webkit-transform:translate(75px,-25px) skewY(-45deg) scaleX(0.5);-moz-transform:translate(75px,-25px) skewY(-45deg) scaleX(0.5);position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">div2</div>
<div style="transform:translateY(-101px);-webkit-transform:translateY(-101px);-moz-transform:translateY(-101px);position:relative;width:99px;height:99px;margin:auto auto;border:1px solid #f00;background:rgba(255,255,0,0.5);text-align:center;line-height:99px;">div3</div>
</td>
</tr>
</table>
<p><img src="http://vg03.met.vgwort.de/na/f7c02a1e633b46ef8fe56cdd19773989" width="1" height="1" alt=""></p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'Braekling';
var flattr_url = 'http://www.braekling.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Braekling.de';
var flattr_dsc = 'Technik &amp; Kommunikation';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script>
	<p class="hop"><strong>Weitere Artikel zum Thema:</strong></p>
	<ul class="st-related-posts">
	<li><a href="http://www.braekling.de/web-design/3311-css3-color-farben-mit-farbtabellen.html" title="CSS3: color (Farben) mit Farbtabellen (18. Juli 2010)">CSS3: color (Farben) mit Farbtabellen</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/3274-css3-box-shadow-schatten.html" title="CSS3: box-shadow (Schatten) (16. Juli 2010)">CSS3: box-shadow (Schatten)</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/3388-css3-border-radius-abgerundete-ecken.html" title="CSS3: border-radius (abgerundete Ecken) (21. Juli 2010)">CSS3: border-radius (abgerundete Ecken)</a> (1)</li>
	<li><a href="http://www.braekling.de/personal-interests/3264-mal-kurz-rundgeschaut%e2%80%a6-24.html" title="Mal kurz rundgeschaut… #24 (11. Juli 2010)">Mal kurz rundgeschaut… #24</a> (0)</li>
	<li><a href="http://www.braekling.de/personal-interests/3109-mal-kurz-rundgeschaut-23.html" title="Mal kurz rundgeschaut&#8230; #23 (27. Mai 2010)">Mal kurz rundgeschaut&#8230; #23</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.braekling.de/web-design/3443-css3-transform-lineare-transformationen.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3: border-radius (abgerundete Ecken)</title>
		<link>http://www.braekling.de/web-design/3388-css3-border-radius-abgerundete-ecken.html</link>
		<comments>http://www.braekling.de/web-design/3388-css3-border-radius-abgerundete-ecken.html#comments</comments>
		<pubDate>Wed, 21 Jul 2010 08:51:58 +0000</pubDate>
		<dc:creator>André Bräkling</dc:creator>
				<category><![CDATA[HTML und CSS]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[abgerundete ecken]]></category>
		<category><![CDATA[border]]></category>
		<category><![CDATA[border-radius]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[ecken]]></category>
		<category><![CDATA[referenz]]></category>

		<guid isPermaLink="false">http://www.braekling.de/?p=3388</guid>
		<description><![CDATA[Neben den neuen Schatteneffekten liefert CSS3 mit der Eigenschaft border-radius eine weitere Gestaltungsmöglichkeit, die zuvor nur mit Trickserei und Grafiken umzusetzen war. Endlich lassen sich so mit den Bordmitteln des Browsers abgerundete Ecken erzeugen, was z.B. in geschickter Kombination mit Schatten für anspruchsvolle, plastische Layouts verwendet werden kann. Auch border-radius wird mittlerweile von allen modernen [...]]]></description>
			<content:encoded><![CDATA[<p>Neben den neuen <a href="/web-design/3274-css3-box-shadow-schatten.html" title="CSS3: box-shadow (Schatten)">Schatteneffekten</a> liefert CSS3 mit der Eigenschaft <a href="http://www.w3.org/TR/css3-background/#the-border-radius" title="W3C: The 'border-radius' properties">border-radius</a> eine weitere Gestaltungsmöglichkeit, die zuvor nur mit Trickserei und Grafiken umzusetzen war. Endlich lassen sich so mit den Bordmitteln des Browsers abgerundete Ecken erzeugen, was z.B. in geschickter Kombination mit <a href="/web-design/3274-css3-box-shadow-schatten.html" title="CSS3: box-shadow (Schatten)">Schatten</a> für anspruchsvolle, plastische Layouts verwendet werden kann. Auch <em>border-radius</em> wird mittlerweile von allen modernen Browsern, abgesehen vom IE, unterstützt.<span id="more-3388"></span></p>
<h4>Definition</h4>
<p>Schauen wir uns zunächst wieder die Definition an:</p>
<p><em>&lt;border-radius&gt; =<br />
[&lt;length&gt;|&lt;percentage&gt;]{1,4}<br />
[/[&lt;length&gt;|&lt;percentage&gt;]{1,4}]?</em></p>
<p>Das bedeutet, dass die Eigenschaft 1-4 Parameter erhält und optional nochmal zusätzlich weitere 1-4 Parameter, die mit einem Schrägstrich (/) von den vorhergehenden Werten abgetrennt werden. Bei den einzelnen Werten handelt es sich entweder um Längenangaben oder um Prozentwerte, die in Relation zur gesamten Box stehen.</p>
<p>Alternativ können die einzelnen Ecken auch gezielt angesteuert werden, was etwas umständlicher, aber dafür leichter zu überblicken ist:</p>
<p><em>&lt;border-[top-right|bottom-right|bottom-left|top-left]-radius&gt; =<br />
[&lt;length&gt;|&lt;percentage&gt;] [&lt;length&gt;|&lt;percentage&gt;]?</em></p>
<p>Hier bekommen also die Eigenschaften <em>border-top-right-radius</em>, <em>border-bottom-right-radius</em>, <em>border-bottom-left-radius</em>, <em>border-top-left-radius</em> einen Parameter (Länge oder Prozent) und optional einen weiteren Wert, der durch ein Leerzeichen abgetrennt wird.</p>
<p><em>border-radius</em> ist natürlich immer vom bestehenden <em>border</em> abhängig. Ohne Rahmen gibt es auch keine runden Ecken <img src='http://www.braekling.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h4>Parameter</h4>
<p><img src="http://www.braekling.de/wp-content/uploads/border-radius-skizze.gif" alt="border-radius: Skizze" title="border-radius: Skizze" width="150" height="150" class="alignleft size-full wp-image-3402" />Schauen wir uns nun an, wozu diese ganzen Parameter gut sein sollen. Sprechen wir eine Ecke direkt an, dann steht der erste Wert für den horizontalen (h) und der optionale zweite Wert für den vertikalen (v) Radius einer Ellipse (siehe Grafik links), die die Form der abgerundeten Ecke beschreibt. Ist kein zweiter Wert angegeben, dann entspricht der erste Wert dem Radius (h = v) des Kreises, der die Form beschreibt.</p>
<p>Etwas komplizierter wird es, wenn wir <em>border-radius</em> verwenden. Vor dem Schrägstrich (/) stehen die horizontalen Werte, dahinter die vertikalen Werte, dementsprechend reden wir wieder von einem Kreis (h=v), wenn der optionale Part (/ + Werte) weggelassen wird. Auf welche Ecken sich die Werte beziehen, hängt nun von deren Anzahl ab. Hier die Übersicht:</p>
<ul>
<li><strong>1 Wert:</strong> gilt für alle Ecken</li>
<li><strong>2 Werte:</strong> (top-left &#038; bottom-right) (top-right &#038; bottom-left)</li>
<li><strong>3 Werte:</strong> top-left (top-right &#038; bottom-left) bottom-right</li>
<li><strong>4 Werte:</strong> top-left top-right bottom-right bottom-left</li>
</ul>
<p>Es ist durchaus möglich, für den horizontalen und den vertikalen Radius jeweils eine andere Anzahl Werte zu setzen, also z.B. ein Einheitswert horizontal und vier Einzelwerte vertikal. <em>0</em> steht immer für <em>keine Rundung</em>.</p>
<blockquote class="info"><p>
Solange sich die Eigenschaft noch in Entwicklung befindet, verwenden Webkit- und Mozilla-Browser ein Präfix. Möchte man sie bereits verwenden, muss sie daher mehrfach mit gleichen Parametern definiert werden: border-radius (Opera), -moz-border-radius (Mozilla) und -webkit-border-radius (Webkit).
</p></blockquote>
<h4>Beispiele</h4>
<p>Die folgenden Beispiele sollten das Prinzip verdeutlichen. Sofern Dein Browser bereits <em>border-radius</em> unterstützt, kannst Du den Effekt in der jeweiligen Box Live-Demo ansehen. Ansonsten sollten normale Boxen erscheinen.</p>
<p><strong>1. Gleichmäßige Rundung</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Radius: */</span><br />
border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Entspricht: */</span><br />
border-top-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span><br />
border-top-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span><br />
border-bottom-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span><br />
border-bottom-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="border:1px solid black; border-radius:5px; -webkit-border-radius:5px; -moz-border-radius:5px;">Runde Ecken</div>
</td>
</tr>
</table>
<p><strong>2. Elliptische Rundungen</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Radius: */</span><br />
border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> / <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Entspricht: */</span><br />
border-top-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
border-top-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
border-bottom-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
border-bottom-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="border:1px solid black; border-radius:5px / 10px; -webkit-border-radius:5px / 10px; -moz-border-radius:5px / 10px;">Runde Ecken</div>
</td>
</tr>
</table>
<p><strong>3. Variierende Ecken</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Radius: */</span><br />
border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span> <span style="color: #933;">20px</span> <span style="color: #933;">30px</span> / <span style="color: #933;">10px</span> <span style="color: #933;">20px</span> <span style="color: #933;">30px</span> <span style="color: #933;">40px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Entspricht: */</span><br />
border-top-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
border-top-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span><br />
border-bottom-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span> <span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
border-bottom-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">30px</span> <span style="color: #933;">40px</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="height:50px;border:1px solid black; border-radius:5px 10px 20px 30px / 10px 20px 30px 40px; -webkit-border-radius:5px 10px 20px 30px / 10px 20px 30px 40px; -moz-border-radius:5px 10px 20px 30px / 10px 20px 30px 40px;">Runde Ecken</div>
</td>
</tr>
</table>
<p><strong>6. Prozentangaben</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Radius: */</span><br />
border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">50%</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Entspricht: */</span><br />
border-top-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">50%</span><span style="color: #00AA00;">;</span><br />
border-top-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">50%</span><span style="color: #00AA00;">;</span><br />
border-bottom-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">50%</span><span style="color: #00AA00;">;</span><br />
border-bottom-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">50%</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="border:1px solid black; border-radius:50%; -webkit-border-radius:50%; -moz-border-radius:50%;">Runde Ecken</div>
</td>
</tr>
</table>
<p><strong>5. Variierende Rahmendicke</strong></p>
<p>Interessant ist zu sehen, wenn sauber die &#8220;runden Ecken&#8221; gerendert werden, wenn die Rahmendicke variiert. Das <em>padding</em> dient in dem Beispiel dazu, dass der Inhalt nicht in den Rahmen läuft.</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">border-style</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">solid</span><span style="color: #00AA00;">;</span><br />
<span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
<span style="color: #000000; font-weight: bold;">border-width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">40px</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Radius: */</span><br />
border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">80px</span> / <span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Entspricht: */</span><br />
border-top-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">80px</span> <span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><br />
border-top-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">80px</span> <span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><br />
border-bottom-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">80px</span> <span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><br />
border-bottom-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">80px</span> <span style="color: #933;">60px</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="border-style:solid; border-color: black; border-width:40px 20px; height:80px; padding:10px; border-radius:80px / 60px; -webkit-border-radius:80px / 60px; -moz-border-radius:80px / 60px;">Runde Ecken</div>
</td>
</tr>
</table>
<p><strong>6. Rahmen dicker als Radius</strong></p>
<p>Ist der Rahmen dicker als der Radius, dann bleibt die Ecke auf der Innenseite eckig:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">40px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Radius: */</span><br />
border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #808080; font-style: italic;">/* Entspricht: */</span><br />
border-top-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
border-top-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
border-bottom-right-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
border-bottom-left-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">30px</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="border:40px solid black; border-radius:30px; -webkit-border-radius:30px; -moz-border-radius:30px;">Runde Ecken</div>
</td>
</tr>
</table>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'Braekling';
var flattr_url = 'http://www.braekling.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Braekling.de';
var flattr_dsc = 'Technik &amp; Kommunikation';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script>
	<p class="hop"><strong>Weitere Artikel zum Thema:</strong></p>
	<ul class="st-related-posts">
	<li><a href="http://www.braekling.de/personal-interests/2978-mal-kurz-rundgeschaut-17.html" title="Mal kurz rundgeschaut&#8230; #17 (15. März 2010)">Mal kurz rundgeschaut&#8230; #17</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/3443-css3-transform-lineare-transformationen.html" title="CSS3: transform (Lineare Transformationen) (28. Juli 2010)">CSS3: transform (Lineare Transformationen)</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/3311-css3-color-farben-mit-farbtabellen.html" title="CSS3: color (Farben) mit Farbtabellen (18. Juli 2010)">CSS3: color (Farben) mit Farbtabellen</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/3274-css3-box-shadow-schatten.html" title="CSS3: box-shadow (Schatten) (16. Juli 2010)">CSS3: box-shadow (Schatten)</a> (0)</li>
	<li><a href="http://www.braekling.de/personal-interests/3264-mal-kurz-rundgeschaut%e2%80%a6-24.html" title="Mal kurz rundgeschaut… #24 (11. Juli 2010)">Mal kurz rundgeschaut… #24</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.braekling.de/web-design/3388-css3-border-radius-abgerundete-ecken.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS3: color (Farben) mit Farbtabellen</title>
		<link>http://www.braekling.de/web-design/3311-css3-color-farben-mit-farbtabellen.html</link>
		<comments>http://www.braekling.de/web-design/3311-css3-color-farben-mit-farbtabellen.html#comments</comments>
		<pubDate>Sun, 18 Jul 2010 13:22:35 +0000</pubDate>
		<dc:creator>André Bräkling</dc:creator>
				<category><![CDATA[HTML und CSS]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[alphakanal]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[dunkelstufe]]></category>
		<category><![CDATA[farben]]></category>
		<category><![CDATA[farbton]]></category>
		<category><![CDATA[hex]]></category>
		<category><![CDATA[hsl]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[html4]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[hue]]></category>
		<category><![CDATA[luminance]]></category>
		<category><![CDATA[referenz]]></category>
		<category><![CDATA[rgb]]></category>
		<category><![CDATA[saturation]]></category>
		<category><![CDATA[sättigung]]></category>
		<category><![CDATA[svg]]></category>
		<category><![CDATA[x11]]></category>

		<guid isPermaLink="false">http://www.braekling.de/?p=3311</guid>
		<description><![CDATA[Mit CSS3 bekommen Webdesigner neue Möglichkeiten, um Farben zu definieren. Dadurch gibt es natürlich nicht schlagartig mehr Farben, aber sie können je nach Einsatzgebiet einfacher verwendet werden. Hinzu kommt Alphatransparenz, die ansprechende Transparenzeffekte ohne den Einsatz von Grafiken ermöglicht. Dieser Beitrag erklärt die neuen Farbnotationen und liefert einige Beispiele und Farbtabellen. Bisher wurden Farben entweder [...]]]></description>
			<content:encoded><![CDATA[<p>Mit CSS3 bekommen Webdesigner neue Möglichkeiten, um <a href="http://www.w3.org/TR/css3-color/" title="W3C: CSS Color Module Level 3">Farben zu definieren</a>. Dadurch gibt es natürlich nicht schlagartig mehr Farben, aber sie können je nach Einsatzgebiet einfacher verwendet werden. Hinzu kommt Alphatransparenz, die ansprechende Transparenzeffekte ohne den Einsatz von Grafiken ermöglicht. Dieser Beitrag erklärt die neuen Farbnotationen und liefert einige Beispiele und Farbtabellen.<span id="more-3311"></span></p>
<p>Bisher wurden Farben entweder über die <a href="#html4">HTML4-Keywords</a>, die <a href="#x11">SVG- bzw. X11-Keywords</a> oder als hexadezimale RGB-Angaben definiert. Während die möglichen Farben via Keyword natürlich recht begrenzt sind, ist die hexadezimale RGB-Angabe (z.B. <em>#FF0000</em> oder <em>#F00</em> als Kurzfrom für rot) kaum intuitiv. Zunächst muss das richtige Mischverhältnis von rot, grün und blau gefunden werden, danach müssen die Werte noch <a href="/personal-interests/24-umrechnung-von-zahlensystemen.html" title="Umrechnen von Zahlensystemen">in hexadezimale Werte umgerechnet</a> werden. Dank CSS3 wird dies aber alles einfacher. Die hier vorgestellten Methoden zur Farbdefinition werden, abgesehen von Einschränkungen beim IE, bereits von allen modernen Browsern unterstützt.</p>
<h4>RGB: Angabe in Dezimalzahlen und Prozent</h4>
<p>Wie bereits erwähnt, mussten Farben bisher in hexadezimalen Werten angegeben werden. Mit der <em>rgb</em>-Funktion können Farben nun aber auch über eine Ganzzahl von 0-255 oder eine Prozentangabe von 0-100 definiert werden. Somit hätten wir nun folgende Möglichkeiten, die Farbe gelb darzustellen:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#FFFF00</span><span style="color: #00AA00;">;</span> // klassische<span style="color: #00AA00;">,</span> hexadezimale Angabe <span style="color: #cc00cc;">#RRGGBB</span><br />
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#FF0</span><span style="color: #00AA00;">;</span> // klassiche<span style="color: #00AA00;">,</span> hexadezimale Angabe <span style="color: #cc00cc;">#RGB</span><br />
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #993333;">yellow</span><span style="color: #00AA00;">;</span> // klassiche Auswahl per Keyword<br />
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #993333;">rgb</span><span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">255</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> // Neue Angabe via <span style="color: #993333;">rgb</span><span style="color: #00AA00;">&#40;</span><span style="color: #00AA00;">&#41;</span> und Dezimalzahlen<br />
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #993333;">rgb</span><span style="color: #00AA00;">&#40;</span><span style="color: #933;">100%</span><span style="color: #00AA00;">,</span><span style="color: #933;">100%</span><span style="color: #00AA00;">,</span><span style="color: #933;">0%</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> // Neue Angabe via <span style="color: #993333;">rgb</span><span style="color: #00AA00;">&#40;</span><span style="color: #00AA00;">&#41;</span> und Prozentwerten</div></td></tr></tbody></table></div>
<p>Das Ergebnis ist jeweils gleich (hier im Beispiel mit <em>background-color</em>):</p>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background-color:#FFFF00;color:#000;border:1px solid #000;margin-bottom:5px">#FFFF00</div>
<div style="background-color:#FF0;color:#000;border:1px solid #000;margin-bottom:5px">#FF0</div>
<div style="background-color:yellow;color:#000;border:1px solid #000;margin-bottom:5px">yellow</div>
<div style="background-color:rgb(255,255,0);color:#000;border:1px solid #000;margin-bottom:5px">rgb(255,255,0)</div>
<div style="background-color:rgb(100%,100%,0%);color:#000;border:1px solid #000;margin-bottom:5px">rgb(100%,100%,0%)</div>
</td>
</tr>
</table>
<h4>HSL: Hue (Farbton), Saturation (Sättigung), Luminance (Helligkeit)</h4>
<p>Deutlich intuitiver als die Angabe von Farben im RGB-Format ist die HSL-Variante. Dabei wird die Farbe über die drei Werte Farbton, Sättigung und Helligkeit definiert. Unter Farbton versteht man die Auswahl der Farbe aus einem Farbkreis durch die Angabe eines Wertes in Grad (°) von 0-359. Die folgende Skala zeigt die Verteilung der Farbtöne:</p>
<p><img src="http://www.braekling.de/wp-content/uploads/hue_scale.png" alt="Hue-Scale - Farbton-Skala" title="Hue-Scale - Farbton-Skala" width="600" height="130" class="size-full wp-image-3352" /><br />
<small>Bildquelle: <a href="http://de.wikipedia.org/w/index.php?title=Datei:HueScale.svg&#038;filetimestamp=20070128094006">Wikipedia</a>; gemeinfrei.</small></p>
<p>Wie es sich für einen Kreis &#8220;gehört&#8221; entspricht also der Wert 360 dem Wert 0 (=rot). Gelb liegt bei 60°, grün bei 120° und blau bei 240°. Somit kann recht leicht ein Farbton ausgewählt werden, die Angabe erfolgt ohne Einheit. Nun kann die Farbe mit den Angaben für Sättigung und Helligkeit weiter variiert werden. Beide Werte werden in Prozent von 0-100 angegeben. Eine Sättigung von 100% zeigt die gewünschte Farbe wie im Farbkreis gezeigt. Wird sie hingegen auf 0% gesenkt, dann erhält man nur noch grau. Die Helligkeit entspricht mit 50% der normalen Helligkeit der Farbe, 0% führt zu schwarz, 100% zu weiß. Mit folgender Demo kann der Effekt der einzelnen Werte ausprobiert werden:</p>
<p><script type="text/javascript">
function change_hsl() {
h = parseInt(document.getElementById('selector_hue').value);
s = parseInt(document.getElementById('selector_sat').value);
l = parseInt(document.getElementById('selector_lim').value);
result = document.getElementById('result_hsl');
result.innerHTML = 'hsl('+h+','+s+'%,'+l+'%)';
result.style.backgroundColor = 'hsl('+h+','+s+'%,'+l+'%)';
}
</script></p>
<table class="demobox">
<tr>
<th colspan="2">Live-Demo</th>
</tr>
<tr>
<td class="small">H:</td>
<td class="small">
<input onkeyup="javascript:change_hsl();" type="text" maxlength="3" value="0" id="selector_hue" style="width:30px;" /> (0-360°)</td>
</tr>
<tr>
<td class="small">S:</td>
<td class="small">
<input onkeyup="javascript:change_hsl();" type="text" maxlength="3" value="100" id="selector_sat" style="width:30px;" />% (0-100%)</td>
</tr>
<tr>
<td class="small">L:</td>
<td class="small">
<input onkeyup="javascript:change_hsl();" type="text" maxlength="3" value="50" id="selector_lim" style="width:30px;" />% (0-100%)</td>
</tr>
<tr>
<td colspan="2">
<div id="result_hsl" style="background:hsl(0,100%,50%);border:1px solid black;">hsl(0,100%,50%)</div>
</td>
</tr>
</table>
<p><strong>Beispiele</strong><br />
Hier als Beispiele einmal die Farben des Farbkreises in 30°-Schritten (100% Sätting, 50% Helligkeit):</p>
<div style="background:hsl(0,100%,50%);">#FF0000 hsl(0,100%,50%) red</div>
<div style="background:hsl(30,100%,50%);">#FF7F00 hsl(28,100%,50%)</div>
<div style="background:hsl(60,100%,50%);">#FFFF00 hsl(60,100%,50%) yellow</div>
<div style="background:hsl(90,100%,50%);">#7FFF00 hsl(90,100%,50%) chartreuse</div>
<div style="background:hsl(120,100%,50%);">#00FF00 hsl(120,100%,50%) lime</div>
<div style="background:hsl(150,100%,50%);">#00FF7F hsl(150,100%,50%) springgreen</div>
<div style="background:hsl(180,100%,50%);">#00FFFE hsl(180,100%,50%)</div>
<div style="background:hsl(210,100%,50%);">#007FFF hsl(210,100%,50%)</div>
<div style="background:hsl(240,100%,50%);">#0000FF hsl(240,100%,50%) blue</div>
<div style="background:hsl(270,100%,50%);">#7F00FF hsl(270,100%,50%)</div>
<div style="background:hsl(300,100%,50%);">#FE00FF hsl(300,100%,50%)</div>
<div style="background:hsl(330,100%,50%);">#FF007F hsl(330,100%,50%)</div>
<div style="background:hsl(360,100%,50%);">#FF0000 red hsl(360,100%,50%)</div>
<h4>Alphatransparenz</h4>
<p>Ein ganz besonderes Schmankerl der neuen Farbfunktionen ist die direkte Unterstützung von Alphatransparenz, die bisher nur mit Grafiken zu realisieren waren. Um eine transparente Farbe zu definieren, ersetzen wir <em>rgb()</em> durch <em>rgba()</em> bzw. <em>hsl()</em> durch <em>hsla()</em> und ergänzen einen vierten Parameter in Form des Alphawertes zwischen 0 und 1. Wird 1 angegeben, dann ist die Farbe &#8220;massiv&#8221;, also gar nicht transparent, bei einer 0 wird die Farbe vollständig transparent, also unsichtbar. Rot mit 50% transparenz würde also so aussehen:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span>rgba<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> // Alphatransparenz mit RGB und Dezimalzahlen<br />
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span>rgba<span style="color: #00AA00;">&#40;</span><span style="color: #933;">100%</span><span style="color: #00AA00;">,</span><span style="color: #933;">0%</span><span style="color: #00AA00;">,</span><span style="color: #933;">0%</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> // Alphatransparenz mit RGB und Prozentwerten<br />
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span>hsla<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span><span style="color: #933;">100%</span><span style="color: #00AA00;">,</span><span style="color: #933;">50%</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> // Alphatransparenz mit HSL</div></td></tr></tbody></table></div>
<p>Im folgenden Beispiel lege ich <em>DIV</em>s mit obigen Angaben als <em>background-color</em> über das gezeigte Bild der Farbskala:</p>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td style="background-image:url(http://www.braekling.de/wp-content/uploads/hue_scale.png)">
<div style="background-color:rgba(255,0,0,0.5);margin-bottom:5px">rgba(255,0,0,0.5)</div>
<div style="background-color:rgba(100%,0%,0%,0.5);margin-bottom:5px">rgba(100%,0%,0%,0.5)</div>
<div style="background-color:hsla(0,100%,50%,0.5);margin-bottom:5px">hsla(0,100%,50%,0.5)</div>
</td>
</tr>
</table>
<h4><a name="html4">HTML4-Farben</a></h4>
<p>Hier eine Liste der in HTML4 vordefinierten Farben:</p>
<div style="background-color:aqua">#00FFFF aqua</div>
<div style="background-color:black;color:#fff;">#000000 black</div>
<div style="background-color:blue;">#0000FF blue</div>
<div style="background-color:fuchsia">#FF00FF fuchsia</div>
<div style="background-color:gray">#808080 gray</div>
<div style="background-color:green">#008000 green</div>
<div style="background-color:lime">#00FF00 lime</div>
<div style="background-color:maroon">#800000 maroon</div>
<div style="background-color:navy">#000080 navy</div>
<div style="background-color:olive">#808000 olive</div>
<div style="background-color:purple">#800080 purple</div>
<div style="background-color:red">#FF0000 red</div>
<div style="background-color:silver">#C0C0C0 silver</div>
<div style="background-color:teal">#008080 teal</div>
<div style="background-color:white">#FFFFFF white</div>
<div style="background-color:yellow">#FFFF00 yellow</div>
<h4><a name="x11">X11-Farben (SVG)</a></h4>
<p>Abschließend die definierten X11-Farben:</p>
<div style='background-color:aliceblue'>#F0F8FF aliceblue</div>
<div style='background-color:antiquewhite'>#FAEBD7 antiquewhite</div>
<div style='background-color:aqua'>#00FFFF aqua</div>
<div style='background-color:aquamarine'>#7FFFD4 aquamarine</div>
<div style='background-color:azure'>#F0FFFF azure</div>
<div style='background-color:beige'>#F5F5DC beige</div>
<div style='background-color:bisque'>#FFE4C4 bisque</div>
<div style='background-color:black;color:#fff'>#000000 black</div>
<div style='background-color:blanchedalmond'>#FFEBCD blanchedalmond</div>
<div style='background-color:blue'>#0000FF blue</div>
<div style='background-color:blueviolet'>#8A2BE2 blueviolet</div>
<div style='background-color:brown'>#A52A2A brown</div>
<div style='background-color:burlywood'>#DEB887 burlywood</div>
<div style='background-color:cadetblue'>#5F9EA0 cadetblue</div>
<div style='background-color:chartreuse'>#7FFF00 chartreuse</div>
<div style='background-color:chocolate'>#D2691E chocolate</div>
<div style='background-color:coral'>#FF7F50 coral</div>
<div style='background-color:cornflowerblue'>#6495ED cornflowerblue</div>
<div style='background-color:cornsilk'>#FFF8DC cornsilk</div>
<div style='background-color:crimson'>#DC143C crimson</div>
<div style='background-color:cyan'>#00FFFF cyan</div>
<div style='background-color:darkblue'>#00008B darkblue</div>
<div style='background-color:darkcyan'>#008B8B darkcyan</div>
<div style='background-color:darkgoldenrod'>#B8860B darkgoldenrod</div>
<div style='background-color:darkgray'>#A9A9A9 darkgray</div>
<div style='background-color:darkgreen'>#006400 darkgreen</div>
<div style='background-color:darkgrey'>#A9A9A9 darkgrey</div>
<div style='background-color:darkkhaki'>#BDB76B darkkhaki</div>
<div style='background-color:darkmagenta'>#8B008B darkmagenta</div>
<div style='background-color:darkolivegreen'>#556B2F darkolivegreen</div>
<div style='background-color:darkorange'>#FF8C00 darkorange</div>
<div style='background-color:darkorchid'>#9932CC darkorchid</div>
<div style='background-color:darkred'>#8B0000 darkred</div>
<div style='background-color:darksalmon'>#E9967A darksalmon</div>
<div style='background-color:darkseagreen'>#8FBC8F darkseagreen</div>
<div style='background-color:darkslateblue'>#483D8B darkslateblue</div>
<div style='background-color:darkslategray'>#2F4F4F darkslategray</div>
<div style='background-color:darkslategrey'>#2F4F4F darkslategrey</div>
<div style='background-color:darkturquoise'>#00CED1 darkturquoise</div>
<div style='background-color:darkviolet'>#9400D3 darkviolet</div>
<div style='background-color:deeppink'>#FF1493 deeppink</div>
<div style='background-color:deepskyblue'>#00BFFF deepskyblue</div>
<div style='background-color:dimgray'>#696969 dimgray</div>
<div style='background-color:dimgrey'>#696969 dimgrey</div>
<div style='background-color:dodgerblue'>#1E90FF dodgerblue</div>
<div style='background-color:firebrick'>#B22222 firebrick</div>
<div style='background-color:floralwhite'>#FFFAF0 floralwhite</div>
<div style='background-color:forestgreen'>#228B22 forestgreen</div>
<div style='background-color:fuchsia'>#FF00FF fuchsia</div>
<div style='background-color:gainsboro'>#DCDCDC gainsboro</div>
<div style='background-color:ghostwhite'>#F8F8FF ghostwhite</div>
<div style='background-color:gold'>#FFD700 gold</div>
<div style='background-color:goldenrod'>#DAA520 goldenrod</div>
<div style='background-color:gray'>#808080 gray</div>
<div style='background-color:green'>#008000 green</div>
<div style='background-color:greenyellow'>#ADFF2F greenyellow</div>
<div style='background-color:grey'>#808080 grey</div>
<div style='background-color:honeydew'>#F0FFF0 honeydew</div>
<div style='background-color:hotpink'>#FF69B4 hotpink</div>
<div style='background-color:indianred'>#CD5C5C indianred</div>
<div style='background-color:indigo'>#4B0082 indigo</div>
<div style='background-color:ivory'>#FFFFF0 ivory</div>
<div style='background-color:khaki'>#F0E68C khaki</div>
<div style='background-color:lavender'>#E6E6FA lavender</div>
<div style='background-color:lavenderblush'>#FFF0F5 lavenderblush</div>
<div style='background-color:lawngreen'>#7CFC00 lawngreen</div>
<div style='background-color:lemonchiffon'>#FFFACD lemonchiffon</div>
<div style='background-color:lightblue'>#ADD8E6 lightblue</div>
<div style='background-color:lightcoral'>#F08080 lightcoral</div>
<div style='background-color:lightcyan'>#E0FFFF lightcyan</div>
<div style='background-color:lightgoldenrodyellow'>#FAFAD2 lightgoldenrodyellow</div>
<div style='background-color:lightgray'>#D3D3D3 lightgray</div>
<div style='background-color:lightgreen'>#90EE90 lightgreen</div>
<div style='background-color:lightgrey'>#D3D3D3 lightgrey</div>
<div style='background-color:lightpink'>#FFB6C1 lightpink</div>
<div style='background-color:lightsalmon'>#FFA07A lightsalmon</div>
<div style='background-color:lightseagreen'>#20B2AA lightseagreen</div>
<div style='background-color:lightskyblue'>#87CEFA lightskyblue</div>
<div style='background-color:lightslategray'>#778899 lightslategray</div>
<div style='background-color:lightslategrey'>#778899 lightslategrey</div>
<div style='background-color:lightsteelblue'>#B0C4DE lightsteelblue</div>
<div style='background-color:lightyellow'>#FFFFE0 lightyellow</div>
<div style='background-color:lime'>#00FF00 lime</div>
<div style='background-color:limegreen'>#32CD32 limegreen</div>
<div style='background-color:linen'>#FAF0E6 linen</div>
<div style='background-color:magenta'>#FF00FF magenta</div>
<div style='background-color:maroon'>#800000 maroon</div>
<div style='background-color:mediumaquamarine'>#66CDAA mediumaquamarine</div>
<div style='background-color:mediumblue'>#0000CD mediumblue</div>
<div style='background-color:mediumorchid'>#BA55D3 mediumorchid</div>
<div style='background-color:mediumpurple'>#9370DB mediumpurple</div>
<div style='background-color:mediumseagreen'>#3CB371 mediumseagreen</div>
<div style='background-color:mediumslateblue'>#7B68EE mediumslateblue</div>
<div style='background-color:mediumspringgreen'>#00FA9A mediumspringgreen</div>
<div style='background-color:mediumturquoise'>#48D1CC mediumturquoise</div>
<div style='background-color:mediumvioletred'>#C71585 mediumvioletred</div>
<div style='background-color:midnightblue'>#191970 midnightblue</div>
<div style='background-color:mintcream'>#F5FFFA mintcream</div>
<div style='background-color:mistyrose'>#FFE4E1 mistyrose</div>
<div style='background-color:moccasin'>#FFE4B5 moccasin</div>
<div style='background-color:navajowhite'>#FFDEAD navajowhite</div>
<div style='background-color:navy'>#000080 navy</div>
<div style='background-color:oldlace'>#FDF5E6 oldlace</div>
<div style='background-color:olive'>#808000 olive</div>
<div style='background-color:olivedrab'>#6B8E23 olivedrab</div>
<div style='background-color:orange'>#FFA500 orange</div>
<div style='background-color:orangered'>#FF4500 orangered</div>
<div style='background-color:orchid'>#DA70D6 orchid</div>
<div style='background-color:palegoldenrod'>#EEE8AA palegoldenrod</div>
<div style='background-color:palegreen'>#98FB98 palegreen</div>
<div style='background-color:paleturquoise'>#AFEEEE paleturquoise</div>
<div style='background-color:palevioletred'>#DB7093 palevioletred</div>
<div style='background-color:papayawhip'>#FFEFD5 papayawhip</div>
<div style='background-color:peachpuff'>#FFDAB9 peachpuff</div>
<div style='background-color:peru'>#CD853F peru</div>
<div style='background-color:pink'>#FFC0CB pink</div>
<div style='background-color:plum'>#DDA0DD plum</div>
<div style='background-color:powderblue'>#B0E0E6 powderblue</div>
<div style='background-color:purple'>#800080 purple</div>
<div style='background-color:red'>#FF0000 red</div>
<div style='background-color:rosybrown'>#BC8F8F rosybrown</div>
<div style='background-color:royalblue'>#4169E1 royalblue</div>
<div style='background-color:saddlebrown'>#8B4513 saddlebrown</div>
<div style='background-color:salmon'>#FA8072 salmon</div>
<div style='background-color:sandybrown'>#F4A460 sandybrown</div>
<div style='background-color:seagreen'>#2E8B57 seagreen</div>
<div style='background-color:seashell'>#FFF5EE seashell</div>
<div style='background-color:sienna'>#A0522D sienna</div>
<div style='background-color:silver'>#C0C0C0 silver</div>
<div style='background-color:skyblue'>#87CEEB skyblue</div>
<div style='background-color:slateblue'>#6A5ACD slateblue</div>
<div style='background-color:slategray'>#708090 slategray</div>
<div style='background-color:slategrey'>#708090 slategrey</div>
<div style='background-color:snow'>#FFFAFA snow</div>
<div style='background-color:springgreen'>#00FF7F springgreen</div>
<div style='background-color:steelblue'>#4682B4 steelblue</div>
<div style='background-color:tan'>#D2B48C tan</div>
<div style='background-color:teal'>#008080 teal</div>
<div style='background-color:thistle'>#D8BFD8 thistle</div>
<div style='background-color:tomato'>#FF6347 tomato</div>
<div style='background-color:turquoise'>#40E0D0 turquoise</div>
<div style='background-color:violet'>#EE82EE violet</div>
<div style='background-color:wheat'>#F5DEB3 wheat</div>
<div style='background-color:white'>#FFFFFF white</div>
<div style='background-color:whitesmoke'>#F5F5F5 whitesmoke</div>
<div style='background-color:yellow'>#FFFF00 yellow</div>
<div style='background-color:yellowgreen'>#9ACD32 yellowgreen</div>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'Braekling';
var flattr_url = 'http://www.braekling.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Braekling.de';
var flattr_dsc = 'Technik &amp; Kommunikation';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script>
	<p class="hop"><strong>Weitere Artikel zum Thema:</strong></p>
	<ul class="st-related-posts">
	<li><a href="http://www.braekling.de/web-design/3596-html5-web-storage-local-und-session-storage.html" title="HTML5: Web Storage (Local und Session Storage) (9. August 2010)">HTML5: Web Storage (Local und Session Storage)</a> (0)</li>
	<li><a href="http://www.braekling.de/html5-und-css3" title="HTML5 und CSS3 (20. Juli 2010)">HTML5 und CSS3</a> (0)</li>
	<li><a href="http://www.braekling.de/personal-interests/3109-mal-kurz-rundgeschaut-23.html" title="Mal kurz rundgeschaut&#8230; #23 (27. Mai 2010)">Mal kurz rundgeschaut&#8230; #23</a> (0)</li>
	<li><a href="http://www.braekling.de/personal-interests/3051-mal-kurz-rundgeschaut-19.html" title="Mal kurz rundgeschaut&#8230; #19 (26. März 2010)">Mal kurz rundgeschaut&#8230; #19</a> (1)</li>
	<li><a href="http://www.braekling.de/web-design/3443-css3-transform-lineare-transformationen.html" title="CSS3: transform (Lineare Transformationen) (28. Juli 2010)">CSS3: transform (Lineare Transformationen)</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.braekling.de/web-design/3311-css3-color-farben-mit-farbtabellen.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3: box-shadow (Schatten)</title>
		<link>http://www.braekling.de/web-design/3274-css3-box-shadow-schatten.html</link>
		<comments>http://www.braekling.de/web-design/3274-css3-box-shadow-schatten.html#comments</comments>
		<pubDate>Fri, 16 Jul 2010 08:37:06 +0000</pubDate>
		<dc:creator>André Bräkling</dc:creator>
				<category><![CDATA[HTML und CSS]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[box-shadow]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[referenz]]></category>
		<category><![CDATA[schatten]]></category>

		<guid isPermaLink="false">http://www.braekling.de/?p=3274</guid>
		<description><![CDATA[Dank CSS3 erhalten Webdesigner endlich die Möglichkeit, ansehliche Schatteneffekte ohne Grafiken zu verwirklichen. Somit können Webseiten optisch geschickt aufgewertet werden, ohne den Quelltext unnötig kompliziert zu gestalten und ohne zusätzlichen Datenballast zu erzeugen. Die dazu notwendige Eigenschaft box-shadow wird mittlerweile abgesehen vom IE8 von allen modernen Browsern unterstützt. Definition Definiert ist die Eigenschaft folgendermaßen: &#60;shadow&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Dank CSS3 erhalten Webdesigner endlich die Möglichkeit, ansehliche Schatteneffekte ohne Grafiken zu verwirklichen. Somit können Webseiten optisch geschickt aufgewertet werden, ohne den Quelltext unnötig kompliziert zu gestalten und ohne zusätzlichen Datenballast zu erzeugen. Die dazu notwendige Eigenschaft <a href="http://www.w3.org/TR/css3-background/#the-box-shadow" title="CSS Backgrounds and Borders Module Level 3: The 'box-shadow' property">box-shadow</a> wird mittlerweile abgesehen vom IE8 von allen modernen Browsern unterstützt.<span id="more-3274"></span></p>
<h4>Definition</h4>
<p>Definiert ist die Eigenschaft folgendermaßen:</p>
<p><em>&lt;shadow&gt; = inset? &#038;&#038; [&lt;length&gt;{2,4} &#038;&#038; &lt;color&gt;?]</em></p>
<p>Das bedeutet, dass man optional <em>inset</em> für einen inneren Schatten angegeben kann, 2 bis 4 Längenangaben notwendig sind und wiederum optional eine Farbe definiert werden kann. Bei den Längenangaben kann es sich um positive und teils auch um negative Werte handeln, die Farbe kann natürlich neben dem klassischen Hex-Code bzw. den vordefinierten Konstanten auch mit den <a href="/web-design/3311-css3-color-farben-mit-farbtabellen.html" title="CSS3: color (Farben) mit Farbtabellen">neuen Farbmöglichkeiten von CSS3</a> angegeben werden.</p>
<h4>Parameter</h4>
<p>Schauen wir uns zunächst die einzelnen Parameter und deren Bedeutung im Detail an:</p>
<ul>
<li><strong>Länge 1:</strong> Horizontaler Versatz des Schattens. Ein positiver Wert zeichnet den Schatten nach rechts, ein negativer Wert nach links.</li>
<li><strong>Länge 2:</strong> Vertikaler Versatz des Schattens. Ein positiver Wert zeichnet den Schatten nach unten, ein negativer Wert nach oben.</li>
<li><strong>Länge 3 (optional):</strong> Laufweite des Weichzeichners. Hier sind nur positive Werte möglich.</li>
<li><strong>Länge 4 (optional):</strong> Aufsatz auf den Schatten. Ein positiver Wert erweitert den Schatten, ein negativer Wert zieht ihn zusammen.</li>
<li><strong>Farbe (optional):</strong> Die Farbe des Schattens.</li>
<li><strong>Inset (optional):</strong> Wird dieser Wert angegeben, dann handelt es sich um einen inneren Schatten.</li>
</ul>
<blockquote class="info"><p>
Solange sich die Eigenschaft noch in Entwicklung befindet, verwenden Webkit- und Mozilla-Browser ein Präfix. Möchte man sie bereits verwenden, muss sie daher mehrfach mit gleichen Parametern definiert werden: box-shadow (Opera), -moz-box-shadow (Mozilla) und -webkit-box-shadow (Webkit).
</p></blockquote>
<h4>Beispiele</h4>
<p>Sofern Dein Browser <em>box-shadow</em> (ggf. mit Präfix) bereits unterstützt, kannst Du den Effekt jeweils in der Box Live-Demo sehen. Browser, die <em>box-shadow</em> noch nicht unterstützen, zeigen einfach nur die Box ohne Schatten.</p>
<p><strong>1. Ganz einfacher Schatten:</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background:#ddd;box-shadow:10px 10px; -moz-box-shadow:10px 10px; -webkit-box-shadow:10px 10px">Box mit Schatten</div>
</td>
</tr>
</table>
<p><strong>2. Farbiger Schatten:</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span> <span style="color: #933;">10px</span> <span style="color: #cc00cc;">#999</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background:#ddd;box-shadow:10px 10px #999; -moz-box-shadow:10px 10px #999; -webkit-box-shadow:10px 10px #999">Box mit Schatten</div>
</td>
</tr>
</table>
<p><strong>3. Weichzeichner:</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span> <span style="color: #933;">10px</span> <span style="color: #933;">5px</span> <span style="color: #cc00cc;">#999</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background:#ddd;box-shadow:10px 10px 5px #999; -moz-box-shadow:10px 10px 5px #999; -webkit-box-shadow:10px 10px 5px #999">Box mit Schatten</div>
</td>
</tr>
</table>
<p><strong>4. Mit Aufsatz:</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span> <span style="color: #933;">10px</span> <span style="color: #933;">5px</span> <span style="color: #933;">5px</span> <span style="color: #cc00cc;">#999</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background:#ddd;box-shadow:10px 10px 5px 5px #999; -moz-box-shadow:10px 10px 5px 5px #999; -webkit-box-shadow:10px 10px 5px 5px #999">Box mit Schatten</div>
</td>
</tr>
</table>
<p><strong>5. Mit Abzug:</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span> <span style="color: #933;">10px</span> <span style="color: #933;">5px</span> <span style="color: #933;">-5px</span> <span style="color: #cc00cc;">#999</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background:#ddd;box-shadow:10px 10px 5px -5px #999; -moz-box-shadow:10px 10px 5px -5px #999; -webkit-box-shadow:10px 10px 5px -5px #999">Box mit Schatten</div>
</td>
</tr>
</table>
<p><strong>6. Negativer Versatz:</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #933;">-10px</span> <span style="color: #933;">-10px</span> <span style="color: #933;">5px</span> <span style="color: #cc00cc;">#999</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background:#ddd;box-shadow:-10px -10px 5px #999; -moz-box-shadow:-10px -10px 5px #999; -webkit-box-shadow:-10px -10px 5px #999">Box mit Schatten</div>
</td>
</tr>
</table>
<p><strong>7. Innerer Schatten:</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #993333;">inset</span> <span style="color: #933;">5px</span> <span style="color: #933;">5px</span> <span style="color: #933;">5px</span> <span style="color: #cc00cc;">#999</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background:#ddd;box-shadow:inset 5px 5px 5px #999; -moz-box-shadow:inset 5px 5px 5px #999; -webkit-box-shadow:inset 5px 5px 5px #999">Box mit Schatten</div>
</td>
</tr>
</table>
<p><strong>8. Mehrere Schatten:</strong><br />
Es können auch mehrere Schatten definiert werden, wenn diese per Komma getrennt werden:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span> <span style="color: #933;">10px</span> <span style="color: #933;">5px</span> <span style="color: #cc00cc;">#900</span><span style="color: #00AA00;">,</span> <span style="color: #933;">-10px</span> <span style="color: #933;">-10px</span> <span style="color: #933;">5px</span> <span style="color: #cc00cc;">#009</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<table class="demobox">
<tr>
<th>Live-Demo</th>
</tr>
<tr>
<td>
<div style="background:#ddd;box-shadow:10px 10px 5px #900, -10px -10px 5px #009; -moz-box-shadow:10px 10px 5px #900, -10px -10px 5px #009; -webkit-box-shadow:10px 10px 5px #900, -10px -10px 5px #009">Box mit Schatten</div>
</td>
</tr>
</table>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'Braekling';
var flattr_url = 'http://www.braekling.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Braekling.de';
var flattr_dsc = 'Technik &amp; Kommunikation';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script>
	<p class="hop"><strong>Weitere Artikel zum Thema:</strong></p>
	<ul class="st-related-posts">
	<li><a href="http://www.braekling.de/web-design/3443-css3-transform-lineare-transformationen.html" title="CSS3: transform (Lineare Transformationen) (28. Juli 2010)">CSS3: transform (Lineare Transformationen)</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/3311-css3-color-farben-mit-farbtabellen.html" title="CSS3: color (Farben) mit Farbtabellen (18. Juli 2010)">CSS3: color (Farben) mit Farbtabellen</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/3388-css3-border-radius-abgerundete-ecken.html" title="CSS3: border-radius (abgerundete Ecken) (21. Juli 2010)">CSS3: border-radius (abgerundete Ecken)</a> (1)</li>
	<li><a href="http://www.braekling.de/personal-interests/3264-mal-kurz-rundgeschaut%e2%80%a6-24.html" title="Mal kurz rundgeschaut… #24 (11. Juli 2010)">Mal kurz rundgeschaut… #24</a> (0)</li>
	<li><a href="http://www.braekling.de/personal-interests/3109-mal-kurz-rundgeschaut-23.html" title="Mal kurz rundgeschaut&#8230; #23 (27. Mai 2010)">Mal kurz rundgeschaut&#8230; #23</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.braekling.de/web-design/3274-css3-box-shadow-schatten.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML/CSS-Balkendiagramm &#8211; barrierefrei</title>
		<link>http://www.braekling.de/web-design/3230-htmlcss-balkendiagramm-barrierefrei.html</link>
		<comments>http://www.braekling.de/web-design/3230-htmlcss-balkendiagramm-barrierefrei.html#comments</comments>
		<pubDate>Wed, 07 Jul 2010 11:57:38 +0000</pubDate>
		<dc:creator>André Bräkling</dc:creator>
				<category><![CDATA[HTML und CSS]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[balkendiagramm]]></category>
		<category><![CDATA[Barrierefreiheit]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css2]]></category>
		<category><![CDATA[Diagramm]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://www.braekling.de/?p=3230</guid>
		<description><![CDATA[Nach meinem gestrigen Artikel Balkendiagramme mit CSS machte mich Thomas darauf aufmerksam, dass die DIV-Sammlung, die hinter dem Diagramm steckt, z.B. für Suchmaschinen oder auch für Screenreader, nicht lesbar sei. Zunächst erwiderte ich, dass dies auch auf Flash- oder JavaScript-Diagramme zutreffen würde, jedoch ergänzte Thomas vollkommen richtig, dass diese aber keinen Kauderwelsch im HTML erzeugen. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.braekling.de/wp-content/uploads/balken_table.gif" alt="Balkendiagramm mit Tabelle" title="Balkendiagramm mit Tabelle" width="150" height="150" class="alignleft size-full wp-image-3231" />Nach meinem gestrigen Artikel <a href="http://www.braekling.de/web-design/2835-balkendiagramme-mit-css.html" title="Balkendiagramme mit CSS">Balkendiagramme mit CSS</a> machte mich Thomas <a href="http://www.braekling.de/web-design/2835-balkendiagramme-mit-css.html#comment-2921">darauf aufmerksam</a>, dass die <em>DIV</em>-Sammlung, die hinter dem Diagramm steckt, z.B. für Suchmaschinen oder auch für <a href="http://de.wikipedia.org/wiki/Screenreader" title="Wikipedia: Screenreader">Screenreader</a>, nicht lesbar sei. Zunächst <a href="http://www.braekling.de/web-design/2835-balkendiagramme-mit-css.html#comment-2922">erwiderte ich</a>, dass dies auch auf Flash- oder JavaScript-Diagramme zutreffen würde, jedoch <a href="http://www.braekling.de/web-design/2835-balkendiagramme-mit-css.html#comment-2923">ergänzte Thomas</a> vollkommen richtig, dass diese aber keinen Kauderwelsch im HTML erzeugen. Also habe ich mich nochmal in Ruhe mit der Sache beschäftigt, um den gestern vorgestellten Code dementsprechend zu optimieren.<span id="more-3230"></span></p>
<h4>Das Problem</h4>
<p>Mein Fehler lag darin, dass ich vor lauter Wald die Bäume nicht mehr gesehen habe. Voller Begeisterung für die Positionierungsmöglichkeiten von CSS habe ich das Diagramm aus augenscheinlich zusammenhangslosen <em>DIV</em>s gebaut. Dabei bietet HTML doch durchaus sinnvolle Möglichkeiten zur sinnvollen Erfassung solcher Daten, die dann wiederum mit CSS auf den entsprechende Format gebracht werden können. Beispielsweise lassen sich die Daten in einer Tabelle erfassen, die für lesende Software nachvollziehbar sind, und die dann dank CSS optisch aufbereitet werden.</p>
<h4>Ein Beispiel</h4>
<p>Thomas verwies auf einen <a href="https://dl.dropbox.com/u/1496903/tablegraph/index.html" title="CSS-Graph">von ihm gebauten CSS-Graphen</a>, der sehr eindrucksvoll die Möglichkeiten zur Formatierung einer korrekten Tabelle mit CSS präsentiert. Die Werte werden bei eingeschaltetem CSS in einem mehrdimensionalen Balkendiagramm dargestellt, wobei die Balken aus entsprechend verschobenen Grafiken bestehen. Solltet ihr an einer solchen komplexen Lösung interessiert sein, schaut mal in den kommentierten Quelltext. Schaltet man CSS aus, so bekommt man eine ganz normale Tabelle der gezeigten Werte zu Gesicht.</p>
<h4>Das gestrige Beispiel mit TABLE</h4>
<p>Die Verwendung einer <em>TABLE</em> hat nicht nur den Vorteil, dass die Daten auch ohne CSS interpretierbar sind, sondern auch, dass wir auf die ganzen Positionierungen verzichten können. Somit ist diese Variante nicht nur barrierefrei, sondern zudem auch deutlich einfacher. Zunächst zeige ich den allgemeinen CSS-Teil der Umsetzung:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">border-collapse</span><span style="color: #00AA00;">:</span><span style="color: #993333;">collapse</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> thead <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span>Verdana<span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">1.2em</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">3em</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> tfoot <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-style</span><span style="color: #00AA00;">:</span><span style="color: #993333;">italic</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">0.9em</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #993333;">center</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">3em</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> tbody <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span>Verdana<span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">1em</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> tbody tr <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">3em</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">2em</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> tbody th <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">border-right</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span><span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span> <br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> tbody td <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">10px</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> tbody div <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">margin-right</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Sieht schon deutlich einfacher aus, oder? Mit dem obigen Code ist schon alles vorbereitet. Nun müssen wir nur noch die Balken mit Farben (bzw. Hintergrundgrafik) und Länge definieren, wobei hier auch wieder 1 Pixel für 0,25 Prozent genommen wurde:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> <span style="color: #6666ff;">.barA</span> div <span style="color: #00AA00;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#c00</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">150px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<br />
<span style="color: #cc00cc;">#bardemo</span> <span style="color: #6666ff;">.barB</span> div <span style="color: #00AA00;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#0c0</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">270px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">-30px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<br />
<span style="color: #cc00cc;">#bardemo</span> <span style="color: #6666ff;">.barC</span> div <span style="color: #00AA00;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#00c</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">400px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">-60px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Bleibt jetzt noch die zugehörige Tabelle:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/table.html"><span style="color: #000000; font-weight: bold;">table</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/thead.html"><span style="color: #000000; font-weight: bold;">thead</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;&lt;<a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a> <span style="color: #000066;">colspan</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;2&quot;</span>&gt;</span>Unser Balkendiagramm<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/thead.html"><span style="color: #000000; font-weight: bold;">thead</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tfoot.html"><span style="color: #000000; font-weight: bold;">tfoot</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;&lt;<a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;&lt;<a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;</span>%<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tfoot.html"><span style="color: #000000; font-weight: bold;">tfoot</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tbody.html"><span style="color: #000000; font-weight: bold;">tbody</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;barA&quot;</span>&gt;&lt;<a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;</span>Wert A:<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;&lt;<a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span>37,5<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;barB&quot;</span>&gt;&lt;<a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;</span>Wert B:<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;&lt;<a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span>67,5<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;barC&quot;</span>&gt;&lt;<a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;</span>Wert C:<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;&lt;<a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span>100<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tbody.html"><span style="color: #000000; font-weight: bold;">tbody</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/table.html"><span style="color: #000000; font-weight: bold;">table</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>Zur Darstellung der Balken verwende ich einfach leere <em>DIV</em>s (ein Leerzeichen <em>&amp;nbsp;</em> ist darin, um Warnungen des Validators zu umgehen), die dank CSS optisch gestaltet werden. Folgender Screenshot zeigt das Ergebnis:</p>
<p><img src="http://www.braekling.de/wp-content/uploads/beispiel.gif" alt="Balkendiagramm aus Tabelle - Beispiel" title="Balkendiagramm aus Tabelle - Beispiel" width="536" height="246" class="size-full wp-image-3240" /></p>
<p>Das Schöne ist, dass die ganze Sache auch deutlich kompakter wird. Inkl. Spritegrafik bringt diese Lösung (ohne Minimierung des Codes) weniger als 2 Kilobyte auf die Waage. Mit deaktiviertem CSS sieht es dann wie auf diesem Screenshot aus:</p>
<p><img src="http://www.braekling.de/wp-content/uploads/beispiel_ohne_css.gif" alt="Darstellung der Tabelle ohne CSS" title="Darstellung der Tabelle ohne CSS" width="220" height="186" class="size-full wp-image-3241" /></p>
<p>Daher nochmal vielen Dank an Thomas für den sinnvollen Hinweis in die richtige Richtung!</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'Braekling';
var flattr_url = 'http://www.braekling.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Braekling.de';
var flattr_dsc = 'Technik &amp; Kommunikation';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script>
	<p class="hop"><strong>Weitere Artikel zum Thema:</strong></p>
	<ul class="st-related-posts">
	<li><a href="http://www.braekling.de/web-design/2835-balkendiagramme-mit-css.html" title="Balkendiagramme mit CSS (6. Juli 2010)">Balkendiagramme mit CSS</a> (7)</li>
	<li><a href="http://www.braekling.de/personal-interests/3109-mal-kurz-rundgeschaut-23.html" title="Mal kurz rundgeschaut&#8230; #23 (27. Mai 2010)">Mal kurz rundgeschaut&#8230; #23</a> (0)</li>
	<li><a href="http://www.braekling.de/personal-interests/3051-mal-kurz-rundgeschaut-19.html" title="Mal kurz rundgeschaut&#8230; #19 (26. März 2010)">Mal kurz rundgeschaut&#8230; #19</a> (1)</li>
	<li><a href="http://www.braekling.de/web-design/1791-little-boxes-teil-1-gratis.html" title="Little Boxes Teil 1 gratis (20. Oktober 2009)">Little Boxes Teil 1 gratis</a> (0)</li>
	<li><a href="http://www.braekling.de/html5-und-css3" title="HTML5 und CSS3 (20. Juli 2010)">HTML5 und CSS3</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.braekling.de/web-design/3230-htmlcss-balkendiagramm-barrierefrei.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Balkendiagramme mit CSS</title>
		<link>http://www.braekling.de/web-design/2835-balkendiagramme-mit-css.html</link>
		<comments>http://www.braekling.de/web-design/2835-balkendiagramme-mit-css.html#comments</comments>
		<pubDate>Tue, 06 Jul 2010 10:34:50 +0000</pubDate>
		<dc:creator>André Bräkling</dc:creator>
				<category><![CDATA[HTML und CSS]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[balkendiagramm]]></category>
		<category><![CDATA[balkengrafik]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css2]]></category>
		<category><![CDATA[Diagramm]]></category>
		<category><![CDATA[google chart api]]></category>
		<category><![CDATA[Grafik]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Statistik]]></category>

		<guid isPermaLink="false">http://www.braekling.de/?p=2835</guid>
		<description><![CDATA[Hinweis: Eine optimierte (da einfacher, kompakter und barrierefrei) Variante mit TABLE findet sich in diesem Artikel. Möchte man auf einer Webseite Statistiken angemessen aufbereiten, dann kommt man kaum an entsprechenden Grafiken vorbei. Bei einmaligen, statischen Werten können Diagramme natürlich mit einer beliebigen Software erstellt und als Grafiken eingebunden werden. Aber wie geht man mit dynamischen [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.braekling.de/wp-content/uploads/balken.gif" alt="Balkendiagramme mit CSS" title="Balkendiagramme mit CSS" width="150" height="150" class="alignleft size-full wp-image-3227" /><strong>Hinweis:</strong> Eine optimierte (da einfacher, kompakter und barrierefrei) Variante mit <em>TABLE</em> findet sich in <a href="/web-design/3230-htmlcss-balkendiagramm-barrierefrei.html" title="HTML/CSS-Balkendiagramm – barrierefrei">diesem Artikel</a>.</p>
<p>Möchte man auf einer Webseite Statistiken angemessen aufbereiten, dann kommt man kaum an entsprechenden Grafiken vorbei. Bei einmaligen, statischen Werten können Diagramme natürlich mit einer beliebigen Software erstellt und als Grafiken eingebunden werden. Aber wie geht man mit dynamischen Werten um? Für nur wenige Graphen lohnt es sich meist nicht, eine umfangreiche Bibliothek zur dynamischen Erzeugung einzurichten und sich darin einzuarbeiten. Externe Lösungen, wie z.B die <a href="/web-development/478-google-chart-api-diagramm-leicht-gemacht.html">Google Chart API</a>, bergen hingegen eine gewisse Abhängigkeit von einem Drittanbieter. In diesem Tutorial möchte ich deshalb erläutern, wie sich einfache Balkendiagramme problemlos mit CSS umsetzen lassen. Es geht dabei lediglich um die Gestaltung, in einem weiteren Beitrag werde ich dann die dynamische Erzeugung via PHP behandeln. <span id="more-2835"></span></p>
<p>Die hier vorgestellte Methode ist eigentlich nichts besonderes, zeichnet sich aber insbesondere dadurch aus, dass sie sich vollkommen mit Bordmitteln umsetzen lässt. Wie bereits erwähnt, sind auf der Serverseite keine Bibliotheken zur Grapherstellung notwending. Aber auch der Client braucht weder JavaScript, noch Flash oder irgendein sonstiges Plugin. Natürlich steckt ein gewisser Aufwand dahinter, wenn man jedes Balkendiagramm einzeln zusammenbauen muss, jedoch soll diese Detailerklärung des Aufbaus ja eher für den &#8220;Einmaleinsatz&#8221; und zum allgemeinen Verständnis dienen. Doch jetzt genug der langen Vorrede &#8211; los geht&#8217;s:</p>
<h4>Inhalt</h4>
<ol>
<li><a href="#a1">Unser Zeichenblatt</a></li>
<li><a href="#a2">Achsen und Beschriftung</a></li>
<li><a href="#a3">Die Balken</a></li>
<li><a href="#a4">Darf&#8217;s ein wenig 3D sein?</a></li>
<li><a href="#a5">Doch ein wenig JavaScript?</a></li>
</ol>
<h4><a name="a1">1. Unser Zeichenblatt</a></h4>
<p>Zunächst definieren wir einen Bereich, innerhalb dessen wir unser Diagramm gestalten wollen. Wir beginnen mit dem Stylesheet:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#000</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span>verdana<span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">500px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">200px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#fff</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Unser Zeichenblatt wird über eine eindeutige ID <em>bardemo</em> benannt. Wir setzen die Position auf <em>relative</em>, damit wir die einzelnen Unterelemente innerhalb unserer Leinwand positionieren können.</p>
<p>Dazu gehört natürlich auch das entsprechende <em>DIV</em> im Body unseres HTML-Dokumentes:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo&quot;</span>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>Schon haben wir unsere Leinwand:</p>
<div style="position:relative;padding:0;width:500px; height:200px; border: 1px solid black; background: #fff;font-family:verdana;">
</div>
<h4><a name="a2">2. Achsen und Beschriftung</a></h4>
<p>Wie wir es in der Schule gelernt haben, versehen wir unser Zeichenblatt jetzt erstmal mit den Achsen, in die wir nachher unsere Balken einfügen wollen. Dazu positionieren wir ein weiteres <em>DIV</em> innerhalb des <em>bardemo</em>-DIV. Wieder erstmal die Style-Angaben:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.axis</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #933;">50px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">400px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">150px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">border-left</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Und natürlich der HTML-Teil:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo&quot;</span>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;axis&quot;</span>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>So sieht das dann aus (der Hintergrund ist nur für das Beispiel eingefärbt):</p>
<div style="position:relative;padding:0;width:500px; height:200px; border: 1px solid black; background: #fff;font-family:verdana;">
<div style="padding:0;position:absolute;top:30px;left:50px;width:400px;height:150px;border-bottom:1px solid black; border-left:1px solid black;background:#ccc;">
	</div>
</div>
<p>Nun spendieren wir unserem Diagramm noch einen Titel, damit auch jeder weiß, womit er es zu tun hat. Hierfür verwenden wir ein weiteres <em>DIV</em> mit passenden Style-Angaben:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.title</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">font</span><span style="color: #00AA00;">:</span><span style="color: #933;">12px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span><span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">5px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #993333;">center</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">15px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Und her mit dem Titel:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo&quot;</span>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;title&quot;</span>&gt;</span>Unser Beispieldiagramm<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;axis&quot;</span>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>So einfach geht das:</p>
<div style="position:relative;padding:0;width:500px; height:200px; border: 1px solid black; background: #fff;font-family:verdana;">
<div style="padding:0;position:relative;font:12px; font-weight:bold;top:5px;text-align:center;line-height:15px;">Unser Beispieldiagramm</div>
<div style="padding:0;position:absolute;top:30px;left:50px;width:400px;height:150px;border-bottom:1px solid black; border-left:1px solid black;">
	</div>
</div>
<p>Außerdem müssen wir unsere Achsen beschriften. Da die Balken in diesem Beispiel horizontal ausgerichtet sein sollen, d.h. von links nach rechts, schreiben wir zunächst die Einheit an die x-Achse. Auch für dieses <em>DIV</em> brauchen wir wieder den passenden Style:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.unit</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">180px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #933;">50px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">400px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">8px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #993333;">center</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Und wieder zusammenbauen:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;title&quot;</span>&gt;</span>Unser Beispieldiagramm<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;axis&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;unit&quot;</span>&gt;</span>%<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>Langsam kann man erahnen, worauf es hinausläuft:</p>
<div style="position:relative;padding:0;width:500px; height:200px; border: 1px solid black; background: #fff;font-family:verdana;">
<div style="padding:0;position:relative;font:12px; font-weight:bold;top:5px;text-align:center;line-height:15px;">Unser Beispieldiagramm</div>
<div style="padding:0;position:absolute;top:30px;left:50px;width:400px;height:150px;border-bottom:1px solid black; border-left:1px solid black;">
	</div>
<div style="padding:0;position:absolute;top:180px;left:50px;width:400px;font-size:8px;text-align:center;">%</div>
</div>
<p>Bisher haben wir eigentlich nur die festen Elemente auf unserer Leinwand verteilt. Nun wollen wir aber an der y-Achse die Beschriftungen für die einzelnen Balken anbringen. Wir entscheiden uns nun für drei Balken, wodurch wir die Positionen der Labels festlegen können. Jeder Balken soll 30 Pixel hoch werden, zusätzlich sollen sie 15px Abstand voneinander haben. Wir definieren nun die Styles für die Umgebung der Labels <em>labels</em>, allgemeine Angaben für alle Labels <em>label</em> und dann die Details für die einzelnen Labels <em>label_x</em> (Abstand von oben <em>top</em> und Farbe <em>color</em>).</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.labels</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">40px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">150px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.label</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">8px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.label_1</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">15px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#c00</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.label_2</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#0c0</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.label_3</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">105px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#00c</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Die eigentlichen Beschriftungen kommen dann in unseren HTML-Code:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo&quot;</span>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;title&quot;</span>&gt;</span>Unser Beispieldiagramm<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;axis&quot;</span>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;labels&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_1&quot;</span>&gt;</span>Wert A<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_2&quot;</span>&gt;</span>Wert B<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_3&quot;</span>&gt;</span>Wert C<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;unit&quot;</span>&gt;</span>%<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>Jetzt ist unsere Leinwand für die eigentlichen Balken bereit:</p>
<div style="position:relative;padding:0;width:500px; height:200px; border: 1px solid black; background: #fff;font-family:verdana;">
<div style="padding:0;position:relative;font:12px; font-weight:bold;top:5px;text-align:center;line-height:15px;">Unser Beispieldiagramm</div>
<div style="padding:0;position:absolute;top:30px;left:50px;width:400px;height:150px;border-bottom:1px solid black; border-left:1px solid black;">
	</div>
<div style="padding:0;position:absolute;top:30px;left:10px;width:40px;height:150px;line-height:30px;">
<div style="position:absolute;top:15px;left:0;height:30px;color:#c00;padding:0;font-size:8px;">Wert A</div>
<div style="position:absolute;top:60px;left:0;height:30px;color:#0c0;padding:0;font-size:8px;">Wert B</div>
<div style="position:absolute;top:105px;left:0;height:30px;color:#00c;padding:0;font-size:8px;">Wert C</div>
</p></div>
<div style="padding:0;position:absolute;top:180px;left:50px;width:400px;font-size:8px;text-align:center;">%</div>
</div>
<h4><a name="a3">3. Die Balken</a></h4>
<p>Jetzt möchten wir natürlich auch die richtigen Balken einzeichnen. Die Positionen sind soweit klar, wir müssen uns nur noch ansehen, wieviele Pixel einem Prozent entsprechen. Unser Zeichenbereich für die Balken innerhalb der Achsen ist exakt 400 Pixel breit, d.h. 4 Pixel entsprechen 1%. Dadurch können wir unsere Graphen in 0,25%-Schritten darstellen, bei kleineren Unterschieden müssten wir runden. Für eine einfache Visualisierung sollte diese Genauigkeit aber ausreichen. Die Demobalken sollen die Werte 37,5% (=150px), 67,5% (=270px) und 100% (=400px) darstellen. Wieder schreiben wir die für alle Balken gültigen Werte in eine eigene Klasse <em>bar</em>, während die individuellen Angaben (Breite <em>width</em>, Farbe <em>background</em> und Abstand von oben <em>top</em>) in eigenen Klassen <em>bar_x</em> stehen:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#fff</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span><span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_1</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">15px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">150px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#c00</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_2</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">270px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#0c0</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_3</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">105px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">400px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#00c</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Außerdem soll die konkrete Wert rechtsbündig im Balken angezeigt werden. Damit diese Zahl nicht direkt am Rand klebt, fügen wir nach rechts noch ein Leerzeichen <em>&amp;bsp;</em> ein:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo&quot;</span>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;title&quot;</span>&gt;</span>Unser Beispieldiagramm<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;axis&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bar bar_1&quot;</span>&gt;</span>37,5 <span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bar bar_2&quot;</span>&gt;</span>67,5 <span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bar bar_3&quot;</span>&gt;</span>100 <span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span> <br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;labels&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_1&quot;</span>&gt;</span>Wert A<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_2&quot;</span>&gt;</span>Wert B<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_3&quot;</span>&gt;</span>Wert C<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;unit&quot;</span>&gt;</span>%<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>Schon hätten wir bereits ein fertiges Diagramm:</p>
<div style="position:relative;padding:0;width:500px; height:200px; border: 1px solid black; background: #fff;font-family:verdana;">
<div style="padding:0;position:relative;font:12px; font-weight:bold;top:5px;text-align:center;line-height:15px;">Unser Beispieldiagramm</div>
<div style="padding:0;position:absolute;top:30px;left:50px;width:400px;height:150px;border-bottom:1px solid black; border-left:1px solid black;">
<div style="line-height:1em;position:absolute;top:15px;left:0;height:20px;width:150px;background:#c00;padding:10px 0 0 0;text-align:right;font-size:10px;color:#fff;font-weight:bold;">37,5 &nbsp;
		</div>
<div style="line-height:1em;position:absolute;top:60px;left:0;height:20px;width:270px;background:#0c0;padding:10px 0 0 0;text-align:right;font-size:10px;color:#fff;font-weight:bold;">67,5 &nbsp;
		</div>
<div style="line-height:1em;position:absolute;top:105px;left:0;height:20px;width:400px;background:#00c;padding:10px 0 0 0;text-align:right;font-size:10px;color:#fff;font-weight:bold;">100 &nbsp;
		</div>
</p></div>
<div style="padding:0;position:absolute;top:30px;left:10px;width:40px;height:150px;line-height:30px;">
<div style="position:absolute;top:15px;left:0;height:30px;color:#c00;padding:0;font-size:8px;">Wert A</div>
<div style="position:absolute;top:60px;left:0;height:30px;color:#0c0;padding:0;font-size:8px;">Wert B</div>
<div style="position:absolute;top:105px;left:0;height:30px;color:#00c;padding:0;font-size:8px;">Wert C</div>
</p></div>
<div style="padding:0;position:absolute;top:180px;left:50px;width:400px;font-size:8px;text-align:center;">%</div>
</div>
<h4><a name="a4">4. Darf&#8217;s ein wenig 3D sein?</a></h4>
<p>Diagramme sind meistens nicht sonderlich spannend. Aber mit ein paar grafischen Finessen kann man es aber geschickt aufwerten. (Zumindest solange man es nicht übertreibt&#8230; auch hier gilt: Weniger ist manchmal mehr!) CSS3 bietet hierzu tolle Möglichkeiten, aber zur Zeit sollten wir uns der Kompatibilität wegen lieber mit dem zufrieden geben, was CSS2 uns ermöglicht. Beispielsweise können wir den Balken mit einer Hintergrundgrafik durch einen Farbverlauf einen leichten 3D-Effekt spendieren. Andere Möglichkeiten wären auch Grafiken mit Schatten oder eine zusätzliche Grafik, die den Balken mit runden Ecken abschließt. Hier wollen wir als Beispiel einfach eine Hintergrundgrafik aus einem <a href="/web-design/2162-css-sprites-http-requests-einsparen.html" title="CSS-Sprites: HTTP-Requests einsparen">CSS-Sprite</a> einfügen. So sieht die Grafik aus, wobei sie hier etwas verbreitert angezeigt wird, da die eigentliche Datei (365 Bytes) nur 1px breit ist:</p>
<div style="background:url(/wp-content/uploads/bar_sprite.png);height:90px;width:100px;">&nbsp;</div>
<p>Um unsere Grafik zu nutzen, müssen wir lediglich die CSS-Klassen der Balken etwas anpassen:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_1</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">15px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">150px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#c00</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_2</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">270px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#0c0</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">-30px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_3</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">105px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">400px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#00c</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">-60px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Dadurch wird jedem <em>DIV</em> die Hintergrundgrafik <em>bar_sprite.png</em> hinzugefügt, die bei Balken 2 und 3 via <em>background-position</em> entsprechend verschoben wird. Mehr zur Verwendung von CSS-Sprites <a href="/web-design/2162-css-sprites-http-requests-einsparen.html" title="CSS-Sprites: HTTP-Requests einsparen">findet ihr im zugehörigen Artikel</a>. Die Hintergrundfarbe steht hier im Beispiel immer noch in den Style-Klassen, wodurch die Darstellung auch gelingt, wenn die Grafik nicht geladen werden kann bzw. mit Verzögerung geladen wird.</p>
<p>So sieht es dann aus:</p>
<div style="position:relative;padding:0;width:500px; height:200px; border: 1px solid black; background: #fff;font-family:verdana;">
<div style="padding:0;position:relative;font:12px; font-weight:bold;top:5px;text-align:center;line-height:15px;">Unser Beispieldiagramm</div>
<div style="padding:0;position:absolute;top:30px;left:50px;width:400px;height:150px;border-bottom:1px solid black; border-left:1px solid black;">
<div style="line-height:1em;position:absolute;top:15px;left:0;height:20px;width:150px;background:#c00 url(/wp-content/uploads/bar_sprite.png);padding:10px 0 0 0;text-align:right;font-size:10px;color:#fff;font-weight:bold;">37,5 &nbsp;
		</div>
<div style="line-height:1em;position:absolute;top:60px;left:0;height:20px;width:270px;background:#0c0 url(/wp-content/uploads/bar_sprite.png);background-position:0 -30px;padding:10px 0 0 0;text-align:right;font-size:10px;color:#fff;font-weight:bold;">67,5 &nbsp;
		</div>
<div style="line-height:1em;position:absolute;top:105px;left:0;height:20px;width:400px;background:#00c url(/wp-content/uploads/bar_sprite.png);background-position:0 -60px;padding:10px 0 0 0;text-align:right;font-size:10px;color:#fff;font-weight:bold;">100 &nbsp;
		</div>
</p></div>
<div style="padding:0;position:absolute;top:30px;left:10px;width:40px;height:150px;line-height:30px;">
<div style="position:absolute;top:15px;left:0;height:30px;color:#c00;padding:0;font-size:8px;">Wert A</div>
<div style="position:absolute;top:60px;left:0;height:30px;color:#0c0;padding:0;font-size:8px;">Wert B</div>
<div style="position:absolute;top:105px;left:0;height:30px;color:#00c;padding:0;font-size:8px;">Wert C</div>
</p></div>
<div style="padding:0;position:absolute;top:180px;left:50px;width:400px;font-size:8px;text-align:center;">%</div>
</div>
<p>Damit ist unser Bordmittel-Balkendiagramm auch schon fertig. Im letzten Abschnitt möchte ich zusätzlich noch zeigen, wie man den Graphen via JavaScript noch etwas aufpeppen kann.</p>
<h4><a name="a5">5. Doch ein wenig JavaScript?</a></h4>
<p>Da sich CSS-Eigenschaften via JavaScript manipulieren lassen, kann man (sofern man eben nicht nur mit HTML und CSS auskommen muss bzw. möchte) dem Diagramm noch etwas zusätzlichen Pepp verleihen. Beispielsweise könnte man sie dynamisch manipulierbar machen. An dieser Stelle möchte ich zeigen, wie die Balken beim Seitenaufruf in einer kleinen Animation &#8220;herausfahren&#8221; können. Dazu ändern wir zunächst die CSS-Klassen so, dass die Balken zu Beginn nur 0px breit sind:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_1</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">15px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#c00</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_2</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#0c0</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">-30px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#bardemo</span> div<span style="color: #6666ff;">.bar_3</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">105px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#00c</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bar_sprite.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">-60px</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Im HTML entfernen wir zusätzlich die Beschriftungen, die erst nach dem vollständigen Ausfahren der Balken erscheinen soll. Außerdem ergänzen wir für die Balken IDs, damit wir leichter darauf zugreifen können:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo&quot;</span>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;title&quot;</span>&gt;</span>Unser Beispieldiagramm<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;axis&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo_bar1&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bar bar_1&quot;</span>&gt;</span>37,5 <span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo_bar2&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bar bar_2&quot;</span>&gt;</span>67,5 <span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bardemo_bar3&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;bar bar_3&quot;</span>&gt;</span>100 <span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span> <br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;labels&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_1&quot;</span>&gt;</span>Wert A<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_2&quot;</span>&gt;</span>Wert B<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;label label_3&quot;</span>&gt;</span>Wert C<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;unit&quot;</span>&gt;</span>%<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>Außerdem ergänzen wir den <em>BODY</em>-Tag unseres HTML-Dokuments so, dass nach dem Ladevorgang die JavaScript-Funktion <em>show_bars()</em> aufgerufen wird:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">body</span></a> <span style="color: #000066;">onload</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;javascript:show_bars();&quot;</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Vor dem schließenden <em>BODY</em>-Tag, also am Ende unseres Dokumentes, fügen wir nun noch eine Skript-Sektion ein, die den folgenden JavaScript-Code enthalten soll:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span><br />
/* Hier landet der folgende JavaScript-Code */<br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>Also machen wir uns jetzt an das eigentliche Skript. Zunächst wollen wir ein paar notwendige Variablen definieren, die im Ablauf verwendet werden und uns eine leichte Anpassung der Parameter ermöglichen:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #006600; font-style: italic;">/* Balkenobjekte */</span><br />
<span style="color: #003366; font-weight: bold;">var</span> bardemo_bars <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'bardemo_bar1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'bardemo_bar2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'bardemo_bar3'</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009966; font-style: italic;">/* Startwerte der Balken */</span><br />
<span style="color: #003366; font-weight: bold;">var</span> bardemo_current <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009966; font-style: italic;">/* Zielwerte der Balken */</span><br />
<span style="color: #003366; font-weight: bold;">var</span> bardemo_target &nbsp;<span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">37.5</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">67.5</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009966; font-style: italic;">/* Schrittweite */</span><br />
<span style="color: #003366; font-weight: bold;">var</span> bardemo_step <span style="color: #339933;">=</span> <span style="color: #CC0000;">0.25</span><span style="color: #339933;">;</span><br />
<span style="color: #009966; font-style: italic;">/* Verzoegerung zwischen Schritten in ms */</span><br />
<span style="color: #003366; font-weight: bold;">var</span> bardemo_time <span style="color: #339933;">=</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Jetzt brauchen wir auch die zu Beginn aufgerufene <em>show_bars()</em>-Funktion. Sie durchläuft die einzelnen Balken aus dem Array <em>bardemo_bars</em> in einer Schleife und überprüft, ob der aktuelle Wert des Balkens aus <em>bardemo_current</em> bereits der Ziellänge aus <em>bardemo_target</em> entspricht. Wurde die Länge noch nicht erreicht, dann wird der Wert um <em>bardemo_step</em> erhöht und die Länge des Balken auf den entsprechenden Pixel-Wert gesetzt. Sollte sie stattdessen erreicht sein, wird der Zielwert noch als Label im Balken ausgegeben.</p>
<p>Abschließend definiert die Funktion, sofern noch nicht alle Balken fertig sind, dass sie in <em>bardemo_time</em> Millisekunden wieder ausgeführt werden soll.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">function</span> show_bars<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #009966; font-style: italic;">/* Schalter: Sind wir fertig? */</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> done <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009966; font-style: italic;">/* Balken durchlaufen */</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> bardemo_bars.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bardemo_current<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> bardemo_target<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009966; font-style: italic;">/* Max. Laenge nicht erreicht */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009966; font-style: italic;">/* Balken ist noch nicht fertig */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; done <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009966; font-style: italic;">/* Um Schrittweite erhoehen */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bardemo_current<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> bardemo_step<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #006600; font-style: italic;">/* DIV auf entsprechende Laenge setzen <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1 Step = 1 Pixel */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bardemo_bars<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">width</span> <span style="color: #339933;">=</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#40;</span>bardemo_current<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> bardemo_step<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'px'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009966; font-style: italic;">/* Max. Laenge erreicht */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009966; font-style: italic;">/* Label in Balken schreiben */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bardemo_bars<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bardemo_target<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">' &amp;nbsp;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">/* Wenn nicht fertig, dann show_bars() in bardemo_time ms<br />
&nbsp; &nbsp; &nbsp; &nbsp;erneut ausfuehren */</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>done<span style="color: #009900;">&#41;</span> window.<span style="color: #660066;">setTimeout</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;show_bars()&quot;</span><span style="color: #339933;">,</span>bardemo_time<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Minimiert man alles, dann hat man so ein animiertes Balkendiagramm mit weniger als 3 Kilobyte. <a href="/testlab/animiertes_balkendiagramm_demo/index.html">Eine Demo findet ihr im Testlabor.</a> Und jetzt viel Spaß damit!</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'Braekling';
var flattr_url = 'http://www.braekling.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Braekling.de';
var flattr_dsc = 'Technik &amp; Kommunikation';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script>
	<p class="hop"><strong>Weitere Artikel zum Thema:</strong></p>
	<ul class="st-related-posts">
	<li><a href="http://www.braekling.de/web-design/3230-htmlcss-balkendiagramm-barrierefrei.html" title="HTML/CSS-Balkendiagramm &#8211; barrierefrei (7. Juli 2010)">HTML/CSS-Balkendiagramm &#8211; barrierefrei</a> (0)</li>
	<li><a href="http://www.braekling.de/web-development/2290-webseiten-performance-erhohen-ladezeit-verbessern.html" title="Webseiten-Performance erhöhen (11. Januar 2010)">Webseiten-Performance erhöhen</a> (3)</li>
	<li><a href="http://www.braekling.de/web-development/22-web-entwicklung-1-die-grundgedanken.html" title="Web-Entwicklung 1: Die Grundgedanken (10. März 2008)">Web-Entwicklung 1: Die Grundgedanken</a> (0)</li>
	<li><a href="http://www.braekling.de/usability/138-teleskoptext-die-etwas-andere-klickstrecke.html" title="Teleskoptext &#8211; Die etwas andere Klickstrecke (18. September 2008)">Teleskoptext &#8211; Die etwas andere Klickstrecke</a> (1)</li>
	<li><a href="http://www.braekling.de/personal-interests/3109-mal-kurz-rundgeschaut-23.html" title="Mal kurz rundgeschaut&#8230; #23 (27. Mai 2010)">Mal kurz rundgeschaut&#8230; #23</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.braekling.de/web-design/2835-balkendiagramme-mit-css.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Neue HTML5-Dokumente des W3C</title>
		<link>http://www.braekling.de/web-design/2929-neue-html5-dokumente-des-w3c.html</link>
		<comments>http://www.braekling.de/web-design/2929-neue-html5-dokumente-des-w3c.html#comments</comments>
		<pubDate>Fri, 05 Mar 2010 12:58:05 +0000</pubDate>
		<dc:creator>André Bräkling</dc:creator>
				<category><![CDATA[HTML und CSS]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[Entwurf]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[webentwicklung]]></category>
		<category><![CDATA[Webstandard]]></category>

		<guid isPermaLink="false">http://www.braekling.de/?p=2929</guid>
		<description><![CDATA[Obwohl HTML5 teilweise schon in Testläufen eingesetzt wird, z.B. bei YouTube, wird noch fleißig an der Spezifikation gearbeitet. Nun wurden seitens des World Wide Web Consortium (W3C) neue bzw. überarbeitete Dokumente veröffentlicht, die den derzeitigen Stand der Entwürfe beschreiben. HTML5 bringt insbesondere viele Neuerungen, die die Entwicklung von Web-Applikationen erleichtern sollen. Aus diesem Grund will [...]]]></description>
			<content:encoded><![CDATA[<p>Obwohl HTML5 teilweise schon in Testläufen eingesetzt wird, z.B. bei <a href="http://www.youtube.com/html5" title="HTML5 bei YouTube">YouTube</a>, wird noch fleißig an der Spezifikation gearbeitet. Nun wurden seitens des <a href="http://www.w3.org" title="World Wide Web Consortium (W3C)">World Wide Web Consortium (W3C)</a> neue bzw. überarbeitete Dokumente veröffentlicht, die den derzeitigen Stand der Entwürfe beschreiben.<span id="more-2929"></span></p>
<p>HTML5 bringt insbesondere viele Neuerungen, die die Entwicklung von Web-Applikationen erleichtern sollen. Aus diesem Grund will Google die Arbeiten an <a href="http://de.wikipedia.org/wiki/Gears" title="Google Gears bei Wikipedia">Gears</a> zurückfahren, um stattdessen verstärkt auf HTML5 zu setzen. Da der neue Standard zudem erlaubt, Video und Audio nativ einzubinden, findet er auch in den laufenden Diskussionen über das drohende Ende des Flash-Zeitalters entsprechende Beachtung. Besonders interessant sind außerdem die zusätzlichen Formular-Elemente (z.B. für Datumseingaben), das <em>Canvas</em>-Element, das dynamische Grafiken via HTML erlaubt, und die zusätzlichen Tags zur Strukturierung eines Dokumentes (z.B. <em>article</em> oder <em>nav</em>).</p>
<p>Folgende Dokumente finde ich persönlich insbesondere für den Einstieg in HTML5 sehr interessant:</p>
<h4>HTML5 &#8211; A vocabulary and associated APIs for HTML and XHTML</h4>
<blockquote><p><strong>Abstract:</strong> This specification defines the 5th major revision of the core language of the World Wide Web: the Hypertext Markup Language (HTML). In this version, new features are introduced to help Web application authors, new elements are introduced based on research into prevailing authoring practices, and special attention has been given to defining clear conformance criteria for user agents in an effort to improve interoperability.</p></blockquote>
<p><a href="http://www.w3.org/TR/html5/" title="HTML5 - A vocabulary and associated APIs for HTML and XHTML">Zur zuletzt veröffentlichten Version des Dokumentes.</a></p>
<h4>HTML: The Markup Language</h4>
<blockquote><p><strong>Abstract:</strong> This document describes the HTML markup language and provides details necessary for producers of HTML content to create documents that conform to the language. By design, it does not define related APIs, nor attempt to specify how consumers of HTML content are meant to process documents, nor attempt to be a tutorial or “how to” authoring guide.</p></blockquote>
<p><a href="http://www.w3.org/TR/html-markup/" title="HTML: The Markup Language">Zur zuletzt veröffentlichten Version des Dokumentes.</a></p>
<h4>HTML5 differences from HTML4</h4>
<blockquote><p><strong>Abstract:</strong> HTML5 defines the fifth major revision of the core language of the World Wide Web, HTML. &#8220;HTML5 differences from HTML4&#8243; describes the differences between HTML4 and HTML5 and provides some of the rationale for the changes. This document may not provide accurate information as the HTML5 specification is still actively in development. When in doubt, always check the HTML5 specification itself.</p></blockquote>
<p><a href="http://www.w3.org/TR/html5-diff/" title="HTML5 differences from HTML4">Zur zuletzt veröffentlichten Version des Dokumentes.</a></p>
<p>Viel Spaß beim Stöbern&#8230; und nicht vergessen: Es handelt sich nach wie vor um Entwürfe. Die Links führen übrigens nicht direkt auf die gerade veröffentlichten Dokumente vom 4. März, sondern auf die jeweils zuletzt veröffentlichte Version, d.h. sie eignen sich als Bookmarks, wenn ihr immer auf dem neusten Stand sein wollt.</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'Braekling';
var flattr_url = 'http://www.braekling.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Braekling.de';
var flattr_dsc = 'Technik &amp; Kommunikation';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script>
	<p class="hop"><strong>Weitere Artikel zum Thema:</strong></p>
	<ul class="st-related-posts">
	<li><a href="http://www.braekling.de/usability/138-teleskoptext-die-etwas-andere-klickstrecke.html" title="Teleskoptext &#8211; Die etwas andere Klickstrecke (18. September 2008)">Teleskoptext &#8211; Die etwas andere Klickstrecke</a> (1)</li>
	<li><a href="http://www.braekling.de/html5-und-css3" title="HTML5 und CSS3 (20. Juli 2010)">HTML5 und CSS3</a> (0)</li>
	<li><a href="http://www.braekling.de/usability/2606-sketching-und-wireframing-noch-mehr-vorlagen.html" title="Sketching und Wireframing &#8211; Noch mehr Vorlagen (1. Februar 2010)">Sketching und Wireframing &#8211; Noch mehr Vorlagen</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/515-praktisch-webseiten-mit-browsershots-testen.html" title="Praktisch: Webseiten mit Browsershots testen (11. November 2008)">Praktisch: Webseiten mit Browsershots testen</a> (0)</li>
	<li><a href="http://www.braekling.de/web-design/381-mama-wacht-uber-webstandards.html" title="MAMA wacht über Webstandards (16. Oktober 2008)">MAMA wacht über Webstandards</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.braekling.de/web-design/2929-neue-html5-dokumente-des-w3c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
