<?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>maddesigns</title>
	<atom:link href="http://maddesigns.de/feed" rel="self" type="application/rss+xml" />
	<link>http://maddesigns.de</link>
	<description>TYPO3, CSS3 Webdesign aus Trebbin bei Berlin</description>
	<lastBuildDate>Mon, 14 May 2012 19:09:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Sass &amp; Compass Introduction</title>
		<link>http://maddesigns.de/sass-compass-introduction-1701.html</link>
		<comments>http://maddesigns.de/sass-compass-introduction-1701.html#comments</comments>
		<pubDate>Mon, 30 Apr 2012 06:59:46 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Sass]]></category>
		<category><![CDATA[compass]]></category>
		<category><![CDATA[intro]]></category>
		<category><![CDATA[sass]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1701</guid>
		<description><![CDATA[Meine Workshop-Slides &#8220;Modern Frontend Development with Sass &#038; Compass&#8221; sind nun online verfügbar. Der drei Stunden Workshop, den ich bei den TYPO3 Developer Days in München gegeben habe, habe ich am letzten Samstag auch nochmal beim TYPO3camp Stuttgart wiederholt. Im Workshop ging es um die ersten Schritte mit Sass &#038; Compass, sowie die hilfreichsten Features [...]]]></description>
			<content:encoded><![CDATA[<p>Meine Workshop-Slides &#8220;<a href="http://maddesigns.de/sass-compass-introduction/" title="Tutorial to start with Sass &#038; Compass">Modern Frontend Development with Sass &#038; Compass</a>&#8221; sind nun online verfügbar. </p>
<p>Der drei Stunden Workshop, den ich bei den <a href="http://t3dd12.typo3.org/sessions/" title="TYPO3 Developer Days Sessions">TYPO3 Developer Days</a> in München gegeben habe, habe ich am letzten Samstag auch nochmal beim <a href="http://www.typo3camp-stuttgart.de/programm/sessions.html" title="TYPO3camp Stuttgart Sessions">TYPO3camp Stuttgart</a> wiederholt. Im Workshop ging es um die ersten Schritte mit Sass &#038; Compass, sowie die hilfreichsten Features vorzustellen und einen Ausblick auf die neue Sass Version 3.2 zu geben.</p>
<p>Bei Fragen, pingt mich gern auf <a href="http://twitter.com/#!/maddesigns" title="maddesigns auf Twitter">Twitter</a> dazu an, kommentiert hier im Blog oder schreibt mir eine <a href="mailto:sven@maddesigns.de">E-Mail</a></p>
<div id="tweetbutton1701" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fsass-compass-introduction-1701.html&amp;via=maddesigns&amp;text=Sass%20%26%23038%3B%20Compass%20Introduction&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fsass-compass-introduction-1701.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/sass-compass-introduction-1701.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE9 border-radius right-to-left (direction: rtl) Bug</title>
		<link>http://maddesigns.de/ie9-border-radius-direction-rtl-bug-1657.html</link>
		<comments>http://maddesigns.de/ie9-border-radius-direction-rtl-bug-1657.html#comments</comments>
		<pubDate>Thu, 22 Mar 2012 10:30:57 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[border-radius]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[ie9]]></category>
		<category><![CDATA[right to left]]></category>
		<category><![CDATA[rtl]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1657</guid>
		<description><![CDATA[Wer schon mal Layouts für arabische Websites umgesetzt hat, kennt sicherlich das HTML-Attribut &#8220;dir&#8220;, das man z.B. im body-Tag einfügen kann um die Leserichtig des Dokuments von links-nach-rechts auf rechts-nach-links zu ändern. In CSS ist die Anweisung &#8220;direction&#8221; dafür zuständig. Für beide Möglichkeiten kann man die Werte &#8220;rtl&#8221; (right-to-left) oder &#8220;ltr&#8221; (left-to-right) sowie &#8220;auto&#8221; angeben. [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/border-radius-runde-ecken-css3-adventskalender-tag-1-288.html' rel='bookmark' title='border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1'>border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1</a></li>
<li><a href='http://maddesigns.de/ie9-mit-css3-border-radius-und-linear-gradient-problemen-813.html' rel='bookmark' title='IE9 mit CSS3 border-radius und linear-gradient Problemen'>IE9 mit CSS3 border-radius und linear-gradient Problemen</a></li>
<li><a href='http://maddesigns.de/fun-with-border-radius-css-sprechblasen-css3-adventskalender-tag-23-692.html' rel='bookmark' title='Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23'>Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Wer schon mal Layouts für arabische Websites umgesetzt hat, kennt sicherlich das HTML-Attribut &#8220;<a href="http://www.w3.org/TR/html5/elements.html#the-dir-attribute">dir</a>&#8220;, das man z.B. im body-Tag einfügen kann um die Leserichtig des Dokuments von links-nach-rechts auf rechts-nach-links zu ändern. In CSS ist die Anweisung &#8220;direction&#8221; dafür zuständig. Für beide Möglichkeiten kann man die Werte &#8220;rtl&#8221; (right-to-left) oder &#8220;ltr&#8221; (left-to-right) sowie &#8220;auto&#8221; angeben.</p>
<p>Hat man im Layout, runde Ecken (border-radius) nur an einer Seite, z.B. rechts abgerundet, dann sind im IE9 die Ecken allerdings links abgerundet. Der IE9 dreht von sich aus die runden Ecken im RTL-Modus um. Das ist zwar nett vom IE9, aber nicht richtig und auch nicht immer gewollt. Bei gleichmäßig abgerundeten Ecken kann man den Bug natürlich nicht nachvollziehen, deshalb fällt er selten auf. <span id="more-1657"></span></p>
<p>Hier mal ein jsFiddle-Beispiel:<br />
<iframe style="width: 100%; height: 350px" src="http://jsfiddle.net/maddesigns/HuDRp/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>Im IE9 sieht das allerdings so aus (Screenshot):<br />
<a href="http://jsfiddle.net/maddesigns/HuDRp/embedded/result/"><img src="http://maddesigns.de/wp-content/uploads/2012/03/IE9_RTL_Bug.png" alt="" title="IE9_RTL_Bug" width="318" height="221" class="alignright size-full wp-image-1673" style="margin-right: 40px;" /></a><br />
<br style="clear: both" /><br />
<strong style="clear: both"><br />
Der simplifizierte HTML-Aufbau:</strong></p>
<pre>
&lt;body dir="rtl">
    &lt;div class="box"> right to left &lt;/div>
&lt;/body>
</pre>
<p><strong>CSS:</strong></p>
<pre>
.box {
    background-color: red;
    padding: 48px;
    height: 100px;
    width: 200px;
    margin: 40px;
    border-radius: 0 48px 48px 0;
}
</pre>
<p>Den Bug muss man nun per Conditional-Comments für den IE9 entgegnen und die angerundeten Ecken &#8220;umdrehen&#8221;:</p>
<pre>
&lt;!--[if IE 9]>
  &lt;style>
    body[dir="rtl"] .box  {
      border-radius: 48px 0 0 48px; /* switched from left to right */
    }
  &lt;/style>
&lt;![endif]-->
</pre>
<p>Im IE10 ist der Bug bis zum Build 8250 auch noch nachzuvollziehen.<br />
Den Bug hat <a href="http://twitter.com/#!/herzogkienast">Andrea Herzog-Kienast</a> entdeckt und ich kann das Verhalten leider nur bestätigen. </p>
<div id="tweetbutton1657" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fie9-border-radius-direction-rtl-bug-1657.html&amp;via=maddesigns&amp;text=IE9%20border-radius%20right-to-left%20%28direction%3A%20rtl%29%20Bug&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fie9-border-radius-direction-rtl-bug-1657.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/border-radius-runde-ecken-css3-adventskalender-tag-1-288.html' rel='bookmark' title='border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1'>border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1</a></li>
<li><a href='http://maddesigns.de/ie9-mit-css3-border-radius-und-linear-gradient-problemen-813.html' rel='bookmark' title='IE9 mit CSS3 border-radius und linear-gradient Problemen'>IE9 mit CSS3 border-radius und linear-gradient Problemen</a></li>
<li><a href='http://maddesigns.de/fun-with-border-radius-css-sprechblasen-css3-adventskalender-tag-23-692.html' rel='bookmark' title='Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23'>Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/ie9-border-radius-direction-rtl-bug-1657.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Livereload &#8211; ein Browser Refresh Tool</title>
		<link>http://maddesigns.de/livereload-browser-refresh-tool-1640.html</link>
		<comments>http://maddesigns.de/livereload-browser-refresh-tool-1640.html#comments</comments>
		<pubDate>Mon, 12 Mar 2012 14:08:59 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[livereload]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[refresh]]></category>
		<category><![CDATA[reload]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1640</guid>
		<description><![CDATA[Wer kennt es nicht… man entwickelt in der IDE oder noch besser geeignet für Frontend-Entwicklung im Texteditor Sublime Text 2 und switcht dann zum Browser um die Änderungen anschließend zu überprüfen. Dazu muss man im Browser ein Reload durchführen. Livereload ist ein kleines aber sehr hilfreiches Tool für Mac (Windows in Beta-Status) was diesen Prozess [...]]]></description>
			<content:encoded><![CDATA[<p>Wer kennt es nicht… man entwickelt in der IDE oder noch besser geeignet für Frontend-Entwicklung im Texteditor <a href="http://www.sublimetext.com/2" title="Sublime Text 2">Sublime Text 2</a> und switcht dann zum Browser um die Änderungen anschließend zu überprüfen. Dazu muss man im Browser ein Reload durchführen. <a href="http://livereload.com/" title="Livereload">Livereload</a> ist ein kleines aber sehr hilfreiches Tool für Mac (Windows in Beta-Status) was diesen Prozess beschleunigt.</p>
<p><strong>Livereload</strong> erkennt Änderungen im Projektordner beim Speichern einer Datei. Ein Browser-Plugin für Chrome (oder Firefox, Safari, Mobile Safari) führt dann umgehend im Hintergrund den Refresh/Reload durch. Das erspart natürlich einige Tastenanschläge/Mausklicks. Auf größeren Bildschirmen ist es praktisch, wenn man die beiden Fenster parallel positioniert und dann die Änderung am HTML oder CSS direkt im Blick hat.<br />
<span id="more-1640"></span></p>
<p><a href="http://maddesigns.de/wp-content/uploads/2012/03/screenshot1.png"><img src="http://maddesigns.de/wp-content/uploads/2012/03/screenshot1-e1331561498181.png" alt="" title="screenshot" width="520" height="366" class="alignnone size-full wp-image-1652" /></a><br />
Das wäre schon schön genug, aber Livereload bietet noch mehr. Es kann auch Sass-, LESS- oder Stylus- sowie CoffeeScript-Dateien kompilieren und dann den Browser-Reload durchführen. Zudem können auch &#8220;Refresh-Pausen&#8221; eingestellt werden. Das ist hilfreich, wenn man z.B. die geänderten Dateien beim Speichern direkt auf den Webserver hochlädt und die Änderung dort betrachtet. Diesen Zeitinterval kann man als Wartezeit zum Live-Reload konfigurieren.</p>
<p>Das Mac-Tool ist nach der Beta-Phase nun im App-Store erhältlich und kostet $9.99. Ich kann das Tool nur jedem empfehlen und habe von <a href="https://twitter.com/#!/livereload/" title="Livereload Twitter">@livereload</a> 2 Promo-Codes für meine Leser erhalten. Um zu gewinnen einfach einen Kommentar abgeben!</p>
<div id="tweetbutton1640" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Flivereload-browser-refresh-tool-1640.html&amp;via=maddesigns&amp;text=Livereload%20%26%238211%3B%20ein%20Browser%20Refresh%20Tool&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Flivereload-browser-refresh-tool-1640.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/livereload-browser-refresh-tool-1640.html/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Das große Weihnachtsgewinnspiel &#8211; Tag 24 im CSS3 Adventskalender 2011</title>
		<link>http://maddesigns.de/das-grose-weihnachtsgewinnspiel-tag-24-im-css3-adventskalender-2011-1625.html</link>
		<comments>http://maddesigns.de/das-grose-weihnachtsgewinnspiel-tag-24-im-css3-adventskalender-2011-1625.html#comments</comments>
		<pubDate>Sat, 24 Dec 2011 11:33:33 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1625</guid>
		<description><![CDATA[…im Webstandard Blog. Großartige Preise haben uns www.galileo-videotrainings.de, www.galileo-press.de, www.addison-wesley.de, www.oreilly.de und www.webstandards-magazin.de zur Verlosung an die Leser des CSS3 Adventskalender zur Verfügung bestellt. Was man muss tun, um gewinnen zu können?! …wird im Webstandard-Blog erklärt: Das große Weihnachtsgewinnspiel Allen Teilnehmern viel Spaß, Glück &#038; natürlich auch Erfolg! TweetRelated posts: CSS3 Adventskalender 2011 CSS3 Adventskalender [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-12-1435.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 12'>CSS3 Adventskalender 2011 – Tag 12</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-24-726.html' rel='bookmark' title='CSS3 Adventskalender Tag 24'>CSS3 Adventskalender Tag 24</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im <a href="http://webstandard.kulando.de/" title="Webstandard Blog">Webstandard Blog</a>.<br />
Großartige Preise haben uns <a href="http://www.galileo-videotrainings.de" title="Galileo Videotrainings">www.galileo-videotrainings.de</a>, <a href="http://www.galileo-press.de" title="Galileo Verlag">www.galileo-press.de</a>, <a href="http://www.addison-wesley.de" title="Addison-Wesley (Pearson)">www.addison-wesley.de</a>, <a href="http://www.oreilly.de/" title="O'Reilly Verlag">www.oreilly.de</a> und <a href="http://www.webstandards-magazin.de" title="Webstandards Magazin">www.webstandards-magazin.de</a> zur Verlosung an die Leser des CSS3 Adventskalender zur Verfügung bestellt.</p>
<h3>Was man muss tun, um gewinnen zu können?!</h3>
<p>…wird im Webstandard-Blog erklärt: <a href="http://webstandard.kulando.de/post/2011/12/23/das-grosse-weihnachtsgewinnspiel-tag-24-im-css3-adventskalender-2011" title="Weihnachtsgewinnspiel">Das große Weihnachtsgewinnspiel</a></p>
<p>Allen Teilnehmern viel Spaß, Glück &#038; natürlich auch Erfolg!</p>
<div id="tweetbutton1625" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fdas-grose-weihnachtsgewinnspiel-tag-24-im-css3-adventskalender-2011-1625.html&amp;via=maddesigns&amp;text=Das%20gro%C3%9Fe%20Weihnachtsgewinnspiel%20%26%238211%3B%20Tag%2024%20im%20CSS3%20Adventskalender%202011&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fdas-grose-weihnachtsgewinnspiel-tag-24-im-css3-adventskalender-2011-1625.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-12-1435.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 12'>CSS3 Adventskalender 2011 – Tag 12</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-24-726.html' rel='bookmark' title='CSS3 Adventskalender Tag 24'>CSS3 Adventskalender Tag 24</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/das-grose-weihnachtsgewinnspiel-tag-24-im-css3-adventskalender-2011-1625.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Box-Sizing – CSS3 Adventskalender Tag 23</title>
		<link>http://maddesigns.de/box-sizing-1597.html</link>
		<comments>http://maddesigns.de/box-sizing-1597.html#comments</comments>
		<pubDate>Fri, 23 Dec 2011 07:00:32 +0000</pubDate>
		<dc:creator>Hans Christian Reinl</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[box-sizing]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1597</guid>
		<description><![CDATA[Einer der am meist bekannten vermeintlichen &#8220;Bugs&#8221; der richtig alten Internet Explorer Versionen (IE6 in &#8220;Quirks Mode&#8221; oder älter) ist sicherlich die Darstellung von Elementen mit einer bestimmten Breite (width) und definiertem Innenabstand (padding): Der Box-Modell-Fehler. Jeder andere Browser interpretiert ein Block-Element (wie beispielsweise ein p&#8211; oder div-Element) mit einer Breite von 200 Pixeln, einem [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-gradient-border-1141.html' rel='bookmark' title='Gradient Border – CSS3 Adventskalender Tag 1'>Gradient Border – CSS3 Adventskalender Tag 1</a></li>
<li><a href='http://maddesigns.de/teaserboxen-komplett-ohne-bilder-css3-adventskalender-tag-9-489.html' rel='bookmark' title='Teaserboxen komplett ohne Bilder &#8211; CSS3 Adventskalender Tag 9'>Teaserboxen komplett ohne Bilder &#8211; CSS3 Adventskalender Tag 9</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Einer der am meist bekannten vermeintlichen &ldquo;Bugs&rdquo; der richtig alten Internet Explorer Versionen (IE6 in &ldquo;Quirks Mode&rdquo; oder älter) ist sicherlich die Darstellung von Elementen mit einer bestimmten Breite (<code>width</code>) und definiertem Innenabstand (<code>padding</code>):<br /> <a href="http://de.wikipedia.org/wiki/Box-Modell-Fehler_im_Internet_Explorer">Der Box-Modell-Fehler</a>.</p>
<p><span id="more-1597"></span></p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/W3C_and_Internet_Explorer_box_models.png" title="&copy; CC by Will Pittenger / http://de.wikipedia.org/w/index.php?title=Datei:W3C_and_Internet_Explorer_box_models.svg&amp;filetimestamp=20090912075240" alt="Das W3C und das Internet Explorer Box Modell" /></p>
<p>Jeder andere Browser interpretiert ein Block-Element (wie beispielsweise ein <code>p</code>&ndash; oder <code>div</code>-Element) mit einer Breite von 200 Pixeln, einem Innenabstand von 10 Pixeln und einem Rahmen mit jeweils 5 Pixeln Breite wie folgt:</p>
<p><strong>200px Breite + 2x10px Padding + 2x5px Border = 230px Gesamtbreite</strong></p>
<p>Eigentlich ein bisschen komisch, wenn man mal drüber nachdenkt: Man definiert die Breite eines Elementes, welches einen bestimmten Inhalt hat. Man stellt fest, dass der Inhalt genau mit der Breite der Box abschließt, was eventuell nicht so gut aussieht und entschließt sich einen Abstand hinzuzufügen. Auf einmal ist die Box allerdings viel breiter, als die Breite die man zuvor definiert hat. Um diesem Problem zu begegnen muss man also jedes mal, wenn man den Innenabstand eines Elements ändert auch die Breite entsprechend anpassen.</p>
<p>Microsoft dachte sich damals, dass es viel intuitiver ist, wenn der Abstand vom Browser in die Breite des Elements eingerechnet wird. Fand irgendwie keiner cool – außer Microsoft.</p>
<p>Das Web entwickelte sich weiter und mit CSS3 wurde der Gedanke von Microsoft wieder aufgegriffen und die Eigenschaft <code>box-sizing</code> eingeführt.<br />
<code>box-sizing</code> definiert, wie sich ein Element in seiner Breite verhalten soll. Diese Eigenschaft ist schon seit einiger Zeit in den meisten Browsern standardisiert, wird allerdings trotzdem häufig vergessen.</p>
<h2>Eigenschaftswerte</h2>
<p>Es gibt zwei Werte, die von der <a href="http://www.w3.org/TR/css3-ui/#box-sizing">CSS3 Spezifikation</a> für das &ldquo;CSS3 Basic User Interface Module&rdquo; standardisiert sind. Das sind <code>content-box</code> und <code>border-box</code>. Der Wert <code>content-box</code> ist dabei das in CSS2 bereits standardisierte Box-Modell; wobei <code>border-box</code> sich auf das Box-Modell des alten Internet Explorer bezieht.</p>
<p><a href="http://www.peterkroener.de/test/box-sizing.html">Eine Demo</a> der beiden verschiedenen Werte hat <a href="http://workingdraft.de/">Workingdraft</a>-Kollege <a href="http://www.peterkroener.de/">Peter Kröner</a> bereits in <a href="http://www.peterkroener.de/schoenes-neues-css-box-sizing/">seinem Artikel</a> zum Thema gezeigt.</p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/W3C_and_padding_box_models.png" title="&copy; CC by Will Pittenger / http://de.wikipedia.org/w/index.php?title=Datei:W3C_and_Internet_Explorer_box_models.svg&amp;filetimestamp=20090912075240" alt="Das Content-Box und das Padding-Box Modell" /></p>
<p>Mozillas Implementierung von <code>box-sizing</code> bietet zusätzlich noch den Wert <code>padding-box</code> an, der praktisch einen Zwischenwert der beiden anderen Werte bietet: Die Rahmen-Breite (<code>border-width</code>) wird nicht mit zur Gesamtbreite hinzugerechnet, jedoch der Innenabstand.</p>
<h2>Browsersupport</h2>
<p>Das ist klasse: <code>box-sizing</code> wird von <a href="http://caniuse.com/css3-boxsizing">fast allen Browsern unterstützt</a>.</p>
<p>Einige Besonderheiten gibt es allerdings: Im Mozilla Firefox braucht man immer noch das <code>-moz</code>-Vendor-Prefix. Es gibt seit langer Zeit <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=243412">diesen Bug</a> der aber leider in der Standard-Version – ohne Prefix – immer noch nicht implementiert ist. Für den Internet Explorer 8 ist das <code>-ms</code>-Prefix nötig. Ältere Versionen des Internet Explorers unterstützen diese Eigenschaft nicht. Erstaunlicherweise wird sie allerdings von <a href="http://caniuse.com/css3-boxsizing">allen mobilen Browsern</a> vollständig unterstützt.</p>
<p><img src="http://maddesigns.de/wp-content/uploads/2010/12/browserChoice-maddesigns.jpg" alt="" title="browserChoice-maddesigns" width="521" height="115" class="alignnone size-full wp-image-532" /></p>
<p>Der Vollständigkeit halber sei erwähnt, dass es auch für diese Eigenschaft einen Polyfill gibt. Er wurde von <a href="https://twitter.com/#!/derSchepp">Christian Schäfer</a> entwickelt, der ja <a href="http://maddesigns.de/schonere-css3-transforms-%E2%80%93-css3-adventskalender-tag-5-1227.html">auch</a> <a href="http://maddesigns.de/css3-filter-1525.html">schon</a> beim CSS3-Adventskalender dieses Jahr geschrieben hat und ist <a href="https://github.com/Schepp/box-sizing-polyfill">auf GitHub</a> zu finden. Für alle Entwickler, die sich mit den älteren IE-Versionen beschäftigen müssen, sicherlich sehr hilfreich.</p>
<h2>Fazit</h2>
<p>Durch den optimalen Browsersupport der Eigenschaft kann diese ohne Bedenken eingesetzt werden. Wer oldIE supportet sollte sich allerdings über den Einsatz eines Polyfills Gedanken machen. Oft ist aber die pixel-genaue Darstellung in älteren Browsern <a href="http://drublic.de/blog/wo-sind-meine-abgerundeten-ecken/">gar nicht nötig</a>.</p>
<hr />
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/blog-hans-min.jpg" alt="" width="110" height="110" class="alignleft size-thumbnail wp-image-1241" style="margin-right: 12px" /><strong>Hans Christian Reinl</strong> ist heute unser Gastautor im CSS3 Adventskalender. Hans ist Frontend Webdeveloper und arbeitet gerade in Freiburg bei der Agentur <a href="http://gebruederheitz.de/">/gebrüderheitz</a> sowie als Freiberufler.<br />
In seinem Blog <a href="http://drublic.de/blog/">drublic.de</a> schreibt er auf englisch einiges über Cutting-Edge-Webtechnologien. Auf Twitter ist er als <a href="https://twitter.com/#!/drublic">@drublic</a> unterwegs und auf <a href="https://plus.google.com/112019818423540363330/">Google+</a> sowie <a href="https://github.com/drublic">GitHub</a> zu finden.<br style="clear:both" /></p>
<hr />
<p>Für Fragen stehe ich gerne zur Verfügung. Schreibt einfach einen Kommentar oder haut mich <a href="https://twitter.com/#!/drublic">auf Twitter</a> an.</p>
<h2>Weiterführende Informationen</h2>
<p>Weiterführende Informationen zu <code>box-sizing</code> finden sich <a href="https://developer.mozilla.org/En/CSS/Box-sizing">im MDN</a> und in <a href="http://css-tricks.com/box-sizing/">Chris Coyiers Artikel</a> zum Thema. Auch PPK hat <a href="http://www.quirksmode.org/css/box.html">darüber gebloggt</a>.</p>
<div id="tweetbutton1597" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fbox-sizing-1597.html&amp;via=maddesigns&amp;text=Box-Sizing%20%E2%80%93%20CSS3%20Adventskalender%20Tag%2023&amp;related=drublic&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fbox-sizing-1597.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-gradient-border-1141.html' rel='bookmark' title='Gradient Border – CSS3 Adventskalender Tag 1'>Gradient Border – CSS3 Adventskalender Tag 1</a></li>
<li><a href='http://maddesigns.de/teaserboxen-komplett-ohne-bilder-css3-adventskalender-tag-9-489.html' rel='bookmark' title='Teaserboxen komplett ohne Bilder &#8211; CSS3 Adventskalender Tag 9'>Teaserboxen komplett ohne Bilder &#8211; CSS3 Adventskalender Tag 9</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/box-sizing-1597.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 22</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-22-1591.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-22-1591.html#comments</comments>
		<pubDate>Thu, 22 Dec 2011 07:09:24 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[CSS4]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1591</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS4 &#8211; Die Zukunft des Webdesign“ TweetRelated posts: CSS3 Adventskalender 2011 – Tag 4 CSS3 Adventskalender 2011 – Tag 6 CSS3 Adventskalender 2011 – Tag 14
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 14'>CSS3 Adventskalender 2011 – Tag 14</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/21/css4-die-zukunft-des-webdesign-tag-22-im-css3-adventskalender-2011">CSS4 &#8211; Die Zukunft des Webdesign</a>“</p>
<div id="tweetbutton1591" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-22-1591.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%2022&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-22-1591.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 14'>CSS3 Adventskalender 2011 – Tag 14</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-22-1591.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fortgeschrittene Webtypografie mit Canvas und CSS – CSS3 Adventskalender Tag 21</title>
		<link>http://maddesigns.de/fortgeschrittene-webtypografie-mit-canvas-und-css-2-1561.html</link>
		<comments>http://maddesigns.de/fortgeschrittene-webtypografie-mit-canvas-und-css-2-1561.html#comments</comments>
		<pubDate>Wed, 21 Dec 2011 07:06:54 +0000</pubDate>
		<dc:creator>Dirk Weber</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1561</guid>
		<description><![CDATA[Die letzten 3 Jahre haben uns Designern aufregende neue Möglichkeiten für die typografische Gestaltung von Schrift im Internet geschenkt. Schriften über @font-face direkt ins Dokument einzubinden ist mittlerweile zur Selbstverständlichkeit geworden, neue CSS Filter und Transformationen haben unser gestalterisches Vokabular entscheidend erweitert. Darüber hinaus versprechen neue CSS Eigenschaften wie &#8220;mask-image&#8221; (derzeit nur Webkit) und Javascript [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-6-446.html' rel='bookmark' title='CSS3 Adventskalender Tag 6'>CSS3 Adventskalender Tag 6</a></li>
<li><a href='http://maddesigns.de/css3-tabellen-ubersicht-css3-adventskalender-tag-15-594.html' rel='bookmark' title='CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15'>CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15</a></li>
<li><a href='http://maddesigns.de/last-child-first-child-selektoren-css3-adventskalender-tag-11-514.html' rel='bookmark' title=':last-child / :first-child Selektoren &#8211; CSS3 Adventskalender Tag 11'>:last-child / :first-child Selektoren &#8211; CSS3 Adventskalender Tag 11</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Die letzten 3 Jahre haben uns Designern aufregende neue Möglichkeiten für die typografische Gestaltung von Schrift im Internet geschenkt. Schriften über <code>@font-face</code> direkt ins Dokument einzubinden ist mittlerweile zur Selbstverständlichkeit geworden, neue <a href="http://maddesigns.de/css3-filter-1525.html" title="CSS-Filter – mehr Effekte fürs Web – CSS3 Adventskalender Tag 19">CSS Filter</a> und <a href="http://maddesigns.de/schonere-css3-transforms-%e2%80%93-css3-adventskalender-tag-5-1227.html" title="Schönere CSS3 Transforms – CSS3 Adventskalender Tag 5">Transformationen</a> haben unser gestalterisches Vokabular entscheidend erweitert. Darüber hinaus versprechen neue CSS Eigenschaften wie &#8220;<code>mask-image</code>&#8221; (derzeit nur Webkit) und Javascript Libraries wie <a href="http://letteringjs.com/">lettering.js</a> nie dagewesene Kontrolle über die Schriftdarstellung im Web.</p>
<p>Und trotzdem reichen alle diese Lösungen noch immer bei weitem nicht aus, um an die Grenzen des Möglichen zu kommen. Jeder, der einmal versucht hat, einen HTML-Text mit einem Verlauf zu füllen, weiss wovon ich rede.</p>
<p>Ich möchte hier eine Methode vorstellen, die zu Unrecht noch nicht die Beachtung gefunden hat, die Sie verdient: das Gestalten von Text mit der HTML5 Canvas.<br />
<span id="more-1561"></span><br />
Dass die Canvas über viele aufregende typografische Methoden verfügt, hat sich bisher kaum herumgesprochen. Wahrscheinlich liegt das daran, dass sie bisher eher als Domäne der Spieleentwickler wahrgenommen wurde. Das ist Schade, denn Sie bietet uns Möglichkeiten, die weit über die klassischen Methoden die CSS zu bieten hat hinausgehen und das auch noch in allen modernen Browsern: Verläufe oder Bitmaps in Füllung und Outline, Masken, Schatten, Blendmodes sind nur einige ihrer Methoden. </p>
<p>Ich werde zu Beginn die Textwerkzeuge der Canvas API zu Schriftgestaltung vorstellen und im zweiten Teil zeigen, wie sich diese Methoden nutzen lassen um aufregende, barrierefreie und suchmaschinenfreundliche Webtypografie zu erzeugen.</p>
<h3>1. Die Textfunktionen der Canvas</h3>
<p>Ich setze voraus, dass Ihr schon wisst wie man eine Canvas in einem HTML Dokument erstellt und anspricht.</p>
<p>Eine bestehende Canvas (wir haben den Kontext wie meist üblich mit &#8220;ctx&#8221; bezeichnet) muss zunächst vorbereitet werden. Mit der Anweisung &#8220;Font&#8221; legen wir fest, welche Schrift in welcher Größe wir verwenden wollen:</p>
<pre>
ctx.font = "50px  'Helvetica' ";
</pre>
<p>Weiterhin müssen wir festlegen, wie die Grundlinie verankert werden soll. Fünf Möglichkeiten stehen zur Auswahl:<br />
&#8220;<code>top</code>&#8220;, &#8220;<code>hinging</code>&#8220;, &#8220;<code>middle</code>&#8220;, &#8220;<code>alphabetic</code>&#8220;, &#8220;<code>demographic</code>&#8220;, &#8220;<code>bottom</code>&#8220;.  Die Entscheidung fällt uns leicht: bis auf &#8220;<code>alphabetic</code>&#8221; werden alle Ausrichtungen von jedem Browser anders interpretiert Die Anweisung lautet somit:</p>
<pre>
ctx.textBaseline = 'alphabetic';
</pre>
<p>Für Typografen sicherlich von Interesse ist die Möglichkeit für die gesamte Canvas eine Skalierung festzulegen. Gut zu wissen für den Fall, dass man mal für hochauflösende Displays entwickelt:</p>
<pre>
ctx.scale(1,1);
</pre>
<p>Bleibt zu klären, wie wir unseren Text füllen möchten. Zur Auswahl stehen solide Farben, Verläufe oder Bitmap-Muster. Der Einfachheit halber starten wir mal mit einer Farbe:</p>
<pre>
ctx.fillStyle = "#ff0000";
</pre>
<p>Die einfachste Methode, Text in eine bestehende Canvas zu schreiben ist die Methode &#8220;<code>fillText</code>&#8220;. Die folgende Methode schreibt &#8220;Hallo Welt&#8221; in die Canvas, 50px von rechts und eine 100px von oben verschobene Grundlinie:</p>
<pre>
ctx.fillText("Hallo Welt", 50, 100);
</pre>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/DirkWeber/dWqwG/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>Neben der &#8220;<code>fillText</code>&#8221; Methode können mit der Methode &#8220;<code>textStroke</code>&#8221; auch Umrisslinien gezeichnet werden:</p>
<pre>
ctx.lineWidth = 3;
ctx.strokeStyle = "#0000ff";
ctx.textStroke("Hallo Welt", 50, 100);
</pre>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/DirkWeber/49Dxe/1/embedded/result" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<h4>Verläufe</h4>
<p>Um anstelle einer soliden Farbe eine Verlaufsfüllung zu verwenden, muss diese vorher definiert werden. Das geschieht in 2 Schritten:<br />
<strong><br />
1: Start- und Endpunkt festlegen:</strong></p>
<pre>
var gradient = ctx.createLinearGradient(0, 0, 200, 50);
</pre>
<p>Hier haben wir einen Verlauf mit dem Startpunkt (x:0, y:0) und dem Endpunkt (x:200, y: 50) definiert. </p>
<p><strong>2. Color-Stops hinzufügen.</strong> </p>
<p>So sähe es aus, wenn wir einen Verlauf von weiss(0%) nach schwarz(50%) nach rot(100%) festlegen wollten:</p>
<pre>
gradient.addColorStop(0, 'white');
gradient.addColorStop(0.5, 'black');
gradient.addColorStop(1, 'red');
</pre>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/DirkWeber/V5FaB/1/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<h4>Bitmapfüllungen</h4>
<p>Bitmaps können ebenfalls als Füllungen verwendet werden. In dem meisten Fällen wird man ein jpg oder png verwenden, aber es lassen sich auch interessante Effekte erzielen, indem man dynamisch in einer Canvas generierte Bilder als Füllung einsetzt. </p>
<pre>
var img = new Image(),pattern;
img.src	= "img/myimage.jpg";
img.onload = function(){
  pattern = ctx.createPattern(img, "repeat");
}
</pre>
<p>Hier ist zu beachten, dass wir unbedingt warten müssen bis das Bild vom Server geladen wurde, bevor wir das Muster in der Canvas verwenden.</p>
<p>Das schöne an Verläufen und Mustern ist, dass Sie nicht nur in Textfüllungen sondern auch auf Outlines verwendet werden können. Es lassen sich somit einige beeindruckende Effekte erzielen:</p>
<pre>
ctx.strokeStyle = gradient;
ctx.strokeText("Hallo Welt", 50, 100);
ctx.fillStyle = pattern;
ctx.fillText("Hallo Welt", 50, 100);
</pre>
<h4>Schatten</h4>
<p>Die Canvas bietet auch die Möglichkeit, Schatten zu erzeugen. Ein Schatten mit 50% Opazität, 5px Versatz und einem Blur von 7 Pixeln sieht so aus:</p>
<pre>
ctx.shadowColor = “rgba(0,0,0,0.5)”;
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.shadowBlur = 7;
</pre>
<p>Wurde dem Kontext einmal Schatten zugewiesen, wird dieser fortan auf alle weiteren Zeichenoperationen angewendet. Wenn man ihn nicht mehr benötigt, sollte man ihn deswegen zurücksetzen:</p>
<pre>
ctx.shadowColor		= "rgba(0,0,0,0)";
ctx.shadowOffsetX 	= 0;
ctx.shadowOffsetY 	= 0;
ctx.shadowBlur 		= 0;
</pre>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/DirkWeber/nnqc8/1/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>Bei dieser kurzen Übersicht über die gängigsten Textzeichenmethoden der Canvas möchte ich es hier belassen. Leider konnte ich nur an der Oberfläche kratzen, welche Vielfalt an Möglichkeiten darüber hinaus bestehen. So lassen sich z. B. mit der Methode globalCompositeOperation BlendModes für Zeichenvorgänge festlegen, die Methode <code>clip()</code> erlaubt es uns, Shapes als Masken zu verwenden. Gute weiterführende Infos finden sich natürlich bei <a href="https://developer.mozilla.org/en/Canvas_tutorial" title="Canvas Tutorial">Mozilla</a> und in der <a href="Link: http://developer.apple.com/library/safari/#documentation/AudioVideo/Conceptual/HTML-canvas-guide/Introduction/Introduction.html" title="HTML5 Canvas">Safari Developer Library</a>.</p>
<h3>Canvas mit CSS verbinden:</h3>
<p>Wir haben gelernt, wie die Canvas genutzt werden kann um Texte mit einer Vielzahl von Effekten zu versehen. Leider ist die Canvas eine semantisch bedeutungslose Ansammlung von Pixeln. Textliche Inhalte sind von aussen nicht lesbar und eine Trennung von Präsentations- und Inhaltsebene findet nicht statt. Wie können wir die Möglichkeiten der Canvas innerhalb eines HTML Dokumentes so einsetzen, dass Semantik und Maschinenlesbarkeit eines Textes erhalten bleiben? Wie lässt sich Barrierefreiheit erzielen?</p>
<p>Nachdem ich nun schon einige Male mit dieser Methode in Berührung gekommen bin, hat sich für mich der folgende Weg als der praktikabelste herausgestellt:</p>
<ol>
<li>Ermittle den Textinhalt und die Textmetrik des Elementes dessen Typografie verändert werden soll.</li>
<li>Erstelle die Canvas Grafik mit dem ermittelten Text.</li>
<li>
Weise dem Element die Grafik als Hintergrundbild zu</li>
<li>
Mach den HTML Text des Elementes transparent, damit er nicht mehr zu sehen ist, aber selektiert und kopiert werden kann und für Crawler und Screenreader zur Verfügung steht</li>
</ol>
<p>EIn Beispiel macht den Prozess verständlich: nehmen wir an, auf einer Website befindet sich eine <code>&lt;h2></code> der folgender CSS Stil zugewiesen ist:</p>
<pre>
#headline{
	font-family: 'Helvetics', sans-serif;
	font-size: 40px;
}
</pre>
<p>zuerst ermitteln wir Stileigenschaften und Textinhalt:</p>
<pre>
var elem = documentGetElementById("headline"),
    text = elem.textContent,
    style = document.defaultView.getComputedStyle(elem, null),
    font = style.getPropertyValue("font-family").match(/^[^,]*/gi).replace(/['"]*/gfont,""),
    size = parseFloat(style.getPropertyValue("font-size")),
    topPadding=parseFloat(style.getPropertyValue("padding-top")),
    leftPadding=parseFloat(style.getPropertyValue("padding-left"));
</pre>
<p>Jetzt wird&#8217;s kompliziert: damit wir den Text in der Canvas deckungsgleich mit dem HTML Text auf dieselbe Grundlinie setzen können, müssen wir diese Grundlinie mit einem komplizierten Trick ermitteln. Ich werde nur kurz beschreiben, wie die Technik funktioniert, wer mehr wissen will, sollte am besten die Source zu diesem Beispiel studieren: </p>
<p>Zuerst müssen wir mit Javascript ein Element mit denselben Texteigenschaften wie unser <code>&lt;h2></code> ins Dokument schreiben, In dieses Element hängen wir nun ein 1 x 1 Pixel Bild mit der CSS-Eigenschaft vertical-align: baseline. Wir lesen die offsetTop Eigenschaft dieses Bildes aus und haben mit diesem Wert auch die Position der Baseline. Natürlich entfernen wir unsere Testelemente nachher wieder ordentlich.</p>
<p>Nun können wir die Canvas erstellen und der <code>&lt;h2></code> als Hintergrundbild zuordnen:</p>
<pre>
var canvas = document.createElement("canvas"),
    top = topPadding+height;

if (this.canvas.getContext) {
  var ctx = canvas.getContext('2d');
  ctx.font = size+"px '"+font+"'";
  ctx.textBaseline = 'alphabetic';
  ctx.scale(1,1);
  ctx.fillStyle = "green";
  ctx.fillText (txt, Padding, top);

  var img = canvas.toDataURL();
  elem.style.color="rgba(0,0,0,0.0)";
  elem.style.backgroundImage="url("+img+")";
}
</pre>
<p>Im vorliegenden Fall wurde eine einfarbige Schrift durch eine einfarbige Schrift ersetzt. Das macht natürlich außer zu Demonstrationszwecken keinen Sinn. </p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/DirkWeber/zgQre/5/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>Diese kleine Galerie zeigt aber, welche Möglichkeiten uns diese Methode sonst noch eröffnet. Die Beispiele wurden mit <strong>fontastiq.js</strong> erstellt, einer Javascript Library für Schriftmanipulation mittels Canvas an der ich zurzeit arbeite und die Ihr auf Github Forken könnt sobald ich die gröbsten Kinderkrankheiten entfernt habe.</p>
<p>Selbstverständlich muss man sich nicht nur mit den Standardfunktionen der Canvas zufrieden geben. Schließlich gibt es mittlerweile eine große Zahl an Javascript Libraries zur Grafikmanipulation wie z.B.: <a href="http://www.pixastic.com/">Pixastic</a>, <a href="https://github.com/mezzoblue/PaintbrushJS">paintbrush.js</a>, <a href="http://camanjs.com/">Caman.js</a> oder <a href="http://peternitsch.net/bitmapdata.js/">Bitmapdata.js</a>, mit denen sich aufregende Effekte erzielen lassen. Ich hoffe jedenfalls, dass dieser kurze Artikel Euch einige Anregungen geben konnte um weitere ausgefallene typografische Effekte zu schaffen.</p>
<hr />
<img src="http://maddesigns.de/wp-content/uploads/2011/12/dirk-weber.jpg" alt="" title="dirk-weber" width="150" height="150" class="alignleft size-full wp-image-1581" style="margin-right: 12px;" />Gastautor <strong>Dirk Weber (eleqtriq)</strong> ist Interfacedesigner und Webentwickler im schönen Hilden bei Düsseldorf. Dirk schreibt in seinem Blog <a href="http://www.eleqtriq.com/de/" title="Blog von Dirk Weber">www.eleqtriq.com/de/</a> über Webstandards, UX und Flash. Eines seiner Projekte ist <a href="http://csswarp.eleqtriq.com/" title="CSS3Warp">CSS3Warp</a> ein Text-to-Path Generator. Dirk <a href="http://twitter.com/#!/DirkWeber" title="Dirk Weber bei Twitter">twittert</a> zudem aktiv über seine Projekte. <br style="clear: both" /></p>
<hr />
<h3>Demo</h3>
<p>Welche Möglichkeiten sich daraus ergeben, wird in der <a href="http://www.eleqtriq.com/wp-content/static/demos/2011/fontastiq/" title="Canvas CSS3 Demo">Canvas-Demo</a> deutlich.<br />
<iframe style="width: 100%; height: 950px" src="http://www.eleqtriq.com/wp-content/static/demos/2011/fontastiq/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<div id="tweetbutton1561" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Ffortgeschrittene-webtypografie-mit-canvas-und-css-2-1561.html&amp;via=maddesigns&amp;text=Fortgeschrittene%20Webtypografie%20mit%20Canvas%20und%20CSS%20%E2%80%93%20CSS3%20Adventskalender%20Tag%2021&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Ffortgeschrittene-webtypografie-mit-canvas-und-css-2-1561.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-6-446.html' rel='bookmark' title='CSS3 Adventskalender Tag 6'>CSS3 Adventskalender Tag 6</a></li>
<li><a href='http://maddesigns.de/css3-tabellen-ubersicht-css3-adventskalender-tag-15-594.html' rel='bookmark' title='CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15'>CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15</a></li>
<li><a href='http://maddesigns.de/last-child-first-child-selektoren-css3-adventskalender-tag-11-514.html' rel='bookmark' title=':last-child / :first-child Selektoren &#8211; CSS3 Adventskalender Tag 11'>:last-child / :first-child Selektoren &#8211; CSS3 Adventskalender Tag 11</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/fortgeschrittene-webtypografie-mit-canvas-und-css-2-1561.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 20</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-20-1588.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-20-1588.html#comments</comments>
		<pubDate>Tue, 20 Dec 2011 07:00:59 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[count]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1588</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS3 Count &#8211; HTML Elemente nummerieren“ TweetRelated posts: CSS3 Adventskalender 2011 – Tag 4 CSS3 Adventskalender 2011 – Tag 6 CSS3 Adventskalender 2011 – Tag 14
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 14'>CSS3 Adventskalender 2011 – Tag 14</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/19/css3-count-html-elemente-nummerierentag-20-im-css3-adventskalender-2011">CSS3 Count &#8211; HTML Elemente nummerieren</a>“</p>
<div id="tweetbutton1588" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-20-1588.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%2020&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-20-1588.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 14'>CSS3 Adventskalender 2011 – Tag 14</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-20-1588.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS-Filter – mehr Effekte fürs Web – CSS3 Adventskalender Tag 19</title>
		<link>http://maddesigns.de/css3-filter-1525.html</link>
		<comments>http://maddesigns.de/css3-filter-1525.html#comments</comments>
		<pubDate>Mon, 19 Dec 2011 07:00:27 +0000</pubDate>
		<dc:creator>Christian (derSchepp) Schaefer</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[svg]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1525</guid>
		<description><![CDATA[Nachdem CSS 2.1 uns Ende der 90er einigermaßen solide Werkzeuge zum Layouten von Seiten ohne Tabellen an die Hand gegeben hat, ging es bei CSS3 zunächst viel darum, uns mit mehr dekorativen Gestaltungsmöglichkeiten auszustatten. Heute haben wir endlich einbettbare Schriftarten, runde Ecken, Farbverläufe, semitransparente Elemente und Farbwerte, Box- und Textschatten usw. Soweit, so gut. Der [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/text-shadow-text-effekte-css3-adventskalender-tag-7-450.html' rel='bookmark' title='text-shadow &#8211; Text-Effekte &#8211; CSS3 Adventskalender Tag 7'>text-shadow &#8211; Text-Effekte &#8211; CSS3 Adventskalender Tag 7</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-10-1356.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 10'>CSS3 Adventskalender 2011 – Tag 10</a></li>
<li><a href='http://maddesigns.de/box-shadow-schatten-css3-adventskalender-tag-5-413.html' rel='bookmark' title='box-shadow (Schatten) &#8211; CSS3 Adventskalender Tag 5'>box-shadow (Schatten) &#8211; CSS3 Adventskalender Tag 5</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Nachdem CSS 2.1 uns Ende der 90er einigermaßen solide Werkzeuge zum Layouten von Seiten ohne Tabellen an die Hand gegeben hat, ging es bei CSS3 zunächst viel darum, uns mit mehr dekorativen Gestaltungsmöglichkeiten auszustatten. Heute haben wir endlich einbettbare Schriftarten, runde Ecken, Farbverläufe, semitransparente Elemente und Farbwerte, Box- und Textschatten usw. Soweit, so gut.</p>
<p>Der Blick in Richtung Photoshop und dessen Featureset offenbart jedoch immer noch Lücken. In Photoshop haben wir zum Beispiel die Möglichkeit, Bereiche zu entsättigen oder zu schärfen und weichzuzeichnen. Wofür könnten wir diese Effekte brauchen? Nun, ein Entsättigen oder ein Weichzeichnen bestimmter Areale einer Seite hilft dem Benutzer, sich auf unangetastete Bereicher besser zu fokussieren.</p>
<p><span id="more-1525"></span></p>
<p><img class="alignnone size-full wp-image-1532" src="http://maddesigns.de/wp-content/uploads/2011/12/Hoverbox-Image-Gallery.jpg" alt="" width="550" height="267" /></p>
<p>Ein unscharf maskieren, was ein unglücklicher Name für eigentlich eine Nachschärfungsmethode ist, könnte man im Browser kleinskalierte, und damit einhergehend detailarm gewordene Bilder wieder knackiger machen.</p>
<p>Schön wäre, wenn wir diese Effekte genauso auftragen könnten, wie wir mit <code>opacity</code> ganze Areale transparenter machen.</p>
<p>Für einen Entsättigungseffekt müssten wir stattdessen aufwändig per JavaScript durch die Farbwerte aller betroffenen Elemente zirkeln, und diese durch ihre entfärbte Pendants ersetzen. Leider scheitert dieser Ansatz spätestens in dem Moment, wo wir auf usergeneriertes Bild- oder Videomaterial treffen. Hier könnten wir zu <a href="http://spyrestudios.com/html5-canvas-image-effects-black-white/">HTML5 Canvas wechseln, das es uns erlaubt, jeden Pixelwert einzeln zu manipulieren</a>. Dabei helfen uns zwar bestimmte Canvas-Effektbibliotheken wie <a href="http://camanjs.com/examples">CamanJS</a> oder <a href="http://www.iliasiovis.com/hoverizr/">Hoverizr</a>, aber die Umsetzung bleibt anstrengend.</p>
<p>Einen Unschärfeeffekt können wir bislang ebenfalls nur tricksen, indem wir Texte mit <a href="http://webstandard.kulando.de/post/2011/12/09/css3-text-shadow-erzeugt-blur-effekt-tag-10-im-css3-adventskalender-2011">einem text-shadow gleicher Farbe versehen</a> und bei <a href="http://tympanus.net/codrops/2011/12/14/item-blur-effect-with-css3-and-jquery/">einfarbigen Boxen einen box-shadow zum Einsatz bringen</a>. Wieder müssten wir für Bilder oder Videos auf Canvas ausweichen.</p>
<p><a href="http://tympanus.net/codrops/2011/12/14/item-blur-effect-with-css3-and-jquery/"><img class="alignnone size-full wp-image-1533" src="http://maddesigns.de/wp-content/uploads/2011/12/Item-Blur-Effect-with-CSS3-and-jQuery.png" alt="" width="551" height="443" /></a></p>
<p>Einen ziemlich brutalen Ansatz fährt das Framework <a href="https://github.com/pmura/blurry.js">blurry.js</a>, das nämlich weichzuzeichnende Bereiche inklusive Text via Cufón nach Canvas überführt und sie dort im Ganzen weichzeichnet.</p>
<p>Unscharf Maskieren, also nachschärfen, können wir hingegen gar nicht mit CSS umsetzen. Hier würde der Weg einzig und allein über Canvas führen.</p>
<h3>Filter über SVG</h3>
<p>SVG kennt eine riesige Palette an <a href="http://electricbeach.org/?p=950">Filtern</a>, so etwa Überblenden, Farbüberlagerungen, Helligkeits- und Kontrastanpassungen, Beleuchtung und Reliefeffekte, gausssche und bewegte Unschärfe, Wolken und Rauschen, et cetera pépé.</p>
<p>Wir haben mit SVG einerseits die Möglichkeit, anstatt unseren Texte und Bilder in HTML einzubetten, <a href="http://dev.opera.com/articles/view/how-to-do-photoshop-like-effects-in-svg/">diese in ein SVG zu packen, innerhalb dessen wir dann Filter auftragen können</a>. Es dürfte Markup-technisch jedoch ungewohntes Terrain sein, Texte mit folgender Syntax einbauen zu müssen:</p>
<p><code>&lt;text id="header" font-family="Arial" font-weight="900" font-size="40" x="20" y="55%"&gt;SVG Example&lt;/text&gt;</code></p>
<p>Cooler ist daher das ForeignObject/xlink in SVG, das es uns erlaubt, <a href="http://ajaxian.com/archives/foreignobject-hey-youve-got-html-in-my-svg">normale HTML-Abschnitte in das SVG einzusetzen</a>, die dann via Filter umgestaltet werden können. Damit lässt sich <a href="http://dev.opera.com/articles/view/applying-color-tints-to-web-pages-with-s/">eine komplette HTML-Seite ins SVG einbetten und von A-Z umfärben</a> oder <a href="http://www.flother.com/examples/canvas-blur/v4/blur.svg">ein nur einzelnes eingebettetes Bitmap-Bild weichzeichnen</a>. Der Grad der Unterstüzung ist schon <a href="http://caniuse.com/#feat=svg-html">recht weit gediehen</a>, fehlt nur noch der IE, der mit Version 10 endlich nachzieht.</p>
<p>Firefox geht seit Version 3.5 noch einen Schritt weiter und ermöglicht es, in HTML SVG-Filter anzuwenden, die in einer externen SVG-Datei definiert sind. Zum Beispiel könnten wir in einer SVG-Datei einen <code>feGaussianBlur</code>-Filter mit einem Weichzeichnungsradius von 2 Pixeln definieren, dem wir die id <code>gaussian_blur</code> verpassen:</p>
<pre>&lt;?xml version="1.0" standalone="no"?&gt;
&lt;!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"&gt;

&lt;svg width="710" height="476" version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"&gt;
  &lt;defs&gt;
    &lt;filter id="gaussian_blur"&gt;
      &lt;feGaussianBlur in="SourceGraphic" stdDeviation="2" /&gt;
    &lt;/filter&gt;
  &lt;/defs&gt;
&lt;/svg&gt;</pre>
<p>Den Filter mit dieser id referenzieren wir dann aus unserem normalen Stylesheet heraus:</p>
<pre>img {
  filter: url(blur.svg#gaussian_blur);
}</pre>
<p><img class="alignnone size-full wp-image-1534" src="http://maddesigns.de/wp-content/uploads/2011/12/unschaerfe-via-CSS-Filter-SVG.png" alt="" width="519" height="343" /></p>
<p>Eine Live-Demo findet sich <a href="http://maddesigns.de/wp-content/uploads/2011/12/blur.html">hier</a>. Leider beschränkt sich dieses praktische Verfahren auf besagten Firefox.</p>
<p>Allerdings: Der IE kennt ja auch Filter, die allesamt von der Windows-Grafikbibliothek DirectX abgeleitet sind. Darunter befinden sich die altbekannten Alpha- oder Gradient-Filter, mit denen wir uns in alten IEs CSS3-Features herbeitricksen. Es befinden sich aber auch ein paar darunter, mit denen sich die am häufigsten benötigten Effekte realisieren lassen:</p>
<pre>/* Um 2 Pixel weichzeichnen */
filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2);
/* 13 Pixel Bewegungsunschärfe in Richtung 310° */
filter: progid:DXImageTransform.Microsoft.MotionBlur(strength=13, direction=310);
/* In Graustufen umwandeln */
filter: gray;
/* Röntgen-Effekt (also Graustufen invertiert) */
filter: xray;
/* Lichtkegel setzen */
filter: light();
/* Emboss */
filter: progid:DXImageTransform.Microsoft.emboss();</pre>
<p>Eine komplette Liste gibt es <a href="http://msdn.microsoft.com/en-us/library/ms673539(v=VS.85).aspx">hier</a>.</p>
<p>Mit Hilfe von Conditional Comments können wir damit schon zwei Browserfamilien bedienen, die zusammen immerhin <a href="http://gs.statcounter.com/#browser-DE-monthly-201112-201112-bar">77% des deutschen Browsermarkts</a> ausmachen:</p>
<pre>&lt;!DOCTYPE HTML&gt;
&lt;!--[if lte IE 9]&gt; &lt;html class="ie" lang="de"&gt; &lt;![endif]--&gt;
&lt;!--[if gt IE 9]&gt;&lt;!--&gt; &lt;html lang="de"&gt; &lt;!--&lt;![endif]--&gt;
&lt;head&gt;
&lt;meta charset="utf-8"&gt;
&lt;title&gt;Unschärfe via CSS-Filter SVG&lt;/title&gt;
&lt;style&gt;
img {
  filter: url(blur.svg#gaussian_blur);
}
.ie img {
  margin: -2px;
  filter: progid:DXImageTransform.Microsoft.blur(pixelradius=2);
  zoom: 1;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;img src="stadt.jpg"
  alt="Some rights reserved by zigazou76"
  width="500" height="333"&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><em>margin: -2px gleicht den erhöhten Platzverbrauch aus. zoom: 1 sind bei Filtern für die IE6/7 immer notwendig. Wichtig zu wissen ist, dass der IE 10 keine Filter mehr unterstützen wird <img src='http://maddesigns.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </em></p>
<p><a href="http://maddesigns.de/wp-content/uploads/2011/12/blur2.html">Hier das erweiterte Beispiel</a></p>
<p>Weil man nun aber erkannt hat, wie unglaublich praktisch die SVG-Filter von Firefox sind, hat sich das W3C gedacht, man müsste diesen Ansatz doch mal standardisieren, und so wurde die W3C FX Task Force gegründet, welche nun die ersten Drafts für offizielle <a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html">W3C Filter Effekte vorgelegt hat</a>.<br />
Diese Filter funktionieren im Prinzip genau so, wie sie der Firefox vorexzerziert, also mit Verweis auf eine externe URL, die den Filter unter einer id bereithält. Darüberhinaus definiert man aber auch ein paar Filter-Shortcuts für die prominentesten Filter, die dann keine externe Datei benötigen. Diese Shortcut-Filter wären:</p>
<ul>
<li>grayscale</li>
<li>sepia</li>
<li>saturate</li>
<li>hue-rotate</li>
<li>invert</li>
<li>opacity</li>
<li>brightness</li>
<li>contrast</li>
<li>blur</li>
<li>drop-shadow</li>
</ul>
<p>Das Gute an den Filter-Shortcuts ist zudem, dass man per Shortcut angewendete Filter in CSS animieren kann, z.B. so:</p>
<pre>.foo {
  filter: blur(2px);
  transition: filter 1s ease-in-out;
}

.foo:hover {
  filter: blur(0);
}</pre>
<p>Zu guter letzt soll auch noch eine Möglichkeit bereitgestellt werden, OpenGL/WebGL-Verformungs- und Shaderfilter zu definieren, <a href="http://www.adobe.com/devnet/html5/articles/css-shaders.html">die das entsprechende Element z.B. dreidimensional verformen</a>:</p>
<p><a href="http://www.adobe.com/devnet/html5/articles/css-shaders.html"><img class="alignnone size-full wp-image-1530" src="http://maddesigns.de/wp-content/uploads/2011/12/CSS-shaders-Cinematic-effects-for-the-web-Adobe-Developer-Connection.png" alt="" width="550" height="304" /></a></p>
<p>Praktischerweise sind vergangene Woche endlich erste Umsetzungen dieser Filter in der WebKit-Engine gelandet und nehmen nun den Weg über die <a href="http://nightly.webkit.org/">WebKit-Nightlies</a> (im OSX-Nightly läuft es schon) über <a href="http://tools.google.com/dlpage/chromesxs">Chrome Canary</a>, dann über die <a href="http://www.google.com/landing/chrome/beta/">Chrome Beta</a>, um schließlich in 3 Monaten im stabilen Allerwelts-Chrome zu landen. Und irgendwann sicherlich auch im Safari. Und damit wären die wichtigsten Filter in 90% &#8211; 95% aller Browserversionen am Markt verfügbar.</p>
<p>Für WebKit fügen wir für unser Beispiel also einfach ein <code>-webkit-filter: blur(2px);</code> zusätzlich ein, und machen es in dem Zug noch ein wenig interaktiv und zumindest im WebKit animiert:</p>
<pre>&lt;!DOCTYPE HTML&gt;
&lt;!--[if lte IE 9]&gt; &lt;html class="ie" lang="de"&gt; &lt;![endif]--&gt;
&lt;!--[if gt IE 9]&gt;&lt;!--&gt; &lt;html lang="de"&gt; &lt;!--&lt;![endif]--&gt;
&lt;head&gt;
&lt;meta charset="utf-8"&gt;
&lt;title&gt;Unschärfe via CSS-Filter SVG&lt;/title&gt;
&lt;style&gt;
img {
  filter: url(blur.svg#gaussian_blur);
  -webkit-filter: blur(2px);
  -webkit-transition: -webkit-filter 1s ease-in-out;
}
img:hover {
  filter: none;
  -webkit-filter: blur(0);
}
.ie img {
  margin: -2px;
  filter: progid:DXImageTransform.Microsoft.blur(pixelradius=2);
  zoom: 1;
}
.ie img:hover {
  margin: 0;
  filter: none;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;img src="stadt.jpg"
  alt="Some rights reserved by zigazou76"
  width="500" height="333"&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Das finale Beispiel gibt es <a href="http://maddesigns.de/wp-content/uploads/2011/12/blur3.html">hier</a> online zu sehen. <del><a href="http://4moneymaker.net">give me money</a></del></p>
<p>Eine erste Demo-Spielerei, die nicht nur CSS Filter verwendet, sondern auch CSS 3D Tranforms gibt es übrigens ganz frisch bei <a href="http://lab.simurai.com/css/stars/">Simurai zu bewundern</a>. Viel Spaß mit den CSS Filtern!</p>
<p><strong>Update</strong>: Im aktuellen Chrome Canary sind die CSS Filter nun auch angelandet, sowohl unter Mac, als auch unter Windows.</p>
<hr />
<p><em><img class="alignleft size-thumbnail wp-image-1538" style="margin-right: 12px" src="http://maddesigns.de/wp-content/uploads/2011/12/Schepp-2010a1-150x150.jpg" alt="" width="150" height="150" />Christian ”Schepp” Schaefer ist freiberuflicher Webentwickler aus Düsseldorf. Er ist Autor der Ladezeitenbeschleuniger-Bibliothek <a href="http://github.com/Schepp/CSS-JS-Booster">CSS-JS-Booster</a> sowie Moderator des wöchentlich erscheinenden <a href="http://workingdraft.de">Working Draft Podcasts</a> and er verfolgt Eure Tweets mit seinem Account <a href="http://twitter.com/derSchepp">derSchepp</a>.</em></p>
<hr />
<div id="tweetbutton1525" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-filter-1525.html&amp;via=maddesigns&amp;text=CSS-Filter%20%E2%80%93%20mehr%20Effekte%20f%C3%BCrs%20Web%20%E2%80%93%20CSS3%20Adventskalender%20Tag%2019&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-filter-1525.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/text-shadow-text-effekte-css3-adventskalender-tag-7-450.html' rel='bookmark' title='text-shadow &#8211; Text-Effekte &#8211; CSS3 Adventskalender Tag 7'>text-shadow &#8211; Text-Effekte &#8211; CSS3 Adventskalender Tag 7</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-10-1356.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 10'>CSS3 Adventskalender 2011 – Tag 10</a></li>
<li><a href='http://maddesigns.de/box-shadow-schatten-css3-adventskalender-tag-5-413.html' rel='bookmark' title='box-shadow (Schatten) &#8211; CSS3 Adventskalender Tag 5'>box-shadow (Schatten) &#8211; CSS3 Adventskalender Tag 5</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-filter-1525.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 18</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-18-1522.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-18-1522.html#comments</comments>
		<pubDate>Sun, 18 Dec 2011 16:27:55 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[transform]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1522</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS3 Transform dreht Sprite-Grafik des CSS3 Togglers“ TweetRelated posts: CSS3 Adventskalender 2011 – Tag 4 CSS3 Adventskalender Tag 18 CSS3 Adventskalender Tag 16
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-18-639.html' rel='bookmark' title='CSS3 Adventskalender Tag 18'>CSS3 Adventskalender Tag 18</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-16-618.html' rel='bookmark' title='CSS3 Adventskalender Tag 16'>CSS3 Adventskalender Tag 16</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/17/css3-transform-dreht-sprite-grafik-des-css3-togglers-tag-18-im-css3-adventskalender-2011">CSS3 Transform dreht Sprite-Grafik des CSS3 Togglers</a>“</p>
<div id="tweetbutton1522" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-18-1522.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%2018&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-18-1522.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-18-639.html' rel='bookmark' title='CSS3 Adventskalender Tag 18'>CSS3 Adventskalender Tag 18</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-16-618.html' rel='bookmark' title='CSS3 Adventskalender Tag 16'>CSS3 Adventskalender Tag 16</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-18-1522.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compass &amp; SASS – CSS3 Adventskalender Tag 17</title>
		<link>http://maddesigns.de/compass-sass-1472.html</link>
		<comments>http://maddesigns.de/compass-sass-1472.html#comments</comments>
		<pubDate>Sat, 17 Dec 2011 09:34:01 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[compass]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[sass]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1472</guid>
		<description><![CDATA[Natürlich beschäftigt sich der diesjährige CSS3 Adventskalender auch mit dem Thema SASS &#038; Compass. Was SASS &#038; Compass so effizient macht beim Schreiben von CSS hat Mathias Schäfer (molily) bereits sehr umfassend im Webkrauts-Adventskalender-Artikel &#8220;Effiziente CSS-Entwicklung mit Sass und Compass&#8221; (Teil 1, Teil 2) gezeigt. Neue Techniken bringen natürlicherweise auch viel Diskussion mit sich. Und [...]]]></description>
			<content:encoded><![CDATA[<p>Natürlich beschäftigt sich der diesjährige CSS3 Adventskalender auch mit dem Thema SASS &#038; Compass. Was SASS &#038; Compass so effizient macht beim Schreiben von CSS hat <a href="http://molily.de/">Mathias Schäfer</a> (<a href="http://twitter.com/#!/molily" title="Mathias Schäfer auf Twitter">molily</a>) bereits sehr umfassend im <a href="http://www.webkrauts.de/category/adventskalender/adventskalender-2011/" title="Webkrauts Adventskalender 2011">Webkrauts-Adventskalender</a>-Artikel &#8220;Effiziente CSS-Entwicklung mit Sass und Compass&#8221; (<a href="http://www.webkrauts.de/2011/12/04/sass-compas/">Teil 1</a>, <a href="http://www.webkrauts.de/2011/12/05/sass-compass2/">Teil 2</a>) gezeigt. </p>
<p>Neue Techniken bringen natürlicherweise auch viel <a href="https://plus.google.com/111291152590065605567/posts/LKpTjT7DcDu">Diskussion</a> mit sich. Und nur weil man einen Pre-Processor wie SASS verwendet, schreibt man nicht automatisch <a href="http://blog.millermedeiros.com/2011/11/the-problem-with-css-pre-processors/" title="The problem with CSS pre-processors"><em>besseres</em> CSS</a>. Es muss schon ein gewisses Verständnis von CSS vorhanden sein, damit <a href="http://sass-lang.com/">SASS</a>, <a href="http://lesscss.org/">LESS</a>, <a href="http://learnboost.github.com/stylus/">Stylus</a>, <a href="http://code.google.com/p/closure-stylesheets/">Closure</a> und MyNewCssPreProcessor&trade; auch effizient eingesetzt werden kann.<br />
<span id="more-1472"></span></p>
<h3>Leichter Einstieg</h3>
<p>Durch die neue Schreibweise SCSS (“Sassy CSS”) wurde zudem der Einstieg in SASS erleichtert. Das hilft Einsteigern mit bestehenden Code die ersten Features von SASS auszuprobieren und so schnellere Erfolge zu erzielen. </p>
<p>Bestehendes CSS in SCSS konvertieren (geht auch zu SASS und auch von SASS zu SCSS,&#8230;)</p>
<pre>
# Convert CSS to SCSS
$ sass-convert style.css style.scss
</pre>
<p>Das wird über das jeweilige Kommandozeilen-Tool gemacht, gibt es aber auch <a href="http://css2sass.heroku.com/" title="Convert CSS to SASS">online</a>. Zur Installation von <a href="http://sass-lang.com/tutorial.html">SASS</a> und <a href="http://compass-style.org/install/">Compass</a> gibt es auch zahlreiche Anleitungen im Netz, auch für <a href="http://rubyinstaller.org/">Windows</a> oder als <a href="http://compass.handlino.com/">App</a>. Das sollte also kein Problem darstellen.</p>
<p>Einige nützliche Beispiele habe ich im Folgenden mal zusammen getragen. Aktuell starte ich meine Projekte mit dem Starter-Kit von <a href="http://www.xtine.net/">xtine</a>, das die HTML5 Boilerplate, Compass, SASS und normalize.css schon mitbringt (<a href="https://github.com/xtine/compass-sass-html5boilerplate">compass-sass-html5boilerplate</a>).</p>
<p>Schön finde ich die Import-Funktion von SASS, so lassen sich gesplitete CSS (SASS)-Dateien zu einer zusammenfüren.</p>
<pre>
@import "modules/base";
@import "partials/header", "partials/footer";
</pre>
<p>Dabei werden Dateien, die mit Unterstrich beginnen direkt ins fertige CSS kompiliert, z.B. <code><strong>_base.scss</strong></code>, wo hingegen Dateien ohne Unterstrich, z.B. <code><strong>base.scss</strong></code> zusätzlich als separate CSS-Datei (z.B. <code>base.css</code>) durch den Watch-Prozess angelegt werden.</p>
<p>Partials können auch in Anweisungen importiert werden:</p>
<pre class="sass">
@media only screen and (min-width: 320px) {
  @import "partials/up320";
}
</pre>
<h3>Elternselektor</h3>
<p>Die Selektierung von Elternelementen ist für mich ebenfalls unschlagbar</p>
<pre class="sass">
article h1 {
  font-size: 2em;

  .index &#038; {
    font-size: 1.6em;
  }
}
</pre>
<p>wird zu:</p>
<pre>
article h1 {
  font-size: 2em;
}
.index article h1 {
  font-size: 1.6em;
}
</pre>
<p>So kann direkt in der Anweisung eine andere Schriftgröße für H1 auf der Startseite vergeben werden</p>
<h3>Compass &#8211; Multifunktions-Tool</h3>
<div id="attachment_1483" class="wp-caption alignnone" style="width: 510px"><a href="http://sonspring.com/journal/sass-for-designers"><img src="http://maddesigns.de/wp-content/uploads/2011/12/css_sass_compass.jpg" alt="" title="css_sass_compass" width="500" height="360" class="size-full wp-image-1483" /></a><p class="wp-caption-text">Bild von http://sonspring.com/journal/sass-for-designers</p></div>
<p>Meiner Meinung nach macht SASS erst mit dem CSS-Framwork <a href="http://compass-style.org/" title="Framework for SASS">Compass</a> richtig Sinn. Compass bringt eine Vielzahl von Funktionen und Mixins mit, die das Schreiben von CSS erleichtern. Das o.a. Bild zeigt es meiner Meinung nach sehr treffend. Gerade im CSS3-Bereich spielt Compass seine Stärken aus, hier ist ein großes Set an <a href="http://compass-style.org/reference/compass/css3/">CSS3-Mixins</a> bereits enthalten und werden <a href="https://github.com/chriseppstein/compass/commits/stable">ständig nachgepflegt</a>. </p>
<p>Ein dickes Feature ist sicherlich das Generieren von Sprites-Grafiken (<a href="http://webstandard.kulando.de/post/2010/05/26/css-sprite-ladegeschwindigkeit-optimieren-http-requests-verringern" title="ladegeschwindigkeit optimieren http-requests verringern">warum Sprites?</a>), dazu gibt es ein umfangriches <a href="http://compass-style.org/help/tutorials/spriting/" title="Sprites with SASS &#038; Compass">Tutorial auf der Compass-Website</a>.</p>
<h3>CSS3 Mixins</h3>
<p>Linear-Gradients sind nach wie vor mühsehlig, für alle Browser müssen Anweisungen mit Vendor-Prefixe geschrieben werden, aktuell sieht ein simpler <a href="http://maddesigns.de/css3-responsive/template/#31" title="cross-browser linear-gradient">cross-browser Linear-Gradient</a> so aus:</p>
<pre>
.gradient { 

  background-color: yellow; /* Fallback Color */
  background: -webkit-gradient(linear,left top,left bottom,from(yellow),to(blue));
  background: -webkit-linear-gradient(top, yellow 0%, blue 100%);
  background:    -moz-linear-gradient(top, yellow 0%, blue 100%);
  background:     -ms-linear-gradient(top, yellow 0%, blue 100%);
  background:      -o-linear-gradient(top, yellow 0%, blue 100%); 

  /* aktueller W3C Standard, bisher nicht implementiert */
  background:         linear-gradient(to bottom, yellow 0%, blue 100%);

}
</pre class="sass">
mit Compass sieht die Anweisung so aus:
<pre>
.gradient {
  @include background(linear-gradient(top, yellow, blue));
}
</pre>
<p>zusätzlich könnte man noch SVG-Support für IE9 und ältere Opera über <code>$experimental-support-for-svg: true;</code> aktivieren, sowie die älteren Internet Explorer (IE6-IE8) mit Filtern ausstatten:</p>
<pre class="sass">
.gradient {
	$experimental-support-for-svg: true;
	@include background(linear-gradient(top, yellow, blue));

	// for older IEs
	.oldie &#038; {
		background-color: yellow;
		@include filter-gradient(yellow, blue, vertical);
	}
}
</pre>
<p>das wird dann wie folgt kompiliert</p>
<pre>
.gradient {
  background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0i.....');
  background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffff00), color-stop(100%, #0000ff));
  background: -webkit-linear-gradient(top, #ffff00, #0000ff);
  background: -moz-linear-gradient(top, #ffff00, #0000ff);
  background: -o-linear-gradient(top, #ffff00, #0000ff);
  background: -ms-linear-gradient(top, #ffff00, #0000ff);
  background: linear-gradient(top, #ffff00, #0000ff);
}
.oldie .gradient{
  background-color: yellow;
  *zoom: 1;
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFF00', endColorstr='#FF0000FF');
}
</pre>
<p>Globale Variablen wie <code>$experimental-support-for-svg</code> werden für das gesammte Compass-Projekt gesetzt (wie der Name schon sagt). Wenn man im nächsten Gradient keinen SVG-Support wünscht, müsste man <code>$experimental-support-for-svg</code> in der Anweisung wieder auf <code>false</code> setzen. <code>$experimental-support-for-khtml: false;</code> kann eigentlich als Default in <code>_base.scss</code> gesetzt werden. Man kann auch den Support von IE6 oder IE7 deaktivieren, wenn das für das Projekt nicht nötig ist:</p>
<pre class="sass">
// _base.scss
$experimental-support-for-khtml: false;
$legacy-support-for-ie6: false;
$legacy-support-for-ie7: false;
</pre>
<p>Aber nicht alle CSS3-Mixins sind zu empfehlen, border-radius ist überfrachtet und kann mittlerweile auch <a href="http://maddesigns.de/css3-responsive/template/#9" title="border-radius ohne Vendor-Präfix">ohne Vendor-Präfix</a> eingesetzt werden.</p>
<pre class="sass">
.box {
  @include border-radius();
}
</pre>
<p>wird zu</p>
<pre>
.box {
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  -o-border-radius: 5px;
  -ms-border-radius: 5px;
  -khtml-border-radius: 5px;
  border-radius: 5px;
}
</pre>
<p>Hier ist einiges zu viel und zudem falsch (-ms-border-radius). Hier reicht also einfach:</p>
<pre>
.box {
  border-radius: 5px;
}
</pre>
<p>Nützlich ist auch das Mixins für Links. Wenn man Links mit alle dynamischen Pseudoklassen stylt, sieht das mit SASS so aus:</p>
<pre class="sass">
$color-main: #0089B3;
a {
	text-decoration: none;
	color: $color-main;
	&#038;:hover {
		text-decoration: underline;
		color: darken($color-main, 10%);
	}
	&#038;:focus {
		color: darken($color-main, 10%);
	}
	&#038;:active {
		color: invert($color-main);
	}
	&#038;:visited {
		color: darken($color-main, 30%);
	}
}
</pre>
<p>In Compass kann man daraus einen Zweizeiler machen:</p>
<pre class="sass">
a {
  @include hover-link;
  @include link-colors(
    $color-main,
    darken($color-main, 10%),
    invert($color-main),
    darken($color-main, 30%),
    darken($color-main, 10%)
  );
  // hier zur Übersichtlichkeit mehrzeilig
}
</pre>
<p>wird zu </p>
<pre>
a { text-decoration: none; color: #0089b3; }
a:hover { text-decoration: underline; }
a:visited { color: #00141a; }
a:focus { color: #006280; }
a:hover { color: #006280; }
a:active { color: #ff764c; }
</pre>
<p>Ja, Compass fasst <code>:hover</code> und <code>:focus</code> nicht zusammen, aber das kann man sicherlich verschmerzen - genau solche Beispiel sind es die Kritiker dann auf den Plan bringen...</p>
<p><div id="attachment_1497" class="wp-caption alignnone" style="width: 510px"><a href="http://sonspring.com/journal/sass-for-designers"><img src="http://maddesigns.de/wp-content/uploads/2011/12/clint_eastwood_css.jpg" alt="" title="clint_eastwood_css" width="500" height="380" class="size-full wp-image-1497" /></a><p class="wp-caption-text">Bild: http://sonspring.com/journal/sass-for-designers</p></div><br />
Gerne bin ich bereit über Sinn und Unsinn in den Kommentaren zu diskutieren.</p>
<h3>If-Bedingungen in CSS</h3>
<pre class="sass">
$main-bg: #333;
.main {
  color: if($main-bg == #333, #fff, #000);
}
</pre>
<p>Jeder der ein wenig Programmierkenntnisse hat, wird das zu schätzen wissen. Wenn die Hintergrundfarbe #333 (dunkles grau) ist, dann ist die Textfarbe #fff (weiß), sonst #000 (schwarz). Klasse, oder?</p>
<p>Oder die Möglichekeit Überschriften in anderen Bereichen der Website, anders zu formatieren:</p>
<pre class="sass">
aside {
  #{headings(2,4)} {
    text-transform: uppercase;
  }
}
</pre>
<p>wird kompiliert zu</p>
<pre>
aside h2, aside h3, aside h4 {
  text-transform: uppercase;
}
</pre>
<p>Die Compass Image-Funktionen sind auch ganz toll:</p>
<pre class="sass">
header {
  background: image-url("header-bg.png");
  h1 {
    height: image-height("logo.png");
    width: image-width("logo.png");
    background: transparent inline-image("logo.png") no-repeat;
  }
}
</pre>
<p>So kann man mit <code>image-height()</code> und <code>image-width()</code> die Höhe und Breite des Logos automatisch einfügen, falls sich das Logo ändert, ändern sich auch automatisch die Höhe und Breite. Zudem kann man das Logo als <code>inline-image()</code> einfügen. Das Beispiel wird dann folgendermaßen kompiliert:</p>
<pre>
header {
  background: url('../img/header-bg.png');
}
header h1 {
  height: 185px;
  width: 140px;
  background: transparent url('data:image/png;base64,/9j/4AAQSkZJRgABAgAAZABkAAD....') no-repeat;
}
</pre>
<h3>Plugins</h3>
<p>Für Compass gibt es mittlerweile eine große Anzahl an <a href="https://github.com/chriseppstein/compass/wiki/Compass-Plugins" title="Compass Plugins">Plugins</a>, die das Framework erweitern. Eines hab ich total lieb gewonnen: <a href="http://www.aaronrussell.co.uk/">Aaron Russell</a>'s Plugin für den <a href="https://github.com/aaronrussell/compass-rgbapng">RGBA PNG Support</a> - das erstellt für ältere Browser (IE6-IE8) transparente PNGs anhand der zugewiesenen RGBA-Farbe. Man installiert sich das Plugin und bindet es in das Compass config.rb File ein.</p>
<pre>
// require in config.rb
require "rgbapng"
</pre>
<p>Dann importiert man das Mixin in das SCSS und weist es wie folgt zu:</p>
<pre class="sass">
@import "rgbapng";
footer {
  @include rgba-background(rgba(#fff,0.25));
}
</pre>
<p>Das Plugin RGBAPNG legt dann eine Grafik im img-Folder an. Das generierte CSS:</p>
<pre>
footer {
  background: url('../img/rgbapng/ffffff40.png?1324100912');
  background: rgba(255, 255, 255, 0.25);
}
</pre>
<p>Wenn man den Alpha-Wert ändert, wird eine neue Grafik erstellt. Praktisch, oder?</p>
<h3>Fazit</h3>
<p>Für mich ist SASS &#038; Compass eine Arbeitserleichterung geworden. Zudem werden einige Konzepte von SASS in die zukünftige CSS4 einfließen, wie Tab Artkins auf der diesjährigen Fronteers Konferenz in Amsterdam erwähnte (<a href="http://vimeo.com/32135328">Video</a>).<br />
Ich hoffe ich konnte ein paar nützliche Beispiele für den Einsatz von Compass mit SASS liefern. Welche Erfahrungen habt ihr mit SASS &#038; Compass gemacht? Habt ihr nützliche Mixins, verlinkt die in den Kommentaren. Werdet Ihr jetzt CSS-Preprozessoren verwenden? </p>
<div id="tweetbutton1472" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcompass-sass-1472.html&amp;via=maddesigns&amp;text=Compass%20%26%23038%3B%20SASS%20%E2%80%93%20CSS3%20Adventskalender%20Tag%2017&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcompass-sass-1472.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/compass-sass-1472.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 16</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-16-1467.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-16-1467.html#comments</comments>
		<pubDate>Fri, 16 Dec 2011 07:00:45 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[target]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1467</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS3 Toggler &#8211; Vertikales Menu zum Auf- und Zuklappen“ TweetRelated posts: CSS3 Adventskalender 2011 – Tag 4 CSS3 Adventskalender 2011 – Tag 6 CSS3 Adventskalender 2011 – Tag 14
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 14'>CSS3 Adventskalender 2011 – Tag 14</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/15/css3-toggler-vertikales-menu-zum-auf-und-zuklappen-tag-16-im-css3-advenstkalender-2011">CSS3 Toggler &#8211; Vertikales Menu zum Auf- und Zuklappen</a>“</p>
<div id="tweetbutton1467" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-16-1467.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%2016&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-16-1467.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 14'>CSS3 Adventskalender 2011 – Tag 14</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-16-1467.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE9 CSS3 Support – CSS3 Adventskalender Tag 15</title>
		<link>http://maddesigns.de/ie9-css3-support-1445.html</link>
		<comments>http://maddesigns.de/ie9-css3-support-1445.html#comments</comments>
		<pubDate>Thu, 15 Dec 2011 08:10:23 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[ie9]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1445</guid>
		<description><![CDATA[Heute mal ein Thema im CSS3 Adventskalender, das ja ab-und-zu etwas vernachlässigt wird, &#8220;IE9 CSS3 Support&#8221; oder &#8220;was kann der IE9 überhaupt?&#8221;. Der Browser-Marktanteil des IE9 ist glücklicherweise steigend und wird mehr und mehr in Firmen und in Privathaushalten eingesetzt. Die Statistik zeigt, das in Europa aktuell ca. 10% mit IE9, ca. 16% mit IE8 [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/internet-explorer-10-mit-css3-linear-gradient-support-847.html' rel='bookmark' title='Internet Explorer 10 mit CSS3 linear-gradient Support'>Internet Explorer 10 mit CSS3 linear-gradient Support</a></li>
<li><a href='http://maddesigns.de/webkit-andert-css3-gradient-support-und-orientiert-sich-am-mozilla-syntax-739.html' rel='bookmark' title='WebKit ändert CSS3 Gradient Support und orientiert sich am Mozilla Syntax'>WebKit ändert CSS3 Gradient Support und orientiert sich am Mozilla Syntax</a></li>
<li><a href='http://maddesigns.de/individuelle-checkbox-radio-inputs-1396.html' rel='bookmark' title='Individuelle Checkbox &amp; Radio Inputs – CSS3 Adventskalender Tag 13'>Individuelle Checkbox &#038; Radio Inputs – CSS3 Adventskalender Tag 13</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Heute mal ein Thema im CSS3 Adventskalender, das ja ab-und-zu etwas vernachlässigt wird, &#8220;IE9 CSS3 Support&#8221; oder &#8220;was kann der IE9 überhaupt?&#8221;. Der Browser-Marktanteil des IE9 ist glücklicherweise steigend und wird mehr und mehr in Firmen und in Privathaushalten eingesetzt. Die <a title="Browser Statistik Europa" href="http://gs.statcounter.com/#browser_version-eu-monthly-201101-201112">Statistik</a> zeigt, das in Europa aktuell ca. 10% mit IE9, ca. 16% mit IE8 und nur knapp 3% den IE7 verwenden. Dass der IE9 nicht so fortschrittlich ist, wie seine Konkurrenten, ist sicherlich auch hinlänglich bekannt. Mit der Einführung des neuen Betriebssystem &#8220;Mango&#8221; für Windows Phone 7 ist nun auch der IE9 auf den Windows Phone 7 als Standard-Browser vorhanden und kann hier die neuen Features rund um HTML5 und CSS3 verarbeiten. Der Marktanteil ist sicherlich noch sehr gering, wird aber <a href="http://blog.e-net.info/2011/windows-phone-vor-android-291.html">sicherlich steigen</a> in den nächsten Jahren. Und wer behauptet, dass das Windows Phone 7 noch keine Relevanz hat, optimiert sicherlich noch für IE6 (#bewusstprovokantethese).<br />
<span id="more-1445"></span></p>
<h3>Übersicht &#8211; CSS3-Features IE9</h3>
<p>Nun aber Butter bei die Fische, was geht mit dem Internet Explorer 9 und was nicht.</p>
<table class="ie9table">
<tbody>
<tr>
<th>CSS3 Eigenschaft</th>
<th>IE9 Support</th>
</tr>
<tr>
<td>opacity</td>
<td>ja</td>
</tr>
<tr>
<td>multiple backgrounds</td>
<td>ja</td>
</tr>
<tr>
<td>background-clip</td>
<td>ja</td>
</tr>
<tr>
<td>background-size</td>
<td>ja</td>
</tr>
<tr>
<td>background-origin</td>
<td>ja</td>
</tr>
<tr>
<td>border-radius</td>
<td>ja</td>
</tr>
<tr>
<td>box-shadow</td>
<td>ja</td>
</tr>
<tr>
<td>box-sizing</td>
<td>ja</td>
</tr>
<tr>
<td>transform</td>
<td>ja (mit -ms-Präfix)</td>
</tr>
<tr>
<td>RGBA colors</td>
<td>ja</td>
</tr>
<tr>
<td>HSL colors</td>
<td>ja</td>
</tr>
<tr>
<td>HSLA colors</td>
<td>ja</td>
</tr>
<tr>
<td>@font-face</td>
<td>ja</td>
</tr>
<tr>
<td>@media</td>
<td>ja</td>
</tr>
<tr>
<td>CSS3 Selektoren</td>
<td>ja</td>
</tr>
</tbody>
</table>
<table class="ie9table">
<tbody>
<tr>
<th>CSS3 Eigenschaft</th>
<th>IE9 Support</th>
</tr>
<tr>
<td>border-image</td>
<td>nein</td>
</tr>
<tr>
<td>text-shadow</td>
<td>nein</td>
</tr>
<tr>
<td>gradients</td>
<td>nein</td>
</tr>
<tr>
<td>transitions</td>
<td>nein</td>
</tr>
<tr>
<td>animations</td>
<td>nein</td>
</tr>
<tr>
<td>multiple columns</td>
<td>nein</td>
</tr>
<tr>
<td>resize</td>
<td>nein</td>
</tr>
</tbody>
</table>
<h3>Darfs ein wenig mehr sein?</h3>
<p>Ja gern, aber erst im IE10&#8230; Aber der IE9 unterstützt Größenangaben wie <code>rem</code> und <code>vh</code>, sowie <code>vw</code> (Blogartikel von <a href="http://snook.ca/archives/html_and_css/vm-vh-units">Jonathan Snook</a>). Allerdings sind die aufgeführten Eigenschaften (bis auf <code>-ms-transform</code>) ohne Präfix integriert, also standardkonform. Über das <a href="http://blogs.msdn.com/b/ie/archive/2010/03/19/the-css-corner-about-css-corners.aspx" title="IE9 border-radius rendering">Rendering von border-radius</a> wurde sich zudem ausführlich Gedanken gemacht und ist sehr gelungen meiner Meinung nach.</p>
<p>Eine Eigenschaft, die der IE9 unterstützt, aber auch noch nicht so häufig verwendet wurde, sind multiple Hintergrundbilder (background-image).</p>
<pre>
.box {
  background: url(images/background-1.png) no-repeat 50% 0,
              url(images/background-2.png) no-repeat 100% 100%;
}
</pre>
<p>Man sollte allerdings vorsichtig sein, wenn man für ältere Internet Explorer die filter-Eigenschaft verwendet, es kann dann zu Problemen führen. Ein Beispiel im Zusammenhang mit border-radius und linear-gradient habe ich <a href="http://maddesigns.de/ie9-mit-css3-border-radius-und-linear-gradient-problemen-813.html" title="IE9 mit CSS3 border-radius und linear-gradient Problemen">hier</a> beschrieben. </p>
<h3>Link-Tipps</h3>
<p><a href="http://blogs.technet.com/b/sieben/archive/2010/09/15/was-entwickler-ueber-internet-explorer-9-wissen-sollten.aspx">Was Entwickler über Internet Explorer 9 wissen sollten</a><br />
Referenz: <a href="http://www.impressivewebs.com/css3-support-ie9/" title="IE9 CSS3 Support">CSS3 Support in Internet Explorer 9</a><br />
<a href="http://msdn.microsoft.com/en-us/ie/ff468705.aspx" title="IE9 Developer Guide">Internet Explorer 9 Guide for Developers</a><br />
<a href="http://msdn.microsoft.com/en-us/ie/gg593671" title="IE9 CSS3">Internet Explorer Learning > CSS3</a><br />
<a href="http://nicolasgallagher.com/mobile-first-css-sass-and-ie/" title="mobile first with SASS ">“Mobile first” CSS and getting Sass to help with legacy IE</a><br />
<a href="http://css3wizardry.com/2010/10/29/css-gradients-for-ie9/">Attention! IE9 will not destroy the world, kill babies, or take away your home or job.</a></p>
<h3>Fazit</h3>
<p>Der Internet Explorer 9 unterstützt mehr CSS3-Eigenschaften als erwartet, allerdings sicherlich weniger als erhofft. Und mit der Version 10 werden weitere CSS3-Eigenschaften unterstützt, bleibt nur zu hoffen, dass die älteren Versionen bald verschwinden. Als kleine Gute Tat, könnt ihr in den Weihnachtsfeiertagen die Browser eurer Verwandten updaten (wenn ihr das nicht schon getan habt).</p>
<div id="tweetbutton1445" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fie9-css3-support-1445.html&amp;via=maddesigns&amp;text=IE9%20CSS3%20Support%20%E2%80%93%20CSS3%20Adventskalender%20Tag%2015&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fie9-css3-support-1445.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/internet-explorer-10-mit-css3-linear-gradient-support-847.html' rel='bookmark' title='Internet Explorer 10 mit CSS3 linear-gradient Support'>Internet Explorer 10 mit CSS3 linear-gradient Support</a></li>
<li><a href='http://maddesigns.de/webkit-andert-css3-gradient-support-und-orientiert-sich-am-mozilla-syntax-739.html' rel='bookmark' title='WebKit ändert CSS3 Gradient Support und orientiert sich am Mozilla Syntax'>WebKit ändert CSS3 Gradient Support und orientiert sich am Mozilla Syntax</a></li>
<li><a href='http://maddesigns.de/individuelle-checkbox-radio-inputs-1396.html' rel='bookmark' title='Individuelle Checkbox &amp; Radio Inputs – CSS3 Adventskalender Tag 13'>Individuelle Checkbox &#038; Radio Inputs – CSS3 Adventskalender Tag 13</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/ie9-css3-support-1445.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 14</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html#comments</comments>
		<pubDate>Wed, 14 Dec 2011 08:16:24 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[linear gradient]]></category>
		<category><![CDATA[pattern]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1442</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS3 Pattern mit Linear-Gradient“ TweetRelated posts: CSS3 Adventskalender Tag 4 CSS3 Adventskalender 2011 – Tag 4 CSS3 Adventskalender 2011 – Tag 6
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-4-410.html' rel='bookmark' title='CSS3 Adventskalender Tag 4'>CSS3 Adventskalender Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/14/css3-pattern-mit-linear-gradient-tag-14-im-css3-adventskalender-2011">CSS3 Pattern mit Linear-Gradient</a>“</p>
<div id="tweetbutton1442" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-14-1442.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%2014&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-14-1442.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-4-410.html' rel='bookmark' title='CSS3 Adventskalender Tag 4'>CSS3 Adventskalender Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-14-1442.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Individuelle Checkbox &amp; Radio Inputs – CSS3 Adventskalender Tag 13</title>
		<link>http://maddesigns.de/individuelle-checkbox-radio-inputs-1396.html</link>
		<comments>http://maddesigns.de/individuelle-checkbox-radio-inputs-1396.html#comments</comments>
		<pubDate>Tue, 13 Dec 2011 08:00:57 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[:checked]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[checkbox]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[radio-button]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1396</guid>
		<description><![CDATA[Um es vorweg zu nehmen, beim Stylen von Input-Feldern muss man aus Usability-Gesichtspunkten Vorsicht walten lassen. Der normale User ist an das Aussehen der Formular-Elemente in seinem OS/Browser gewöhnt. Wenn die Input-Felder nun stark von der gewohnten Umgebung abweichen, ist er skeptischer beim Ausfüllen von Formularen und bricht u.U. den Prozess sogar ganz ab. (Quelle: [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/navigation-mit-flexbox-1360.html' rel='bookmark' title='Apple’s Navigation mit Flexbox – CSS3 Adventskalender Tag 11'>Apple’s Navigation mit Flexbox – CSS3 Adventskalender Tag 11</a></li>
<li><a href='http://maddesigns.de/css3-tabellen-ubersicht-css3-adventskalender-tag-15-594.html' rel='bookmark' title='CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15'>CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15</a></li>
<li><a href='http://maddesigns.de/border-radius-runde-ecken-css3-adventskalender-tag-1-288.html' rel='bookmark' title='border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1'>border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Um es vorweg zu nehmen, beim Stylen von Input-Feldern muss man aus Usability-Gesichtspunkten Vorsicht walten lassen. Der normale User ist an das Aussehen der Formular-Elemente in seinem OS/Browser gewöhnt. Wenn die Input-Felder nun stark von der gewohnten Umgebung abweichen, ist er skeptischer beim Ausfüllen von Formularen und bricht u.U. den Prozess sogar ganz ab. (Quelle: Internet)</p>
<p>Auch wenn man es wollte, einige Formular-Elemente lassen sich zudem nur schwerlich, bis gar nicht cross-browser-konform stylen, z.B. das <code>input[type="file"]</code>. Für Checkboxen und Radio-Buttons möchte ich heute eine Möglichkeit zeigen, die zudem auch die neuen CSS3 Pseudo-Klasse <code>:checked</code> beinhaltet.</p>
<p><span id="more-1396"></span></p>
<h3>Als erstes erstellen wir ein kleines HTML5-Formular</h3>
<pre lang="html">
&lt;form class="comment-form" action="#" method="post">
  &lt;fieldset>
    &lt;ol>
      &lt;li>
        &lt;h3>War das Tutorial nützlich? &lt;sup title="Das ist ein Pflichtfeld">*&lt;/sup>&lt;/h3>
        &lt;input id="radio_yes" type="radio" value="ja" name="radio" required>
        &lt;label for="radio_yes">Ja&lt;/label>
        &lt;input id="radio_no" type="radio" value="nein" name="radio" required>
        &lt;label for="radio_no">Nein&lt;/label>
      &lt;/li>
      &lt;li>
        &lt;input type="checkbox" name="ckeck" id="check" value="japp" required>
        &lt;label for="check">Ja, ich habe das Tutorial auch gelesen.&lt;sup title="Das ist ein Pflichtfeld">*&lt;/sup>&lt;/label>
      &lt;/li>
      &lt;li>
        &lt;input type="submit" name="submit" id="submit" value="Absenden">
      &lt;/li>
    &lt;/ol>
  &lt;/fieldset>
&lt;/form>
</pre>
<p>Das Formular braucht zunächst ein wenig Grundgestaltung.</p>
<pre>
fieldset {
  border: none;
  margin: 0;
  padding: 0;
}

ol {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

li {
  padding: 1em 0;
}

label {
  cursor: pointer;
}
</pre>
<p>Wie schon erwähnt, ist es fast unmöglich die Input-Types einheitlich zu stylen. Deshalb werden wir die Input-Felder über <code>background-clip</code> &#8220;ausblenden&#8221; und das folgende <code>label</code> mit dem Styling versorgen.</p>
<pre>
input[type="checkbox"], input[type="radio"] {
  position: absolute;
  clip: rect(0,0,0,0);
}
</pre>
<p>Jetzt sind die Input-Felder der Checkbox und auch die Radio-Buttons nicht mehr sichtbar, aber grundsätzlich noch für die Tasterturbenutzung erreichbar (Stichwort: barrierefrei). Da der Browser uns jetzt allerdings kein visionelles Feedback mehr geben kann, wenn die Checkbox oder Radio-Buttons fokusiert werden, verlegern wir das Verhalten auf das folgende Label. Wenn das Input-Feld fokusiert wird, wird das folgende <code>label</code> fett dargestellt: </p>
<pre>
input[type="checkbox"]:focus + label , input[type="radio"]:focus + label{
  font-weight: bold;
}
</pre>
<h3>Spritegrafik hinzufügen</h3>
<p>Als nächstes fügen wir eine Hintergrund-Spritegrafik hinzu, sowie das Styling für den CSS3 <code>:checked</code> Status: </p>
<pre>
input[type="radio"] + label {
  background: transparent url("s-radio.png") no-repeat 0 -34px;
  padding: 0 20px;
}
input[type="radio"][value*="nein"] + label {
  background-position: 0 -50px;
}
input[type="radio"]:checked + label {
  background-position: 0 -2px;
  color: green;
}
input[type="radio"][value*="nein"]:checked + label {
  background-position: 0 -18px;
  color: red;
}
</pre>
<p>Die Spritegrafik-Position wird also verschoben und visuell auf grün für &#8220;ja&#8221; gesetzt, oder eben rot für &#8220;nein&#8221;. Dazu ist natürlich zu sagen, wenn man den Barrierefrei-Aspekt hinzuzieht, rot/grün natürlich nicht optimal sind und man sich darüber in klaren sein sollte, das ein Großteil der Nutzer eine Rot-Grün-Schwäche haben. Deshalb sind in unserem Beispiel zudem andere Symbole für ja/nein gewählt.</p>
<p><strong>Ein ähnliches Verhalten implementieren wir nun auch für die Checkbox.</strong></p>
<pre>
input[type="checkbox"] + label {
  background: transparent url("s-checkbox.png") no-repeat 0 -16px;
  padding-left: 20px;
}

input[type="checkbox"]:checked + label {
  background-position: 0 0;
}
</pre>
<p>Da im Beispiel ein HTML5-Formular mit dem Attribut <code>required</code> in den Inputs verwendet wurde, wird die browserseitige Validierung aktiv, wenn keine Option ausgewählt wurde, sowie wenn die Checkbox nicht aktiviert wurde. </p>
<p>Diesen Pseudo-Status kann ebenfalls stylen, ist allerdings in den verschiedenen Browsern mit Browser-Präfixen implementiert. Am Beispiel von Firefox, kann man <code>:-moz-ui-invalid</code> verwenden:</p>
<pre>
input[type="checkbox"]:-moz-ui-invalid + label {
  background: transparent url("s-checkbox.png") no-repeat 0 -32px;
  color: red;
}
input[type="checkbox"]:-moz-ui-invalid + label:after {
  content: '<<<--- Pflichtfeld!';
}
</pre>
<h3>Demo</h3>
<p><a href='http://maddesigns.de/wp-content/uploads/2011/12/form-selectors.html'>Das HTML5-Formular mit individuellen Radio-Buttons</a></p>
<h3>Browser-Support</h3>
<p>Der verwendeten Pseudo-Selektoren sind bereits in CSS 2.1 spezifiziert, allerdings erst vollständig implementiert mit dem Release des IE9.<br />
<img src="http://maddesigns.de/wp-content/uploads/2010/12/browserChoice-maddesigns.jpg" alt="" title="browserChoice-maddesigns" width="521" height="115" class="alignnone size-full wp-image-532" /></p>
<p>Weitere Infos zu dieser Technik gibt es beim CSS Ninja (Ryan Seddon) im Artikel "<a href="http://www.thecssninja.com/css/custom-inputs-using-css" title="CSS Ninja">Custom radio and checkbox inputs using CSS</a>" und in Lea Verou's Vortrag "<a href="http://lea.verou.me/css3-secrets/#custom-form-controls" title="CSS3 Secrets">CSS3 Secrets</a>".</p>
<div id="tweetbutton1396" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Findividuelle-checkbox-radio-inputs-1396.html&amp;via=maddesigns&amp;text=Individuelle%20Checkbox%20%26%23038%3B%20Radio%20Inputs%20%E2%80%93%20CSS3%20Adventskalender%20Tag%2013&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Findividuelle-checkbox-radio-inputs-1396.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/navigation-mit-flexbox-1360.html' rel='bookmark' title='Apple’s Navigation mit Flexbox – CSS3 Adventskalender Tag 11'>Apple’s Navigation mit Flexbox – CSS3 Adventskalender Tag 11</a></li>
<li><a href='http://maddesigns.de/css3-tabellen-ubersicht-css3-adventskalender-tag-15-594.html' rel='bookmark' title='CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15'>CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15</a></li>
<li><a href='http://maddesigns.de/border-radius-runde-ecken-css3-adventskalender-tag-1-288.html' rel='bookmark' title='border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1'>border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/individuelle-checkbox-radio-inputs-1396.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 12</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-12-1435.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-12-1435.html#comments</comments>
		<pubDate>Mon, 12 Dec 2011 07:00:17 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1435</guid>
		<description><![CDATA[…im Webstandard Blog gibt es Bücher zu gewinnen! &#8220;Buch Gewinnspiel zum Bergfest&#8220; TweetRelated posts: CSS3 Adventskalender Tag 24 CSS3 Adventskalender 2011 CSS3 Adventskalender + Buchverlosung
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-24-726.html' rel='bookmark' title='CSS3 Adventskalender Tag 24'>CSS3 Adventskalender Tag 24</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-buchverlosung-286.html' rel='bookmark' title='CSS3 Adventskalender + Buchverlosung'>CSS3 Adventskalender + Buchverlosung</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog gibt es Bücher zu gewinnen! &#8220;<a href="http://webstandard.kulando.de/post/2011/12/12/buch-gewinnspiel-zum-bergfest-tag-12-im-css3-adventskalender-2011">Buch Gewinnspiel zum Bergfest</a>&#8220;</p>
<div id="tweetbutton1435" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-12-1435.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%2012&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-12-1435.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-24-726.html' rel='bookmark' title='CSS3 Adventskalender Tag 24'>CSS3 Adventskalender Tag 24</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-buchverlosung-286.html' rel='bookmark' title='CSS3 Adventskalender + Buchverlosung'>CSS3 Adventskalender + Buchverlosung</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-12-1435.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple’s Navigation mit Flexbox – CSS3 Adventskalender Tag 11</title>
		<link>http://maddesigns.de/navigation-mit-flexbox-1360.html</link>
		<comments>http://maddesigns.de/navigation-mit-flexbox-1360.html#comments</comments>
		<pubDate>Sat, 10 Dec 2011 23:00:48 +0000</pubDate>
		<dc:creator>Hans Christian Reinl</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[box-shadow]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[flexbox]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1360</guid>
		<description><![CDATA[Apple diktiert Webdesign Seit langer Zeit schon sind Webdesigner immer wieder begeistert von Apples Navigationsleiste. Das ist durchaus darauf zurück zu führen, dass Apple in den letzten Jahren diktiert hat, was ansprechendes Webdesign sein soll. Meiner Meinung nach ist Apples Website immer noch eine der am besten gestalteten Seiten im Netz. Vor allem die Usability [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/teaserboxen-komplett-ohne-bilder-css3-adventskalender-tag-9-489.html' rel='bookmark' title='Teaserboxen komplett ohne Bilder &#8211; CSS3 Adventskalender Tag 9'>Teaserboxen komplett ohne Bilder &#8211; CSS3 Adventskalender Tag 9</a></li>
<li><a href='http://maddesigns.de/fun-with-border-radius-css-sprechblasen-css3-adventskalender-tag-23-692.html' rel='bookmark' title='Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23'>Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2>Apple diktiert Webdesign</h2>
<p>Seit langer Zeit schon sind Webdesigner immer wieder begeistert von Apples Navigationsleiste.<br />
Das ist durchaus darauf zurück zu führen, dass Apple in den letzten Jahren diktiert hat, was ansprechendes Webdesign sein soll.</p>
<p>Meiner Meinung nach ist Apples Website immer noch eine der am besten gestalteten Seiten im Netz. Vor allem die Usability ist (zumeist) überragend.</p>
<p>Das Redesign, dass Google Mitte des Jahres präsentierte ist allerdings sehr gelungen, auch wenn die Usability <a href="http://creativebriefing.com/new-gmail-buttons-usability-issues/">manchmal zu wünschen übrig lässt</a>.</p>
<p><span id="more-1360"></span></p>
<p>Durch Apples Stellung als Designvorbild für viele Designer und Programmierer, entstanden <a href="http://designindevelopment.com/css/apple-navigation-with-css3/">über die Jahre</a> <a href="http://www.threestyles.com/tutorials/coding-apples-navigation-bar-using-css-sprites/">etliche</a> <a href="http://www.kriesi.at/archives/apple-menu-improved-with-jquery">Tutorials</a>, die erklären, wie man Apples Style kopieren kann.<br />
Auch im <a href="http://webstandard.kulando.de/">Webstandards-Blog</a> kann man so <a href="http://webstandard.kulando.de/post/2010/03/05/css3-transition-tutorial-menu-mit-slide-effekt-im-apple-style">ein Tutorial</a> finden.</p>
<h2>TL;DR</h2>
<p>Apples Navigation kann man mit Flexbox und einigen weiteren CSS-Tricks recht einfach implementieren ohne auf Grafiken zurückgreifen zu müssen. Cross-Browser-Kompatibilität lässt sich hierbei durch einen Polyfill namens Flexie.js gewährleisten.</p>
<p>Aus semantischer Sicht hilft beim Markup unter anderem das HTML5-<code>nav</code>-Element.</p>
<h2>Markup</h2>
<p>Bei der aktuellen Navigation der Webseite begeistert mich das Suchfeld. Klickt man in das Feld, wird es großer und die einzelnen Navigationspunkte werden kleiner. Mithilfe von ein paar neuen CSS-Eigenschaften werde ich zeigen, wie man dieses Verhalten recht einfach nachbauen kann.</p>
<h3>HTML</h3>
<p>Als erstes muss man sich über die HTML-Struktur Gedanken machen. Die Links der Navigation packen wir in eine Liste:</p>
<pre>
&lt;ul&gt;
    &lt;li&gt;&lt;a href="#"&gt;Store&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Mac&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;iPod&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;iPhone&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;iPad&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;iPhone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Wenn man einfach eine Dummy-Liste braucht, hilft mir <a href="http://www.html-ipsum.com/">HTML-Ipsum</a> von <a href="http://css-tricks.com/">Chris Coyier</a>. Wem ein Snipped fehlt, der kann es einfach hinzufügen. <a href="https://github.com/chriscoyier/HTML-Ipsum">Das Projekt</a> ist auf GitHub zu finden.</p>
<p>Nun wird also noch das Formular für die Suche definiert. Einfach als Formular! Recht easy, denke ich.</p>
<pre>
&lt;form action="#" method="post"&gt;
    &lt;label for="s"&gt;Search&lt;/label&gt;
    &lt;input type="search" name="search" id="s"&gt;
    &lt;input type="submit"&gt;
&lt;/form&gt;
</pre>
<h4>Semantik der Navigation</h4>
<p>Beide Teile werden schließlich von einem HTML5 <code>nav</code>-Tag umschlossen, das Semantik in die Struktur bringt. Semantik ist vor allem für die Zugänglichkeit von hoher Bedeutung. Deshalb enthält das Suchformular auch ein <code>label</code>, obwohl dies später nicht mehr zu sehen sein wird.</p>
<p>Zum Thema Semantik gab es vor nicht all zu langer Zeit eine große Diskussion unter einigen Experten; hervorgerufen durch <a href="http://coding.smashingmagazine.com/2011/11/11/our-pointless-pursuit-of-semantic-value/">Divya Manians Post</a> auf SmashingMag. Hier einige weitere Meinungen zum Thema:</p>
<ul>
<li><a href="http://adactio.com/journal/4999/">Jeremy Keith</a></li>
<li><a href="http://paulirish.com/2011/semantics/">Paul Irish</a></li>
<li><a href="http://www.paciellogroup.com/blog/2011/11/html5-semantics-and-accessibility/">Steve Faulkner</a></li>
</ul>
<p>Die Spezifikation beschreibt ein <code>nav</code>-Element wie folgt:</p>
<blockquote><p>The <code>nav</code> element represents a section of a page that links to other pages or to parts within the page: a section with navigation links.</p>
<p>~ <a href="http://www.w3.org/TR/html5/sections.html#the-nav-element">HTML5-Spezifikation</a></p>
</blockquote>
<p>Auf deutsch in etwa: &ldquo;Das <code>nav</code>-Element spiegelt einen Bereich einer (Web-)Seite wider, der Links auf andere Seiten oder Teile der Seite enthält: ein Bereich mit Navigationsverweisen.&rdquo;.</p>
<p>Somit sollte unsere HTML-Struktur stehen. Kommen wir also zu den Styles!</p>
<h3>CSS</h3>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/apple-nav.jpg" alt="" title="apple-nav" width="520" height="44" class="aligncenter size-full wp-image-1378" /></p>
<p>Die Navigationspunkte haben bei Apple keine bestimme Größe. Außerdem wächst das Suchfeld, wenn man es anklickt &ndash; fokusiert. Das stellt uns vor das Problem die richtigen Maße für die Elemente zu finden.<br />
Die CSS3 Sezifikation bietet einige neue Grid-Modelle an. Mit einem dieser Modelle wollen wir hier arbeiten: das <a href="http://www.w3.org/TR/css3-flexbox/">Flexible Box Layout Model</a> &ndash; kurz Flexbox.</p>
<h4>Flexbox</h4>
<p>Flexbox ist ein CSS Box Model, bei dem sich die Kindselemente eines Box-Elements an den verfügbaren Platz anpassen, ohne dass man eine bestimme Breite für diese definieren muss.</p>
<p>Da das Flexible Box Modell allerdings eher &ldquo;<a href="http://de.wikipedia.org/wiki/Stand_der_Technik">Cutting Edge</a>&rdquo; ist, unterstützen <a href="http://caniuse.com/flexbox">noch nicht alle Browser</a> die Technik:<br />
So werden die Eigenschaften zwar von Webkit und Gecko unterstützt, allerdings hat Internet Explorer diese erst ab der kommen Version 10 implementiert. Auch Opera bietet bisher leider keinen Support für Flexbox an. Selbst Opera Next &ndash; eine Vorabversion von Opera 12 &ndash; scheint Flexbox bisher nicht implementiert zu haben.</p>
<h5>Neue Flexbox-Syntax</h5>
<p>Eine Besonderheit gibt es bei Flexbox zu beachten: Die Spezifikation wurde vor wenigen Wochen geändert. Einige Eigenschaften wurden umgenannt, weshalb man bei der Implementierung von Flexbox nun ein paar Eigenschaften mehr definieren muss, um sowohl der alten, als auch der neuen Definition gerecht zu werden. Am besten lest ihr selbst noch mal in der <a href="http://dev.w3.org/csswg/css3-flexbox/">neusten Version der Spezifikation</a> nach. In Chrome Canary ist die neue Syntax bereits implementiert. Die anderen &ldquo;modernen&rdquo; Browser unterstützen bisher nur die alte Syntax.</p>
<p>Darüber hinaus ergibt sich natürlich die Frage, wie man die Funktionsweise von Flexbox auch in älteren Browsern zum Laufen bekommt.<br />
Glücklicherweise gibt es Menschen, die sich um so etwas bereits Gedanken gemacht haben und <a href="http://remysharp.com/2010/10/08/what-is-a-polyfill/">Polyfills</a> entwickeln, die <a href="https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills">Cutting-Edge-Technologien auch in älteren Browsern</a> zugänglich machen.<br />
Für Flexbox ist <a href="http://flexiejs.com/">Flexie.js</a> ein entsprechender Polyfill. Funktioniert ab Internet Explorer 6 und Opera 10. Die Dateien findet man auch <a href="https://github.com/doctyper/flexie">auf GitHub</a>.</p>
<p>Weiterführende Informationen (Achtung, meist alte Syntax) gibt&rsquo;s auch hier:</p>
<ul>
<li><a href="http://hacks.mozilla.org/2010/04/the-css-3-flexible-box-model/">Mozillas MDN</a></li>
<li><a href="http://www.html5rocks.com/en/tutorials/flexbox/quick/">HTML5 Rocks</a></li>
<li><a href="http://www.xanthir.com/blog/b48F0">Tab Atikins jr.</a> &ndash; Editor of the Specification</li>
<li><a href="http://oli.jp/2011/css3-flexbox/">Oli Studholme</a></li>
</ul>
<p>Der Code sieht dann ohne Präfixes mit der neuen Syntax so aus:</p>
<pre>
nav {
    display: flexbox;
}

ul {
    display: flexbox;
    width: flex(1);
}

li {
    width: flex(1);
}
</pre>
<p>Die alte Syntax kennt <code>display: flexbox</code> nicht. Man muss hier <code>display: box</code> definieren.<br />
Auch ist die Funktion <code>flex()</code> neu eingeführt. Die alte Syntax sieht hier die Eigenschaft <code>box-flex</code> vor, die entsprechend den Wert <code>1</code> zugewiesen bekommt.</p>
<h4>Das Suchfeld</h4>
<p>Nun definieren wir für das Such-Feld eine bestimmte Größe:</p>
<pre>
input[type="search"] {
    width: 100px;
}
</pre>
<p>Sobald man die Suche fokussiert, wird das Suchfeld größer:</p>
<pre>
input[type="search"]:focus {
    width: 200px;
}
</pre>
<p>Das Label und auch das Submit-<code>input</code>-Feld verstecken wir so, dass es nicht mehr sichtbar ist, für Screenreader aber noch zugänglich:</p>
<pre>
label,
input[type="submit"] {
    position: absolute;
    left: 999em;
}
</pre>
<p>Das Gute ist, dass die Navigation mit Suchfeld in allen Browsern einfach funktioniert &ndash; nicht unbedingt mit allen Feinheiten, die die modernen Browser bieten; aber auch Internet Explorer 7&amp;8 bieten mit Flexie.js ausreichend Funktionalität an.</p>
<p><a href="http://jsfiddle.net/drublic/kjaQB/">Hier</a> habe ich ein jsFiddle erstellt, das beide Syntaxen mit Browser-Prefixes zeigt.</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/drublic/kjaQB/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<h3>Weiteres Styling</h3>
<p>Apple setzt beim Design aktuell noch auf PNG-Grafiken. Allerdings kann man das Styling durchaus auch mit CSS umsetzen:</p>
<p>Zunächst definiert man eine einfache Hintergrund-Farbe sowie den Rahmen:</p>
<pre>
nav {
    background: #777;
    border: 1px solid #707070;
    border-bottom-color: #444;
}
</pre>
<p>Zusätzlich kreieren wir für jedes Listen-Element sowie das Formular den &ldquo;glossy look&rdquo; mit <code>box-shadow</code>:</p>
<pre>
li a {
    box-shadow: inset 0 17px 1px 0 rgba(255,255,255,.2);
}

form {
    box-shadow: inset 0 17px 1px 0 rgba(255,255,255,.2);
}
</pre>
<p>Beim Hovern eines Links soll der entsprechend Link etwas dunkler wirken:</p>
<pre>
li a:hover {
    background: #444;
    box-shadow: inset 0 17px 1px 0 rgba(255,255,255,.05);
}
</pre>
<p>Nun haben wir also die grundsätzlichen Styles definiert und können zusätzlich ein paar Feinheiten hinzufügen, um die Navigation generell zu stylen und der von Apple noch ähnlicher zu machen.</p>
<p>Daraus resultiert dann <a href="http://jsfiddle.net/drublic/6UjVd/">dieses jsFiddle</a> mit allen Styles.</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/drublic/6UjVd/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<h2>Fazit</h2>
<p>Apple kann an einigen Stellen sicherlich noch nachbessern, was die Navigation anbelangt. Man kann eventuell auf die ein oder andere Grafik verzichten und stattdessen CSS verwenden.</p>
<p>Dennoch denke ich, dass Flexbox noch nicht komplett fertig entwickelt ist, was man durchaus auch an den kürzlichen Änderungen in der Spezifikation sieht. CSS3 ist eben noch kein Standard und kann sich immer noch verändern, wenn die Editoren feststellen, dass Begrifflichkeit vermeintlich uneindeutig gewählt sind oder einfach die Funktionalität noch nicht intuitiv genug ist.</p>
<p>Wer Flexbox einsetzt, muss sich darüber im Klaren sein, dass die Ausgabe noch nicht bei allen Browsern die Gleiche ist und daher auf einen Polyfill zurück greifen.</p>
<p>Eventuell kann man das Flexible Box Model in anderen Bereichen, die nicht so stark an ein einheitliches Erscheinungsbild gebunden sind, wie die Navigation, aber bereits effizienter einsetzen &ndash; beispielsweise im Fließtext.</p>
<hr />
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/blog-hans-min.jpg" alt="" width="110" height="110" class="alignleft size-thumbnail wp-image-1241" style="margin-right: 12px" /><strong>Hans Christian Reinl</strong> ist heute unser Gastautor im CSS3 Adventskalender. Hans ist Frontend Webdeveloper und arbeitet gerade in Freiburg bei der Agentur <a href="http://gebruederheitz.de/">/gebrüderheitz</a> sowie als Freiberufler.<br />
In seinem Blog <a href="http://drublic.de/blog/">drublic.de</a> schreibt er auf englisch einiges über Cutting-Edge-Webtechnologien. Auf Twitter ist er als <a href="https://twitter.com/#!/drublic">@drublic</a> unterwegs und auf <a href="https://plus.google.com/112019818423540363330/">Google+</a> sowie <a href="https://github.com/drublic">GitHub</a> zu finden.<br style="clear:both" /></p>
<hr />
<p>Auf Verbesserungsvorschläge bin ich gespannt. Schreibt eure Meinung gerne in die Kommentare oder <a href="mailto:info@drublic.de">schickt mir eine E-Mail</a>. Wenn ihr denkt, dass die Technik noch viel zu &ldquo;frisch&rdquo; und unausgereift ist, freue ich mich auf eure Begründungen.</p>
<div id="tweetbutton1360" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fnavigation-mit-flexbox-1360.html&amp;via=maddesigns&amp;text=Apple%E2%80%99s%20Navigation%20mit%20Flexbox%20%E2%80%93%20CSS3%20Adventskalender%20Tag%2011&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fnavigation-mit-flexbox-1360.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/teaserboxen-komplett-ohne-bilder-css3-adventskalender-tag-9-489.html' rel='bookmark' title='Teaserboxen komplett ohne Bilder &#8211; CSS3 Adventskalender Tag 9'>Teaserboxen komplett ohne Bilder &#8211; CSS3 Adventskalender Tag 9</a></li>
<li><a href='http://maddesigns.de/fun-with-border-radius-css-sprechblasen-css3-adventskalender-tag-23-692.html' rel='bookmark' title='Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23'>Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/navigation-mit-flexbox-1360.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 10</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-10-1356.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-10-1356.html#comments</comments>
		<pubDate>Sat, 10 Dec 2011 21:22:12 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[text-shadow]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1356</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema &#8220;CSS3 Text-Shadow erzeugt Blur-Effekt&#8220; Tweet]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema &#8220;<a href="http://webstandard.kulando.de/post/2011/12/09/css3-text-shadow-erzeugt-blur-effekt-tag-10-im-css3-adventskalender-2011">CSS3 Text-Shadow erzeugt Blur-Effekt</a>&#8220;</p>
<div id="tweetbutton1356" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-10-1356.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%2010&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-10-1356.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-10-1356.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 transitions to go – CSS3 Adventskalender Tag 9</title>
		<link>http://maddesigns.de/css3-transitions-to-go-1328.html</link>
		<comments>http://maddesigns.de/css3-transitions-to-go-1328.html#comments</comments>
		<pubDate>Fri, 09 Dec 2011 07:39:06 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[transition]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1328</guid>
		<description><![CDATA[Transitions ist auch heute wieder Thema im CSS3 Adventskalender. Am Tag 4 zeigte Heiko im Webstandard-Blog am Beispiel eines Call-to-Action Button was man mit Transion und Transform mit CSS3 für Effekte erziehlen kann. Seit der Einführung von -moz-transition im Firefox 4 konnten Transitions endlich mehr verwendet werden, da der Browsermarkanteil der unterstützenden Browser enorm gestiegen [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-transitions-css-animation-css3-adventskalender-tag-21-661.html' rel='bookmark' title='CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21'>CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-14-590.html' rel='bookmark' title='CSS3 Adventskalender Tag 14'>CSS3 Adventskalender Tag 14</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Transitions ist auch heute wieder Thema im CSS3 Adventskalender. Am Tag 4 zeigte Heiko im <a href="http://webstandard.kulando.de/" title="Webstandard Blog">Webstandard-Blog</a> am <a href="http://webstandard.kulando.de/post/2011/12/03/css-transform-und-transition-tag-4-im-css3-advenstkalender-2011" title="CSS3 transition und transform">Beispiel eines Call-to-Action Button</a> was man mit Transion und Transform mit CSS3 für Effekte erziehlen kann. Seit der Einführung von -moz-transition im Firefox 4 konnten Transitions endlich mehr verwendet werden, da der Browsermarkanteil der unterstützenden Browser enorm gestiegen ist. Auf die detailierte Funktionweise möchte ich heute nicht weiter eingehn, das war ja schon <a href="http://maddesigns.de/css3-transitions-css-animation-css3-adventskalender-tag-21-661.html" title="CSS3 transitions – CSS Animation – CSS3 Adventskalender Tag 21">Thema im letzten Jahr</a>.<br />
<span id="more-1328"></span><br />
Vielmehr gibt es heut ein paar Snippets um <code>:hover</code>-Transitions auf Bildern zu animieren. Doch nur nochmal zur Erinnerung, transitions können auch auf andere dynamische Pseudoklassen wie <code>:active</code>, <code>:focus</code>, <code>:target</code>, <code>:disabled</code>, etc., aber auch auf @media-Queries angewendet werden. Schaut durch die Demo &#8211; durch CSS3 werden nun einige jQuery Animation überflüssig.</p>
<h3>image transition Demo &#8211; auf das Bild klicken <img src='http://maddesigns.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </h3>
<div class="imagebox"><a href="http://maddesigns.de/wp-content/uploads/2011/12/css3-transition.html"><span class="overlay zoom-black">&nbsp;</span><img alt="" src="http://maddesigns.de/wp-content/uploads/2011/12/kitty.jpg" /></a></div>
<p><a style="clear:both; display: block" href='http://maddesigns.de/wp-content/uploads/2011/12/transitions.txt' target="_blank">CSS-Datei aus der Demo zum Download</a></p>
<h3>Tools:</h3>
<p>Ceaser &#8211; CSS Easing Animation Tool (<a href="http://matthewlein.com/ceaser/" title="Ceaser transition timing tool">matthewlein.com/ceaser/</a>)</p>
<p>cubic-bezier.com (<a href="http://cubic-bezier.com/" title="transition timing tool by Lea Verou">cubic-bezier.com</a>)</p>
<h3>Link Tipps:</h3>
<p>CSS Transitions 101 (<a href="http://www.webdesignerdepot.com/2010/01/css-transitions-101/" title="transition 101 tutorial">www.webdesignerdepot.com/2010/01/css-transitions-101/</a>)</p>
<p>Let the Web move you — CSS3 Animations and Transitions (<a href="http://www.webdirections.org/blog/let-the-web-move-you-css3-animations-and-transitions/" title="transitions and animations">www.webdirections.org/blog/let-the-web-move-you-css3-animations-and-transitions/</a>)</p>
<p><a href="http://blogs.msdn.com/b/eternalcoding/archive/2011/12/06/css3-transitions.aspx" title="Introduction to CSS3 transitions">Introduction to CSS3 Transitions</a> (via <a href="http://twitter.com/#!/Flocke/" title="Jens Grochdreis auf Twitter">@Flocke</a>)</p>
<h3>Browser-Support</h3>
<p>Alle Browser verwenden noch die jeweiligen Vendor-Prefixe, z.B. -moz-transition. Der Internet Explorer unterstütz CSS3 transitions ab IE10. <img src="http://maddesigns.de/wp-content/uploads/2010/12/browserChoice-maddesigns.jpg" alt="" title="browserChoice-maddesigns" width="521" height="115" class="aligncenter size-full wp-image-532" /></p>
<div id="tweetbutton1328" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-transitions-to-go-1328.html&amp;via=maddesigns&amp;text=CSS3%20transitions%20to%20go%20%E2%80%93%20CSS3%20Adventskalender%20Tag%209&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-transitions-to-go-1328.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-transitions-css-animation-css3-adventskalender-tag-21-661.html' rel='bookmark' title='CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21'>CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-14-590.html' rel='bookmark' title='CSS3 Adventskalender Tag 14'>CSS3 Adventskalender Tag 14</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-transitions-to-go-1328.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 8</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-8-1321.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-8-1321.html#comments</comments>
		<pubDate>Thu, 08 Dec 2011 08:09:39 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[media-queries]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1321</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS Media Queries &#8211; Screen Size Icons” &#8211; ein Gastartikel von David Hellmann (www.davidhellmann.com) TweetRelated posts: CSS3 Adventskalender 2011 CSS3 Adventskalender Tag 12 CSS3 Adventskalender 2011 – Tag 6
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-12-548.html' rel='bookmark' title='CSS3 Adventskalender Tag 12'>CSS3 Adventskalender Tag 12</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/08/css-media-queries-screen-size-icons-tag-8-im-css3-advenstkalender-2011">CSS Media Queries &#8211; Screen Size Icons</a>” &#8211; ein Gastartikel von David Hellmann (<a href="http://www.davidhellmann.com/">www.davidhellmann.com</a>)</p>
<div id="tweetbutton1321" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-8-1321.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%208&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-8-1321.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-12-548.html' rel='bookmark' title='CSS3 Adventskalender Tag 12'>CSS3 Adventskalender Tag 12</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 6'>CSS3 Adventskalender 2011 – Tag 6</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-8-1321.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>border-image – CSS3 Adventskalender Tag 7</title>
		<link>http://maddesigns.de/border-image-1281.html</link>
		<comments>http://maddesigns.de/border-image-1281.html#comments</comments>
		<pubDate>Wed, 07 Dec 2011 09:04:08 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[border-image]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1281</guid>
		<description><![CDATA[Heute im CSS3 Adventskalender eine kleines Tutorial, zum Thema &#8220;border-image&#8220;. Responsive Design ist ja in aller Munde und auch in allen Adventskalendern dieses Jahr. Die Eigenschaft border-image ist dem einen oder anderen Webworker nicht neu, aber im Zusammenhang mit Responsive Images gewinnt es sicherlich mehr an Bedeutung. Die Möglichkeit, dass sich die Content-Box, das Bild [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/border-radius-runde-ecken-css3-adventskalender-tag-1-288.html' rel='bookmark' title='border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1'>border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1</a></li>
<li><a href='http://maddesigns.de/fun-with-border-radius-css-sprechblasen-css3-adventskalender-tag-23-692.html' rel='bookmark' title='Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23'>Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23</a></li>
<li><a href='http://maddesigns.de/css3-gradient-border-1141.html' rel='bookmark' title='Gradient Border – CSS3 Adventskalender Tag 1'>Gradient Border – CSS3 Adventskalender Tag 1</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Heute im CSS3 Adventskalender eine kleines Tutorial, zum Thema &#8220;<code><strong>border-image</strong></code>&#8220;. Responsive Design ist ja in aller Munde und auch in allen <a href="http://24ways.org/2011" title="24ways advent calendar">Adventskalendern</a> dieses Jahr. Die Eigenschaft <code>border-image</code> ist dem einen oder anderen Webworker nicht neu, aber im Zusammenhang mit Responsive Images gewinnt es sicherlich mehr an Bedeutung. Die Möglichkeit, dass sich die Content-Box, das Bild und das Border-Image anpassen ist mit CSS3 in modernen Browsern möglich.<br />
<span id="more-1281"></span><br />
Ich möchte auch nicht zu sehr ins Detail gehen, das haben <a href="http://www.css3files.com/border/" title="border-image">andere</a> <a href="http://www.useragentman.com/blog/2011/03/29/pixel-perfect-css3-border-image-in-depth/" title="border-image in depth">Tutorials</a> <a href="http://css-tricks.com/6883-understanding-border-image/">bereits</a> <a href="http://www.sitepoint.com/css3-border-image/">sehr gut gemacht</a>.</p>
<p>Das W3C beschreibt es ebenfalls sehr gut und liefert auch ein gutes Beispiel für die Verwendung von <code>border-image</code>.</p>
<p><a href="http://maddesigns.de/wp-content/uploads/2011/12/groovy-border-image-slice.png"><img src="http://maddesigns.de/wp-content/uploads/2011/12/groovy-border-image-slice.png" alt="" title="groovy-border-image-slice" width="396" height="375" class="aligncenter size-full wp-image-1287" /></a></p>
<pre>
border-image: url(border-image.jpg) 124 repeat;
</pre>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/groovy-border-image-slice1.png" alt="" title="groovy-border-image-slice1" width="452" height="537" class="aligncenter size-full wp-image-1289" /></p>
<p>Zusammenfassen kann man die Shorthand-Notation in der Form:</p>
<pre>
border-image: uri top right bottom left x_repeat y_repeat
</pre>
<p>und man kann optinal auch die border-width in die Notation aufnehmen:</p>
<pre>
border-image: uri top right bottom left / border x_repeat y_repeat
</pre>
<p>Die Trennung zwischen Slice-Wert und Border-Width erfolgt durch ein / (Slash). Die <code>border-width</code> kann natürlich auch vier unterschiedliche Werte annehmen für jede Seite.</p>
<h3>Ein einfaches Beispiel</h3>
<p><a href="http://maddesigns.de/wp-content/uploads/2011/12/border-image-xmas.png"><img src="http://maddesigns.de/wp-content/uploads/2011/12/border-image-xmas.png" alt="" title="border-image-xmas" width="100" height="100" class="aligncenter size-full wp-image-1283" /></a></p>
<p>Einen einfachen weihnachtlichen Rahmen mit Fireworks erstellt und eingebunden:</p>
<pre style="clear: both">
.xmas {
	-webkit-border-image: url("border-image-xmas.png") 14 repeat;
	   -moz-border-image: url("border-image-xmas.png") 14 repeat;
	     -o-border-image: url("border-image-xmas.png") 14 repeat;
	        border-image: url("border-image-xmas.png") 14 repeat;
}
</pre>
<p>Der Browser-Support ist für moderne Browser gewohnt gut. Leider unterstützt der Internet Explorer in keiner Version <code>border-image</code> und es ist aktuell auch nicht für IE10 geplant. Deshalb sollte man (wenn man einen visuellen Rahmen hinzufügen müsste) für die Internet Explorer ein Fallback hinzufügen.</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/maddesigns/xzHCh/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>Der JSFiddle-Code:</p>
<pre>
.box {
    width: 150px;
    height: 100px;
    padding: 10px;
    margin: 10px;
    float: left;
    /* IE Fallback */
    border: 7px double green;
}
.xmas {
    -webkit-border-image: url("border-image-xmas.png") 14 repeat;
       -moz-border-image: url("border-image-xmas.png") 14 repeat;
         -o-border-image: url("border-image-xmas.png") 14 repeat;
            border-image: url("border-image-xmas.png") 14 repeat;

    border-width: 14px;
}
</pre>
<h3>Link-Tipps</h3>
<p><a href="http://www.norabrowndesign.com/css-experiments/border-image-frame.html">border-image Demo</a><br />
<a href="http://border-image.com/">border-image.com</a> – test und play around</p>
<h3>Browser-Support</h3>
<p>Wie schon erwähnt kann der Internet Explorer bis zur aktuellen IE10 Preview kein border-image.</p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/11/browserChoice-no-IE.jpg" alt="" title="browserChoice-no-IE" width="521" height="115" class="aligncenter size-full wp-image-1188" /></p>
<p>In Webkit-Browsern kann zusätzlich auch eine Gradient-Funktion (<code>linear-gradient</code>) als Image verwendet werden (<a href="http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/doc/uid/TP30001266--webkit-border-image">Safari Referen</a>z). Ein JS-Fiddle dazu von Divya Manian:</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/nimbu/fbw2q/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>Geht das auch im Firefox oder Opera? Hat das schon mal jemand gemacht? Dann könnte man sich beim Tutorial zu <a href="http://maddesigns.de/css3-gradient-border-1141.html" title="Gradient Border – CSS3 Adventskalender Tag 1">gradient-border</a> ein paar Zeilen sparen.</p>
<div id="tweetbutton1281" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fborder-image-1281.html&amp;via=maddesigns&amp;text=border-image%20%E2%80%93%20CSS3%20Adventskalender%20Tag%207&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fborder-image-1281.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/border-radius-runde-ecken-css3-adventskalender-tag-1-288.html' rel='bookmark' title='border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1'>border-radius (runde Ecken) &#8211; CSS3 Adventskalender Tag 1</a></li>
<li><a href='http://maddesigns.de/fun-with-border-radius-css-sprechblasen-css3-adventskalender-tag-23-692.html' rel='bookmark' title='Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23'>Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23</a></li>
<li><a href='http://maddesigns.de/css3-gradient-border-1141.html' rel='bookmark' title='Gradient Border – CSS3 Adventskalender Tag 1'>Gradient Border – CSS3 Adventskalender Tag 1</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/border-image-1281.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 6</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html#comments</comments>
		<pubDate>Tue, 06 Dec 2011 08:02:11 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[keyframes]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1273</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS3-Keyframe-Animationen” &#8211; ein Gastartikel von Jonas Hellwig (www.kulturbanause.de) TweetRelated posts: CSS3 Adventskalender 2011 CSS3 Adventskalender 2011 – Tag 4 CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-transitions-css-animation-css3-adventskalender-tag-21-661.html' rel='bookmark' title='CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21'>CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/06/css3-animations-tag-6-im-css3-advenstkalender-2011">CSS3-Keyframe-Animationen</a>” &#8211; ein Gastartikel von Jonas Hellwig (<a href="http://www.kulturbanause.de">www.kulturbanause.de</a>)</p>
<div id="tweetbutton1273" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-6-1273.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%206&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-6-1273.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html' rel='bookmark' title='CSS3 Adventskalender 2011 – Tag 4'>CSS3 Adventskalender 2011 – Tag 4</a></li>
<li><a href='http://maddesigns.de/css3-transitions-css-animation-css3-adventskalender-tag-21-661.html' rel='bookmark' title='CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21'>CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-6-1273.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schönere CSS3 Transforms – CSS3 Adventskalender Tag 5</title>
		<link>http://maddesigns.de/schonere-css3-transforms-%e2%80%93-css3-adventskalender-tag-5-1227.html</link>
		<comments>http://maddesigns.de/schonere-css3-transforms-%e2%80%93-css3-adventskalender-tag-5-1227.html#comments</comments>
		<pubDate>Mon, 05 Dec 2011 08:07:35 +0000</pubDate>
		<dc:creator>Christian (derSchepp) Schaefer</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[3d-transform]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[transform]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1227</guid>
		<description><![CDATA[Dank der vollständigen Unterstützung von CSS3 Transforms in den neuen Browsern und des Matrix-Filters in den älteren IE ist es uns heutzutage möglich, Elemente auf einer Seite in allen Browsern kreuz und quer rotiert darzustellen, und zwar eben ohne den Rückgriff auf vorberechnete rotierte Grafiken. Damit eröffnet sich eine ganze Palette neuer Gestaltungsmöglichkeiten, wie zum [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-14-590.html' rel='bookmark' title='CSS3 Adventskalender Tag 14'>CSS3 Adventskalender Tag 14</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-18-639.html' rel='bookmark' title='CSS3 Adventskalender Tag 18'>CSS3 Adventskalender Tag 18</a></li>
<li><a href='http://maddesigns.de/fun-with-border-radius-css-sprechblasen-css3-adventskalender-tag-23-692.html' rel='bookmark' title='Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23'>Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dank der vollständigen Unterstützung von CSS3 Transforms in den neuen Browsern und des Matrix-Filters in den älteren IE ist es uns heutzutage möglich, Elemente auf einer Seite in allen Browsern kreuz und quer rotiert darzustellen, und zwar eben ohne den Rückgriff auf vorberechnete rotierte Grafiken. Damit eröffnet sich eine ganze Palette neuer Gestaltungsmöglichkeiten, wie zum Beispiel eine dynamisch erzeugte Bildergalerie, die einer Gruppe auf einem Tisch verstreuter Polaroids ähnelt:</p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/polaroids.jpg" alt="" title="polaroids-galerie" width="550" height="303" class="aligncenter size-full wp-image-1240" /><br />
<span id="more-1227"></span><br />
Es lässt aber genauso eine Google Maps Karte rotiert einbinden, wie es die Kollegen von <a href="http://vortrieb.net/" title="Vortrieb.net Webentwicklung">vortrieb.net</a> vormachen:</p>
<p><a href="http://vortrieb.net/kontakt"><img src="http://maddesigns.de/wp-content/uploads/2011/12/google-maps.jpg" alt="" title="google-maps-vortrieb" width="550" height="315" class="aligncenter size-full wp-image-1239" /></a></p>
<p>So weit, so gut. CSS3 Transforms, wie auch der IE Matrix Filter haben in der Praxis allerdings auch Schattenseiten: Verschiedene Browser haben nämlich starke Probleme bei der Schrift- und Kantenglättung rotierter Elemente. Vereinzelt sieht das Ergebnis so übel aus, dass man geneigt ist, ganz auf das Rotieren per CSS zu verzichten. </p>
<p>Ein erstes Negativbeispiel ist das Erscheinungsbild von rotierten Bildern in iOS:</p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/bild-ungeglaettet-ios5.jpg" alt="" title="bild-ungeglaettet-ios5" width="312" height="357" class="aligncenter size-full wp-image-1238" /></p>
<p>Die Kanten des Bildes sind sichtbar stufig und sägen damit stark am visuellen Wow-Effekt.</p>
<p>Ein probates Gegenmittel für iOS hat <a href="http://www.css-101.org/articles/-webkit-transform-rotate-and-anti-aliasing/rotate-creates-jagged-border-image.php">Thierry Koblentz Mitte des Jahres gefunden</a>, nämlich das zu rotierende Bild nicht als &lt;img> Element, sondern als (Inline-)Block-Element mit entsprechendem Hintergrundbild auszuführen, um dieses dann mit der Anweisung background-clip: padding-box; rundherum glatt zu abschneiden. So sieht der Code für unser Kätzchen aus:</p>
<pre>
div.kitten {
	width: 200px;
	height: 300px;
	background: url('http://placekitten.com/200/300');

	-webkit-background-clip: padding-box; /* IOS fix */
	background-clip: padding-box; /* IOS fix */

	/* Damit das Element sich wie ein Bild verhält,
	muss display: inline-block gesetzt werden */
	display: inline-block;

	/* Inline-Block für IE6/7 über display: inline + zoom: 1
	per Stern-Hack nur sichtbar für IE6/7 */
	*display: inline;

	/* 6° Rotation via CSS3 Transforms */
	-webkit-transform: rotate(6deg); /* Webkit */
	-moz-transform: rotate(6deg); /* Mozilla Firefox */
	-o-transform: rotate(6deg); /* Opera */
	-ms-transform: rotate(6deg); /* IE9+ */
	transform: rotate(6deg); /* W3C */

	/* 6° Rotation via IE Matrix Filter, IE6-9 */
	filter: progid:DXImageTransform.Microsoft.Matrix(
            M11=0.9945218953682733,
            M12=-0.10452846326765346,
            M21=0.10452846326765346,
            M22=0.9945218953682733, sizingMethod='auto expand');

	/* Ohne zoom gehen Filter und Inline-Block nicht in IE6/7 */
	zoom: 1;
}

div.kitten:nth-of-type(1n) {
	/* Deaktivieren des Filters in IE9,
	der ja CSS Transforms beherrscht */
	filter: none;
}
</pre>
<p>Damit wäre in iOS alles glattgerechnet, aber nun hat der Chrome-Browser Glättungsprobleme, die er mit dem &lt;img>-Element so nicht hatte: </p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/bild-ungeglaettet-chrome15.jpg" alt="" title="bild-ungeglaettet-chrome15" width="283" height="368" class="aligncenter size-full wp-image-1237" /></p>
<p>Im Chrome-Browser hilft jedoch ein Trick, der bei rotierten Elementen unter WebKit fast immer greift: Man zwingt den Browser dazu, das Objekt mit Hardware-Beschleunigung zu zeichnen. Dankenswerterweise ist es dann so, dass die Grafikkarte automatisch alles zu Zeichenende glattrechnet. Wie aktiviert man die Hardware-Beschleunigung? Indem man zusätzlich eine CSS 3D-Transformations-Anweisung einbaut, die aber eigentlich nichts transformiert sondern nur so tut, zum Beispiel ein translate3d mit Null-Werten:</p>
<pre>
-webkit-transform: translate3d(0,0,0) rotate(6deg);
</pre>
<p>Das Endresultat (live):</p>
<p><iframe frameborder="0" allowfullscreen="allowfullscreen" src="http://jsfiddle.net/maddesigns/xgQ6M/embedded/result/" style="width: 100%; height: 500px"></iframe><br />
Code: <a href="http://jsfiddle.net/maddesigns/xgQ6M/">http://jsfiddle.net/maddesigns/xgQ6M/</a></p>
<h3>Rotierter Text mit CSS3 glätten</h3>
<p>Die nächste problematische Situation gibt es, wenn Sie Elemente mit CSS3-Farbverläufen und Rand, oder Elemente mit Text darin rotieren. Verschiedene Konstellationen machen da verschiedene Fehler: </p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/Verlauf-Text-ungeglaettet.jpg" alt="" title="Verlauf-Text-ungeglaettet" width="550" height="100" class="aligncenter size-full wp-image-1243" /></p>
<p>Die WebKit-Browser unter Windows zum Beispiel ziehen einigermaßen saubere Kanten, verhunzen den Text jedoch, weil sie noch auf die ältere Cleartype-Schriftglättung zurückgreifen, die dem Szenario nicht gewachsen ist. Firefox hingegen hat mit der Schrift null Probleme, weil er das modernere DirectWrite nutzt (in Vista und Windows 7). Dafür reisst er jedoch Lücken zwischen dem CSS3-Farbverlauf und dem ebenfalls per CSS gesetzten Border auf. Safari unter OSX hat aufgrund der sehr guten Schriftglättung von Quarz kein Problem mit der Schrift, aber auch dort könnten die Kanten wie unter Windows noch eine Spur schöner sein.</p>
<p>Wieder können wir für die WebKit-Browser den Joker &#8220;CSS 3D-Transformation&#8221; ziehen, der dafür sorgt, dass die Kanten glatter werden.</p>
<pre>
-webkit-transform: translate3d(0,0,0) rotate(6deg);
</pre>
<p>Damit die Schrift unter Cleartype etwas weniger bröckelig wirkt, wenden wir ein minimales Text-Glühen in der Farbe des Textes an:</p>
<pre>
text-shadow: 0 0 1px rgba(255,255,255,0.25);
</pre>
<p>Nun bleibt noch, in Firefox die Lücken zwischen Hintergrundverlauf und Rahmen zu beheben. Das bewerkstelligen wir auf ganz ungewöhnliche Art und Weise, nämlich dadurch, dass wir den Farbverlauf durch eine Kombination von Hintergrundfarbe und einem einseitig innen gerichteten Box-Shadow nachbauen:</p>
<pre>
/* untere Farbverlaufsfarbe */
background: #a40518;

/* innerer Schatten, der von oben weich hineinverläuft

box-shadow: inset 0 [element Höhe] [element Höhe]
([element Höhe] * -0.5) [obere Farbverlaufsfarbe] */    

-webkit-box-shadow: inset 0 34px 34px -17px #dd001a;
-moz-box-shadow: inset 0 34px 34px -17px #dd001a;
-o-box-shadow: inset 0 34px 34px -17px #dd001a;
box-shadow: inset 0 34px 34px -17px #dd001a;
</pre>
<p>Das visuelle Ergebnis ist letztendlich dasselbe, aber Firefox lässt nun keine Lücken mehr. Ein weiterer Vorteil dieses &#8220;Farbverlaufs&#8221; ist der, dass auch IE9 ihn darstellen kann, wohingegen er ja sonst keine echten Farbverläufe beherrscht. Hier das Live-Ergebnis:</p>
<p><iframe frameborder="0" allowfullscreen="allowfullscreen" src="http://jsfiddle.net/Schepp/TsuDf/embedded/result" style="width: 100%; height: 500px"></iframe><br />
Code: <a href="http://jsfiddle.net/Schepp/TsuDf/">http://jsfiddle.net/Schepp/TsuDf/</a></p>
<p>Die älteren IEs haben hier übrigens null Probleme. Wo sie jedoch Probleme haben ist wenn man rotierte Texte transparent vor einem Hintergrund platziert:</p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/Text-ungeglaettet.jpg" alt="" title="Text-ungeglaettet" width="550" height="110" class="aligncenter size-full wp-image-1242" /></p>
<p>Die alten IEs reagieren hier mit überfetteter Schrift, da es ihnen an &#8220;Verfügungsmasse&#8221; zum Glätten fehlt, sprich an Hintergrundfarbe im rotierten Element selbst, mit der sie die Textfarbe weich überblenden können. Chrome unter Windows hat dasselbe Problem wie eben schon einmal, nämlich das Cleartype-Problem. Und wieder juckt es Firefox nicht, denn der nutzt DirectWrite.</p>
<p>Chromes Problem lösen wir genauso schnell wie vorhin, indem wir einen minimalen Textschatten hinzufügen, der die Schrift weichzeichnet:</p>
<pre>
text-shadow: 0 0 1px rgba(128,128,128,0.1);
</pre>
<p>Dem IE können wir auch helfen. Und zwar müssen wir dem rotierten Element zunächst einmal eine Hintergrundfarbe geben, damit er die Schrift weich überblenden kann. Idealerweise nehmen wir dafür eine Farbe, die ungefähr dem Farbton des eigentlich geplanten Hintergrunds entspricht, hier also sandfarben:</p>
<pre>
*background: #c49e6d;
</pre>
<p>Das *-Sternchen sorgt dafür, dass nur IE6 und 7 diese Anweisung sehen. Und jetzt kommt&#8217;s: Nun hängen wir vor dem Matrix-Filter zusätzlich einen Chroma-Filter ein:</p>
<pre>
filter:
	progid:DXImageTransform.Microsoft.Chroma(color="#c49e6d"),
	progid:DXImageTransform.Microsoft.Matrix(M11=0.99452190,
				M12=-0.10452846,
				M21=0.10452846,
				M22=0.99452190,
				sizingMethod='auto expand');
</pre>
<p>Mehrere Filter lassen sich problemlos kommagetrennt in eine filter-Eigenschaft stecken. Der Chroma-Filter sorgt dafür, dass alle Bereiche eines Elements in einer definierten Farbe ausgestanzt und damit durchsichtig werden. Wir konfigurieren ihn mit der Farbe, die wir als (Hilfs-)Hintergrund genutzt haben, also #c49e6d, und machen die Bereiche um unseren fertig geglätteten Text dadurch wieder transparent, ganz so wie wir es ursprünglich wollten. Danach erst darf der Matrix-Filter seines Amtes walten und das Element rotieren. Das Live-Ergebnis:</p>
<p><iframe frameborder="0" allowfullscreen="allowfullscreen" src="http://jsfiddle.net/Schepp/NDrCU/embedded/result" style="width: 100%; height: 300px"></iframe><br />
Code: <a href="http://jsfiddle.net/Schepp/NDrCU/">http://jsfiddle.net/Schepp/NDrCU/</a></p>
<p>Im Großen und Ganzen sollte man sich also nicht entmutigen lassen, sondern sich mit diesen Tricks gegen Browserbugs wehren. Gleichzeitig schadet es natürlich nicht, wenn wir weiter darauf hin arbeiten, die alten IEs loszuwerden, und den WebKit-Machern so lange auf den Keks gehen, bis sie ihren Browser mal auf Vordermann gebracht haben.</p>
<hr />
<p><img src="http://maddesigns.de/wp-content/uploads/2011/12/Schepp-2010a-150x150.jpg" alt="" title="Schepp-2010a" width="150" height="150" class="alignleft size-thumbnail wp-image-1241" style="margin-right: 12px" />Dies ist ein Gastartikel von <strong>Christian ”Schepp” Schaefer</strong> im CSS3-Adventskalender. Christian ist freiberuflicher Webentwickler aus Düsseldorf. Er ist Autor der Ladezeitenbeschleuniger-Bibliothek <a href="http://github.com/Schepp/CSS-JS-Booster" title="CSS-JS-Booster">CSS-JS-Booster</a> sowie Moderator des wöchentlich erscheinenden <a href="http://workingdraft.de/" title="Working Draft Webtech Podcast">Working Draft Podcasts</a> and er verfolgt Eure Tweets mit seinem Account <a href="http://twitter.com/derSchepp" title="Christian Schaefer bei Twitter">derSchepp</a>.<br />
<br style="clear:both" /></p>
<hr />
</p>
<h2>CSS3 Adventskalender Gewinnspiel</h2>
<p>In Woche 2 im CSS3 Adventskalender Gewinnspiel verlosen wir das Video-Training &#8220;<a href="http://www.galileo-videotrainings.de/webseiten-programmieren-und-gestalten/2414/training/" title="Galileo Videotrainings">Webseiten programmieren und gestalten</a>&#8221; von Christian ”Schepp” Schaefer &#8211; Hier ein kleiner Einblick:</p>
<p><object id="null" width="520" height="360" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param value="true" name="allowfullscreen"/><param value="always" name="allowscriptaccess"/><param value="high" name="quality"/><param value="true" name="cachebusting"/><param value="#000000" name="bgcolor"/><param name="movie" value="http://media.galileo-videotrainings.de//flash/Flowplayer/player.swf?0.5228952806383996" /><param value="config=%7B%22plugins%22%3A%7B%22loadconf%22%3A%7B%22splashImageBaseUrl%22%3A%22http%3A//download.galileo-videotrainings.de/video%22%2C%22configUrl%22%3A%22http%3A//www.galileo-videotrainings.de/player/config/2414/trailer/%22%7D%7D%2C%22key%22%3A%22%23%24ee1f79247bc34e4e3dd%22%7D" name="flashvars"/><embed src="http://media.galileo-videotrainings.de//flash/Flowplayer/player.swf?0.5228952806383996" type="application/x-shockwave-flash" width="520" height="360" allowfullscreen="true" allowscriptaccess="always" cachebusting="true" flashvars="config=%7B%22plugins%22%3A%7B%22loadconf%22%3A%7B%22splashImageBaseUrl%22%3A%22http%3A//download.galileo-videotrainings.de/video%22%2C%22configUrl%22%3A%22http%3A//www.galileo-videotrainings.de/player/config/2414/trailer/%22%7D%7D%2C%22key%22%3A%22%23%24ee1f79247bc34e4e3dd%22%7D" bgcolor="#000000" quality="true"></embed></object></p>
<p>Um das Video-Training zu gewinnen gebt einfach ein Kommentar ab. Teilnahmeschluß ist der 11.12.2010 um 24 Uhr. Der Rechtsweg ist ausgeschlossen. Die Auslosung erfolgt unter Zuhilfenahme von random.org.</p>
<div id="tweetbutton1227" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fschonere-css3-transforms-%25e2%2580%2593-css3-adventskalender-tag-5-1227.html&amp;via=maddesigns&amp;text=Sch%C3%B6nere%20CSS3%20Transforms%20%E2%80%93%20CSS3%20Adventskalender%20Tag%205&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fschonere-css3-transforms-%25e2%2580%2593-css3-adventskalender-tag-5-1227.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-14-590.html' rel='bookmark' title='CSS3 Adventskalender Tag 14'>CSS3 Adventskalender Tag 14</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-18-639.html' rel='bookmark' title='CSS3 Adventskalender Tag 18'>CSS3 Adventskalender Tag 18</a></li>
<li><a href='http://maddesigns.de/fun-with-border-radius-css-sprechblasen-css3-adventskalender-tag-23-692.html' rel='bookmark' title='Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23'>Fun with Border-Radius &#8211; CSS Sprechblasen &#8211; CSS3 Adventskalender Tag 23</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/schonere-css3-transforms-%e2%80%93-css3-adventskalender-tag-5-1227.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 – Tag 4</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html#comments</comments>
		<pubDate>Sun, 04 Dec 2011 10:31:02 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[transform]]></category>
		<category><![CDATA[transition]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1221</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS Transform und Transition am Beispiel eines Call-to-Action-Elementes” TweetRelated posts: CSS3 Adventskalender Tag 18 CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21 CSS3 Adventskalender Tag 16
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-18-639.html' rel='bookmark' title='CSS3 Adventskalender Tag 18'>CSS3 Adventskalender Tag 18</a></li>
<li><a href='http://maddesigns.de/css3-transitions-css-animation-css3-adventskalender-tag-21-661.html' rel='bookmark' title='CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21'>CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-16-618.html' rel='bookmark' title='CSS3 Adventskalender Tag 16'>CSS3 Adventskalender Tag 16</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/03/css-transform-und-transition-tag-4-im-css3-advenstkalender-2011">CSS Transform und Transition am Beispiel eines Call-to-Action-Elementes</a>”</p>
<div id="tweetbutton1221" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-4-1221.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%E2%80%93%20Tag%204&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-%25e2%2580%2593-tag-4-1221.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-18-639.html' rel='bookmark' title='CSS3 Adventskalender Tag 18'>CSS3 Adventskalender Tag 18</a></li>
<li><a href='http://maddesigns.de/css3-transitions-css-animation-css3-adventskalender-tag-21-661.html' rel='bookmark' title='CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21'>CSS3 transitions &#8211; CSS Animation &#8211; CSS3 Adventskalender Tag 21</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-16-618.html' rel='bookmark' title='CSS3 Adventskalender Tag 16'>CSS3 Adventskalender Tag 16</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-%e2%80%93-tag-4-1221.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>”CSS3 &amp; Responsive Web” &#8211; CSS3 Adventskalender Tag 3</title>
		<link>http://maddesigns.de/css3-responsive-web-mmt28-1205.html</link>
		<comments>http://maddesigns.de/css3-responsive-web-mmt28-1205.html#comments</comments>
		<pubDate>Sat, 03 Dec 2011 08:03:59 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[#mmt28]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[responsive]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1205</guid>
		<description><![CDATA[Heute gibt es das 3. Türchen im CSS3 Adventskalender etwas später. Ich bin heute beim Multimediatreff in Köln eingeladen um über CSS3 &#38; Responsive Web zu sprechen. Die Slides vom Vortrag werden nach dem Vortrag hier gegen 14 Uhr veröffentlicht. Bis dahin kann man den Multimediatreff auch im Live-Stream verfolgen. Hochkarätige Vorträge sind zu erwarten, [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-im-praktischen-einsatz-1013.html' rel='bookmark' title='CSS3 im praktischen Einsatz'>CSS3 im praktischen Einsatz</a></li>
<li><a href='http://maddesigns.de/css3-tabellen-ubersicht-css3-adventskalender-tag-15-594.html' rel='bookmark' title='CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15'>CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Heute gibt es das 3. Türchen im CSS3 Adventskalender etwas später. Ich bin heute beim <a href="http://www.multimediatreff.de/" title="Multimediatreff 28">Multimediatreff</a> in Köln eingeladen um über <strong>CSS3 &amp; Responsive Web</strong> zu sprechen. Die Slides vom Vortrag werden nach dem <a href="http://www.multimediatreff.de/naechstestreffen.php#vortrag3" title="Vortrag: CSS3 und responsive Web">Vortrag</a> hier gegen 14 Uhr veröffentlicht. Bis dahin kann man den <a href="http://www.multimediatreff.de/livestream/" title="Multimediatreff 28 Livestream">Multimediatreff auch im Live-Stream verfolgen</a>. Hochkarätige Vorträge sind zu erwarten, u.a. zum Thema HTML5 von Patrick H. Laucke (Opera) sowie Peter Kröner (<a href="http://twitter.com/sir_pepe">@sir_pepe</a>) oder zum Thema &#8220;JavaScript: Von einfachen Scripten zu komplexen Anwendungen&#8221; von Mathias Schäfer (<a href="http://twitter.com/molily">@molily</a>).</p>
<h3>Die Slides</h3>
<p><a href="http://maddesigns.de/css3-responsive/template/"><img style="border: 1px solid #ccc" src="http://maddesigns.de/wp-content/uploads/2011/12/css3-mmt-300x230.png" alt="first screen of teh slideshow" title="CSS3 &amp; Responsive Web" width="300" height="230" class="aligncenter size-medium wp-image-1218" /></a></p>
<h3>Das Video vom Vortrag</h3>
<p><iframe width="532" height="310" src="http://www.youtube.com/embed/lbdndWo35tY" frameborder="0" allowfullscreen></iframe></p>
<div id="tweetbutton1205" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-responsive-web-mmt28-1205.html&amp;via=maddesigns&amp;text=%E2%80%9DCSS3%20%26%23038%3B%20Responsive%20Web%E2%80%9D%20%26%238211%3B%20CSS3%20Adventskalender%20Tag%203&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-responsive-web-mmt28-1205.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-im-praktischen-einsatz-1013.html' rel='bookmark' title='CSS3 im praktischen Einsatz'>CSS3 im praktischen Einsatz</a></li>
<li><a href='http://maddesigns.de/css3-tabellen-ubersicht-css3-adventskalender-tag-15-594.html' rel='bookmark' title='CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15'>CSS3 Tabellen-Übersicht &#8211; CSS3 Adventskalender Tag 15</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-responsive-web-mmt28-1205.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011 &#8211; Tag 2</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-tag-2-1199.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-tag-2-1199.html#comments</comments>
		<pubDate>Fri, 02 Dec 2011 11:06:30 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1199</guid>
		<description><![CDATA[…im Webstandard Blog zum Thema “CSS Regions &#8211; Bereiche zur Aufnahme von Inhalten definieren” TweetRelated posts: CSS3 Adventskalender 2011
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…im Webstandard Blog zum Thema “<a href="http://webstandard.kulando.de/post/2011/12/02/css-regions-tag-2-im-css3-advenstkalender-2011" title="CSS Regions">CSS Regions &#8211; Bereiche zur Aufnahme von Inhalten definieren</a>”</p>
<div id="tweetbutton1199" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-tag-2-1199.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011%20%26%238211%3B%20Tag%202&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-tag-2-1199.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-2011-1107.html' rel='bookmark' title='CSS3 Adventskalender 2011'>CSS3 Adventskalender 2011</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-tag-2-1199.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gradient Border – CSS3 Adventskalender Tag 1</title>
		<link>http://maddesigns.de/css3-gradient-border-1141.html</link>
		<comments>http://maddesigns.de/css3-gradient-border-1141.html#comments</comments>
		<pubDate>Thu, 01 Dec 2011 07:00:35 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[border]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[gradient]]></category>
		<category><![CDATA[linear gradient]]></category>
		<category><![CDATA[verlauf]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1141</guid>
		<description><![CDATA[Tag 1 im CSS3 Advancedkalender und wir gehen gleich ins Eingemachte! In der CSS Text Level 3 Spezifikation gibt es seit einiger Zeit die Eigenschaft text-decoration-color mit der man die Text-(Link-)Unterlinie andersfarbig gestalten kann. Bisher wird diese Eigenschaft laut MDN nur vom Firefox ab der Version 6 mit dem Prefix -moz- unterstützt. Zukünftig soll es [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/linear-gradient-verlauf-css3-adventskalender-tag-3-363.html' rel='bookmark' title='linear-gradient (Verlauf) &#8211; CSS3 Adventskalender Tag 3'>linear-gradient (Verlauf) &#8211; CSS3 Adventskalender Tag 3</a></li>
<li><a href='http://maddesigns.de/ie9-mit-css3-border-radius-und-linear-gradient-problemen-813.html' rel='bookmark' title='IE9 mit CSS3 border-radius und linear-gradient Problemen'>IE9 mit CSS3 border-radius und linear-gradient Problemen</a></li>
<li><a href='http://maddesigns.de/internet-explorer-10-mit-css3-linear-gradient-support-847.html' rel='bookmark' title='Internet Explorer 10 mit CSS3 linear-gradient Support'>Internet Explorer 10 mit CSS3 linear-gradient Support</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tag 1 im CSS3 Advancedkalender und wir gehen gleich ins Eingemachte! <img src='http://maddesigns.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>In der <a href="http://www.w3.org/TR/css3-text/#text-decoration-color" title="W3C CSS3 text spec">CSS Text Level 3 Spezifikation</a> gibt es seit einiger Zeit die Eigenschaft <code>text-decoration-color</code> mit der man die Text-(Link-)Unterlinie andersfarbig gestalten kann. Bisher wird diese Eigenschaft laut <a href="https://developer.mozilla.org/en/CSS/text-decoration-color#Browser_compatibility" title="Mozilla Developer Network - CSS3 text-decoration-color">MDN</a> nur vom Firefox ab der Version 6 mit dem Prefix -moz- unterstützt. Zukünftig soll es ähnlich wie auch für border oder outline möglich sein für <code>text-decoration</code> Shorthand-Values wie folgt anzugeben: <code><br />
text-decoration: &lt;text-decoration-line> || &lt;text-decoration-color> || &lt;text-decoration-style> || blink<br />
</code> anzugeben. Das ist ein Vorteil, wenn weitere Browser das unterstützen. Auf <a href="http://www.perun.net" title="perun.net Weblog">perun.net</a> gibt es bereits einen umfassenden <a href="http://www.perun.net/2011/08/14/css3-art-stil-und-farbe-des-unterstrichs-beeinflussen/" title="CSS3 text-decoration Artikel">Artikel über CSS3 text-decoration</a>.<br />
<span id="more-1141"></span></p>
<h3>&hellip;was bisher geschah</h3>
<p>Viele Webentwickler setzen allerdings auf die Variante, dass Sie nicht die Text-(Link-)Unterlinie verwenden, sondern ein <code>border-bottom</code> vergeben. </p>
<pre>
a {
	text-decoration: none;
	border-bottom: 1px solid red;
}
</pre>
<p>Das hat den Vorteil, dass Zeichenunterlängen nicht durchschnitten werden. Der Border sitzt tiefer, direkt unterm <code>padding</code> bei Blockelementen, unter der <code>line-height</code>-Höhe bei Inline-Elementen. Hier kann man nun auch mit unterschiedlichen Farben variieren, z.B. </p>
<pre>
a {
	color: #000;
	text-decoration: none;
	border-bottom: 1px solid red;
}
</pre>
<p>Was allerdings nicht funktioniert, sind Farbverläufe. Man kann lediglich über <code>border-style</code> das Aussehen variieren. Farbverläufe können der Eigenschaft <code>border-color</code> nicht zugewiesen werden.</p>
<h3>Generierung von Inhalt über CSS</h3>
<p>Man kann sich allerdings mit der Generierung von &#8220;Inhalt&#8221; über CSS behelfen. In einigen <a href="http://maddesigns.de/teaserboxen-komplett-ohne-bilder-css3-adventskalender-tag-9-489.html" title="Content-Generierung mit CSS">Tutorials aus dem letzten Jahr</a> haben wir schon mit der Generierung von Inhalten über &#8220;<code>content</code>&#8221; gearbeitet. Das machen wir uns auch beim Gradient-Border zu nutze. Wir generieren über ein <code>:after</code> Pseudo-Element leeren Inhalt.</p>
<pre>
a:after {
	content: '';
	display: block;
	background-color: red
}
</pre>
<p>Solange wir unseren Inhalt keine Höhe und Breite geben, sehen wir auch keinen Inhalt (hier also keine Hintergrundfarbe).</p>
<pre>
a:after {
	...

	width: 100%;
	height: 1px;
}
</pre>
<p>Jetzt ist unser 1px großer Inhaltsblock nach dem Link hinzugefügt worden und bewirkt, dass der Text getrennt wird <code>(display: block)</code>. Die Linie sitz im Moment auf der gleichen Höhe wie unser 1px Border, da der Beginn von <code>:after</code> gleich <code>border-bottom</code> ist. Um nun den gleichen Effekt wie mit <code>border-bottom</code> nachzustellen, muss man den <a href="https://developer.mozilla.org/en/CSS/block_formatting_context" title="MDN - Block Formatting Context">Block-Formatting-Context</a> verändern, wir fügen Positioning hinzu. </p>
<pre>
/* Elternelement */
a {
	color: #000;
	text-decoration: none;
	border-bottom: 1px solid red;
	position: relative;
}
</pre>
<p>Die Anker-Tags werden nun relativ zum Textfluss positioniert, also unverändert. Trotzdem erzeugen wir dadurch für alle Kindelemente (also auch für <code>:before</code> und <code>:after</code>) einen neuen Kontext. Alle Elemente, die nun über <code>position: absolute</code> positioniert werden, orientieren sich am nächsthöheren Elternelement, das relativ positioniert ist. Klingt komisch, ist aber so <img src='http://maddesigns.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre>
a:after {
	...

	position: absolute;
	bottom: 0;
	left: 0;
}
</pre>
<p>Unsere blaue Linie sitz nun am untersten Ende der Inhalts-Box, ist also 1px über <code>border-bottom</code> gerutsch. Somit müsste die generierte Linie noch um -1px nach unten verschoben werden um genau auf der <code>border-bottom</code> zu sitzen. 80% der Arbeit ist getan, jetzt nur noch den Verlauf über <code>linear-gradient</code> hinzufügen und <code>border-bottom</code> im &lt;a> entfernen.</p>
<pre>
a:after {
	...

	background: -webkit-gradient(linear, left top, right top, from(red), to(blue));
	background: -webkit-linear-gradient(left, red, blue);
	background: -moz-linear-gradient(left, red, blue);
	background: -ms-linear-gradient(left, red, blue);
	background: -o-linear-gradient(left, red, blue);
	background: linear-gradient(to right, red, blue);
}
</pre>
<p>Ein Problem zeigt sich natürlich mit Inline-Elementen die einen Umbruch haben, hier funktioniert unsere Lösung nicht. Deshalb ist die Technik grundsätzlich nur bei Block-Elementen zu empfehlen. Falls man diese Technik doch auf Inline Elementen (z.B. &lt;a>-Links) anwenden möchte, empfiehlt sich hier die <code>white-space</code> Eigenschaft auf <code>nowrap</code> zu setzen. Falls der Link über eine Zeile gehen würde, würde der &#8220;Inline-Block&#8221; komplett auf die neue Zeile rutschen.</p>
<p>Nun kann man natürlich die unzähligen Möglichkeiten von <code>linear-gradient</code> ausspielen, z.B. Stop-Punkte oder mehrere Farbwerte einfügen, sowie mit Höhe und Breite varrieren. </p>
<h3>vollständiger Code</h3>
<pre>
a {
    color: #000;
    text-decoration: none;
    /* border-bottom: 1px solid #f00; */
    position: relative;
    white-space: nowrap;
}
a:after {
    content: '';
    display: block;
    background-color: red;
    width: 100%;
    height: 1px;
    position: absolute;
    bottom: -1px;
    left: 0;

    background: -webkit-gradient(linear, left top, right top, from(blue), to(red));
    background: -webkit-linear-gradient(left, blue, red);
    background: -moz-linear-gradient(left, blue, red);
    background: -ms-linear-gradient(left, blue, red);
    background: -o-linear-gradient(left, blue, red);
    background: linear-gradient(to right, blue, red);
}
</pre>
<h3>JSFiddle-Demo</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/maddesigns/dBSfx/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<h3>Browser-Support</h3>
<p>Da der Internet Explorer leider in keiner aktuellen Version Hintergrundverläufe unterstützt, kann man die Technik nur in modernen Browsern verwenden. Der IE10 wird <code>linear-gradient</code> über den Prefix <code>-ms-</code> unterstützen, bis dahin zeigt er in den Versionen IE8 und IE9 die Fallbackfarbe an.</p>
<p>Internet Explorer <= Version 7 können keinen Inhalt via <code>content</code> generieren. Für diese Browser müsste man also Hintergrundbilder verwenden, die natürlich nicht flexibel sind, was bedeutet man kann diese Technik ausschließlich auf Blockelemente mit fester Breite anwenden.</p>
<p><img src="http://maddesigns.de/wp-content/uploads/2011/11/browserChoice-no-IE.jpg" alt="" title="browserChoice-no-IE" width="521" height="115" class="alignright size-full wp-image-1188" /></p>
<h3>Link-Tipps</h3>
<p>Ein Beispiel ist die Generierung von geometrischen Formen wie z.B. Dreiecke oder Sterne, siehe <a href="http://css-tricks.com/examples/ShapesOfCSS/" title="Shapes of CSS">Shapes Of CSS</a></p>
<p><a href="http://maddesigns.de/linear-gradient-verlauf-css3-adventskalender-tag-3-363.html" title="CSS linear-gradient">linear-gradient (Verlauf) – CSS3 Adventskalender 2010 - Tag 3</a></p>
<h2>CSS3 Adventskalender Gewinnspiel</h2>
<p>Wir haben vom <a href="http://www.galileo-videotrainings.de/" title="Galileo Videotrainings">Galileo-Verlag</a> einige Bücher für <strong>unsere große Weihnachtsverlosung</strong> erhalten und zusätzlich ein paar Video-Trainings. In Woche 1 verlosen wir die DVD "<a href="http://www.galileo-videotrainings.de/css-in-der-praxis/2552/training/" title="DVD Video-Training - CSS in der Praxis">CSS in der Praxis</a>" - Hier ein kleiner Einblick:</p>
<p><object id="null" width="520" height="260" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param value="true" name="allowfullscreen"/><param value="always" name="allowscriptaccess"/><param value="high" name="quality"/><param value="true" name="cachebusting"/><param value="#000000" name="bgcolor"/><param name="movie" value="http://media.galileo-videotrainings.de//flash/Flowplayer/player.swf?0.9094450737166097" /><param value="config=%7B%22plugins%22%3A%7B%22loadconf%22%3A%7B%22configUrl%22%3A%22http%3A//www.galileo-videotrainings.de/player/config/2552/4/5/%22%2C%22splashImageBaseUrl%22%3A%22http%3A//download.galileo-videotrainings.de/video%22%7D%7D%2C%22key%22%3A%22%23%24ee1f79247bc34e4e3dd%22%7D" name="flashvars"/><embed src="http://media.galileo-videotrainings.de//flash/Flowplayer/player.swf?0.9094450737166097" type="application/x-shockwave-flash" width="520" height="260" allowfullscreen="true" allowscriptaccess="always" cachebusting="true" flashvars="config=%7B%22plugins%22%3A%7B%22loadconf%22%3A%7B%22configUrl%22%3A%22http%3A//www.galileo-videotrainings.de/player/config/2552/4/5/%22%2C%22splashImageBaseUrl%22%3A%22http%3A//download.galileo-videotrainings.de/video%22%7D%7D%2C%22key%22%3A%22%23%24ee1f79247bc34e4e3dd%22%7D" bgcolor="#000000" quality="true"></embed></object></p>
<p>Um das Video-Training zu gewinnen gebt einfach ein Kommentar ab. Nutzt Ihr mittlerweile CSS3, habt ihr dieses Jahr Projekte mit CSS3 umgesetzt? Teilnahmeschluß ist der 04.12.2010 um 24 Uhr. Der Rechtsweg ist ausgeschlossen. Die Auslosung erfolgt unter Zuhilfenahme von random.org.</p>
<div id="tweetbutton1141" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-gradient-border-1141.html&amp;via=maddesigns&amp;text=Gradient%20Border%20%E2%80%93%20CSS3%20Adventskalender%20Tag%201&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-gradient-border-1141.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/linear-gradient-verlauf-css3-adventskalender-tag-3-363.html' rel='bookmark' title='linear-gradient (Verlauf) &#8211; CSS3 Adventskalender Tag 3'>linear-gradient (Verlauf) &#8211; CSS3 Adventskalender Tag 3</a></li>
<li><a href='http://maddesigns.de/ie9-mit-css3-border-radius-und-linear-gradient-problemen-813.html' rel='bookmark' title='IE9 mit CSS3 border-radius und linear-gradient Problemen'>IE9 mit CSS3 border-radius und linear-gradient Problemen</a></li>
<li><a href='http://maddesigns.de/internet-explorer-10-mit-css3-linear-gradient-support-847.html' rel='bookmark' title='Internet Explorer 10 mit CSS3 linear-gradient Support'>Internet Explorer 10 mit CSS3 linear-gradient Support</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-gradient-border-1141.html/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>CSS3 Adventskalender 2011</title>
		<link>http://maddesigns.de/css3-adventskalender-2011-1107.html</link>
		<comments>http://maddesigns.de/css3-adventskalender-2011-1107.html#comments</comments>
		<pubDate>Fri, 25 Nov 2011 07:45:53 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[verlosung]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1107</guid>
		<description><![CDATA[Das gute Feedback zum CSS3 Adventskalender 2010 hat uns angespornt auch in diesem Jahr wieder einen CSS3 Adventskalender zu betreiben. Wie letztes Jahr werden im Webstandard-Blog und hier abwechselnd jeden Tag ein Artikel rund ums Thema CSS3 und moderne Webentwicklung veröffentlicht. Ab dem 01. Dezember 2011 heißt es also CSS3 Advancedkalender! Jetzt schlagt keine Purzelbäume, [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/css3-adventskalender-buchverlosung-286.html' rel='bookmark' title='CSS3 Adventskalender + Buchverlosung'>CSS3 Adventskalender + Buchverlosung</a></li>
<li><a href='http://maddesigns.de/verlosung-1-jahr-webstandards-magazin-abonnement-623.html' rel='bookmark' title='Verlosung: 1 Jahr Webstandards Magazin Abonnement'>Verlosung: 1 Jahr Webstandards Magazin Abonnement</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-24-726.html' rel='bookmark' title='CSS3 Adventskalender Tag 24'>CSS3 Adventskalender Tag 24</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Das gute Feedback zum CSS3 Adventskalender 2010 hat uns angespornt auch in diesem Jahr wieder einen CSS3 Adventskalender zu betreiben. Wie letztes Jahr werden im <a title="Webstandard Blog" href="http://webstandard.kulando.de/">Webstandard-Blog</a> und hier abwechselnd jeden Tag ein Artikel rund ums Thema CSS3 und moderne Webentwicklung veröffentlicht. Ab dem 01. Dezember 2011 heißt es also CSS3 Advancedkalender! <img src='http://maddesigns.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Jetzt schlagt keine Purzelbäume, wir werden nicht die neusten Spezifikation des <a title="CSS WG" href="http://www.w3.org/blog/CSS/">CSS Working Group</a> durchgehen, sondern zeigen alltagsrelevante Umsetzungen mit CSS3. Seid gespannt!</p>
<h3>Gastautoren</h3>
<p>Zudem konnten wir dieses Jahr Gastautoren gewinnen, die Beiträge zum <strong>CSS3 Advancedskalender</strong> beisteuern werden. Einen großen Dank an alle Gastautoren vorweg, da alle voll in Projekten stecken und nebenbei einen interessanten Artikel für uns schreiben. Hier im Blog werden Christian Schäfer (<a title="Christian bei Twitter" href="http://twitter.com/#!/derschepp">@derSchepp</a>) und <a title="Website von Hans Christian Reinl - drublic" href="http://drublic.de/">Hans Christian Reinl</a> (<a title="Hans bei Twitter" href="http://twitter.com/#!/drublic">@drublic</a>) Artikel zum Thema CSS3 beisteuern. Im Webstandards-Blog gibt es Gastartikel von <a title="Website von David Hellmann" href="http://www.davidhellmann.com/">David Hellmann</a> (<a title="David bei Twitter" href="http://twitter.com/#!/davidhellmann">@davidhellmann</a>) und <a title="Website von Jonas Hellwig - Kulturbanause" href="http://kulturbanause.de/">Jonas Hellwig</a> (<a title="Jonas bei Twitter" href="http://twitter.com/#!/_kulturbanause/">@_kulturbanause</a>) &#8211; darüber freuen wir uns sehr!</p>
<h3>Weihnachtsgeschenke für alle!</h3>
<div style="float:right; width: 250px; margin-left: 20px;">
<a href="http://www.galileo-videotrainings.de/"><img class="size-full wp-image-1120" alt="Galileo Press Logo" src="http://maddesigns.de/wp-content/uploads/2011/11/logo_galileo_press.gif" title="Link zu Galileo Videotrainings" width="234" height="76" /></a> <a href="http://www.oreilly.de"><img style="padding-top: 20px;" class="size-medium wp-image-1121" alt="O'Reilly Verlag Logo" src="http://maddesigns.de/wp-content/uploads/2011/11/oreilly_logo_www_4c-300x94.jpg" alt="Link zum O'Reilly Verlag" width="240" height="75" /></a></div>
<p>Als großes Weihnachtsgeschenk haben wir für unsere Leser vom <a title="Galileo Verlag" href="http://www.galileo-press.de/">Galileo Verlag</a> und <a title="O'Reilly Verlag" href="http://www.oreilly.de/">O&#8217;Reilly</a> einige Bücher sowie <a title="Galileo Videotrainings" href="http://www.galileo-videotrainings.de/">Video Tutorials</a> von Galileo zur Verlosung erhalten. <strong>Der Gesamtwert liegt bei über 450,- Euro!</strong> Von den insgesamt 9 Büchern und 4 Video-Trainings werden wir während der ganzen Adventszeit schon einige Exemplare verlosen und dann am 24.12.11 gibt es die große Weihnachtsverlosung.</p>
<p>Auf den üblichen Kanälen (<a title="maddesigns auf Twitter" href="http://twitter.com/#!/maddesigns">Twitter</a>, <a title="maddesigns Page bei Google+" href="https://plus.google.com/u/0/b/111382800217661674348/">Google+</a>, <a title="maddesigns auf Facebook" href="http://www.facebook.com/maddesigns.webdeveloper">Facebook</a>, <a title="maddesigns RSS-Feed" href="http://feeds.feedburner.com/maddesigns-typo3">RSS</a>) werden wir euch also ab nächster Woche mit interessanten Themen zu CSS3 und Webentwicklung informieren. Stay tuned! hohoho! <img src='http://maddesigns.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="tweetbutton1107" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-1107.html&amp;via=maddesigns&amp;text=CSS3%20Adventskalender%202011&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-adventskalender-2011-1107.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/css3-adventskalender-buchverlosung-286.html' rel='bookmark' title='CSS3 Adventskalender + Buchverlosung'>CSS3 Adventskalender + Buchverlosung</a></li>
<li><a href='http://maddesigns.de/verlosung-1-jahr-webstandards-magazin-abonnement-623.html' rel='bookmark' title='Verlosung: 1 Jahr Webstandards Magazin Abonnement'>Verlosung: 1 Jahr Webstandards Magazin Abonnement</a></li>
<li><a href='http://maddesigns.de/css3-adventskalender-tag-24-726.html' rel='bookmark' title='CSS3 Adventskalender Tag 24'>CSS3 Adventskalender Tag 24</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-adventskalender-2011-1107.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HTML E-Mail Newsletter cross-client-konform erstellen</title>
		<link>http://maddesigns.de/html-newsletter-1030.html</link>
		<comments>http://maddesigns.de/html-newsletter-1030.html#comments</comments>
		<pubDate>Tue, 01 Nov 2011 10:00:23 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[newsletter]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[thunderbird]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1030</guid>
		<description><![CDATA[Mein Artikel aus dem Webstandards-Magazin Ausgabe 9 zum Thema HTML E-Mail Newsletter: Schöner mailen HTML-Newsletter sind und bleiben ein beliebtes Kommunikationsmittel, um Informationen zu transportieren. Das Marketing liebt sie, weil sich Produktbilder oder visuelle Grafiken in die Werbebotschaft einbinden lassen. Standardkonforme Newsletter-Vorlagen für alle Mailprogramme zu generieren, ist allerdings nicht die einfachste Aufgabe. Wir haben [...]]]></description>
			<content:encoded><![CDATA[<p>Mein Artikel aus dem <a href="http://www.webstandards-magazin.de/index.php/news/203/36" title="Webstandards Magazin">Webstandards-Magazin Ausgabe 9</a> zum Thema HTML E-Mail Newsletter:</p>
<h2>Schöner mailen</h2>
<p><strong><br />
HTML-Newsletter sind und bleiben ein beliebtes Kommunikationsmittel, um Informationen zu transportieren. Das Marketing liebt sie, weil sich Produktbilder oder visuelle Grafiken in die Werbebotschaft einbinden lassen. Standardkonforme Newsletter-Vorlagen für alle Mailprogramme zu generieren, ist allerdings nicht die einfachste Aufgabe. Wir haben einige Tipps und Tricks zusammengefasst und zeigen Lösungswege auf.</strong><br />
<span id="more-1030"></span><br />
Emotionen und Handlungsaktionen lassen sich mit grafischen HTML-Newslettern gezielt wecken. Im Gegensatz zu Nur-Text-Newslettern können Sie in HTML die Bedeutung mit Überschriftenhierarchien oder die Bedeutung mit unterschiedlichen Schriftfarben hervorheben. Ein Firmenlogo können Sie einbinden, um Wiedererkennbarkeit (Branding) und demzufolge Vertrauen zu schaffen. Und das Beste: Alle Mail-Clients unterstützen inzwischen HTML.<br />
<div id="attachment_1039" class="wp-caption aligncenter" style="width: 310px"><a href="http://maddesigns.de/html-newsletter-1030.html/email-client-market-share-statistic" rel="attachment wp-att-1039"><img src="http://maddesigns.de/wp-content/uploads/2011/10/Email-client-market-share-statistic-300x161.png" alt="E-Mail-Client Markt Verteilung - Quelle: litmusapp.com 2010" title="Email-client-market-share-statistic" width="300" height="161" class="size-medium wp-image-1039" /></a><p class="wp-caption-text">Großes Angebot: Zahlreiche Mail-Clients wetteifern um die Gunst der Kunden.</p></div></p>
<h3>Zu schön, um wahr zu sein &#8230;</h3>
<p>Wenn Sie sich bereits mit dem Thema beschäftigt haben, wissen Sie, dass besagte Mail-Clients zwar HTML verstehen, jedoch leider weitab von modernen Webstandards. Eine Vielzahl der Programme unterstützt nur rudimentäre CSS-Eigenschaften und auch nur dann, wenn diese als Inline-Styles definiert wurden. Das Testen eines HTML-Newsletters auf Kompatibilität in unterschiedlichen Clients gestaltet sich erheblich störrischer als der Cross-Browser-Test von Webseiten. Hinzu kommt eine weitere Schwierigkeit, denn HTML-Newsletter landen allzu gerne im Spamfilter. Diese Probleme gilt es zu bewältigen. Das E-Mail Standards Project hat es sich zur Aufgabe gemacht, zusammen mit Entwicklern von Mailprogrammen und Designern einen Standard für HTML-Newsletter zu finden. Die zugehörige Webseite <a href="http://www.email-standards.org/" title="E-Mail Standards Project">http://www.email-standards.org/</a> stellt eine Dokumentation bekannter Bugs und Missstände in den jeweiligen Clients zur Verfügung. Bekannt wurde das Projekt vor allem durch die Twitter-Kampagne „<a href="http://www.fixoutlook.org/" title="Fix Outlook Campaign">Fix Outlook</a>“, bei der Nutzer mit einem Tweet ihre Unterstützung signalisieren konnten. Abgesehen vom Medienecho sollten vor allem die Twitter-Avatare aller Unterstützer auf der Webseite des Projektes Microsoft auf die Problematik und die Dringlichkeit einer Lösung hinweisen. </p>
<p><a href="http://www.fixoutlook.org/"><img src="http://maddesigns.de/wp-content/uploads/2011/10/fix-outlook-263x300.png" alt="Fix Outlook Campaign" title="fix-outlook" width="263" height="300" class="aligncenter size-medium wp-image-1040" /></a></p>
<h3>HTML-Mails entwickeln: Coding à la 1999</h3>
<p>Um eine übereinstimmende Darstellung in den verschiedenen Clients zu gewährleisten, muss gegenwärtig noch auf veraltete Techniken zurückgegriffen werden. Als Tenor gilt dabei „Code like 1999“ – verschachtelte Tabellen, Font-Tags und Inline-CSS, zudem keine CSS-Positioning über floats. Die jüngeren Webworker allerdings wissen (zum Glück) nicht mehr, wie unsereins früher Designs auf Basis von Layouttabellen erstellt hat.</p>
<pre style="font-family: Courier,monospace;">
&lt;table border="0" cellpadding="0" cellspacing="0" width="98%">
  &lt;tr>
    &lt;td>
      &lt;table border="0" cellpadding="0" cellspacing="0" width="500">
        &lt;tr>
          &lt;td>
            ... das ist der HTML-Inhalt ...
          &lt;/td>
        &lt;/tr>
      &lt;/table>
    &lt;/td>
  &lt;/tr>
&lt;/table>
</pre>
<p>Medieninhalte können ebenfalls nicht wiedergegeben werden, also kein Video, kein Audio und ebenfalls kein Flash. Leider können Desktop-Mail-Clients keine Formulare und aus Sicherheitsgründen auch kein &lt;script> verarbeiten. Zudem wurde mit der Einführung von Outlook 2007 die Rendering-Engine von Internetexplorer auf Word umgestellt, was letztlich die Ausgangssituation für die zuvor genannte „Fix Outlook“-Kampagne darstellte. Eine weitere Hürde, mit der Sie rechnen müssen, sind nutzerspezifische Einstellungen. Durch die verschiedenen möglichen Fensteransichten werden jeweils unterschiedliche Teile eines Newsletters im Vorschaufenster angezeigt. Grundlegend können Sie von einem Fensterausschnitt mit einer Größe von 250x250px ausgehen. Wichtig ist, dass der Newsletter eine Gesamtbreite von 550-600px nicht übersteigen sollte. Eine gute Übersicht der unterstützen CSS-Eigenschaften hat <a href="http://www.campaignmonitor.com/css/" title="CSS support in Emails">Campaignmonitor</a> zusammengestellt.</p>
<p><a href="http://www.campaignmonitor.com/css/"><img src="http://maddesigns.de/wp-content/uploads/2011/10/Guide-to-CSS-support-in-email-clients-300x237.png" alt="" title="Guide-to-CSS-support-in-email-clients" width="300" height="237" class="aligncenter size-medium wp-image-1041" /></a></p>
<h3>Designfalle &#8211; deaktivierte Bilder und Fotos</h3>
<p>Die bei Weitem größte Hürde stellen Bilder dar. Mit der Einführung von Outlook 2007 wurde die Anzeige von eingebundenen Bildern sowie Hintergrundbildern unterdrückt und muss in Outlook explizit pro Absender aktiviert werden. Grund hierfür war das Übermaß an Spam-Mails. Google erlaubte in Gmail bis vor Kurzem ebenfalls keine Hintergrundbilder, doch auch hier können Sie die Darstellung inzwischen explizit aktivieren. Für Bilder, die via &lt;img> eingebunden werden, ist es wichtig, das &#8220;alt&#8221;-Attribut sinnvoll auszufüllen. Bei barrierefreien Internetseiten ist dies ohnehin bereits Pflicht, da bei abgeschalteten Bildern der Alternativtext angezeigt wird &#8211; für blinde Menschen wird eben jener Text vorgelesen. Achten Sie auf dieses wichtige Detail, denn viele Menschen sind schlichtweg zu faul, die Anzeige der Bilder in ihrem Mail-Client zu aktivieren. Schüren Sie das Interesse also verstärkt durch den (Alt-)Text! Bitte beachten Sie, dass viele Mail-Programme die Schriftauszeichnung aus den umschließenden Tabellenzellen auch auf den Alt(ernativ)-Text anwenden. Wichtig zudem: Verlinken Sie Bilder ausschließlich mit absoluten Pfaden von einem offenen und schnellen Webserver. Vermeiden Sie PNG als Bildformat. Wenn Sie Ihr Newsletter-Design mit deaktivierten Bildern testen möchten, können Sie das am besten mit der <a href="http://chrispederick.com/work/web-developer/" title="Webdeveloper Toolbar">Webdeveloper Toolbar</a> tun, indem Sie dort einfach unter Bilder > Grafiken durch Alt-Attribute ersetzen auswählen. Auf gar keinen Fall sollten Sie Spacer-Gifs einsetzen, da diese als Spam angesehen werden. Um nicht in die Spam-Falle zu tappen, sollten Sie sich einfach ein paar Mails aus dem Spam-Ordner ansehen und schauen, was dort im Quelltext steht &#8211; und diese Fehler nicht im eigenen Newsletter begehen.</p>
<h3>Webmailer – der neue Client-Standard</h3>
<p>Webmailer wie Gmail, Yahoo Mail oder web.de sind zweifelsohne sehr beliebt bei den Usern, da sie nirgendwo installiert werden müssen und Nutzer ihre E-Mails auch bequem an anderen Rechnern abrufen können. Kompliziert hingegen gestaltet es sich, standardkonforme HTML-Newsletter auszuliefern, da nahezu jeder Dienst E-Mails anders interpretiert. Grundsätzlich werden der &lt;head>-Bereich und der öffnende &lt;body>-Tag herausgeschnitten sowie der <a href="www.emailonacid.com/blog/details/C18/doctype_-_the_black_sheep_of_html_email_design" title="der Doctype wird ersetzt">Doctype ersetzt</a>. Das bedeutet, dass CSS-Styles, die im &lt;head> verlinkt wurden, natürlich nicht mehr vorhanden sind. Gleiches gilt für Hintergrundgrafiken, die dem &lt;body> zugewiesen sind – sie fallen schlicht und ergreifend einfach weg (Gmail verschiebt die Anweisungen mittlerweile in einen zusätzlichen DIV-Wrapper). Deshalb sollten Sie Hintergrundbilder in eine Wrapper-Tabelle einbinden (Stichwort: Verschachtelung). Weiterhin sollten Sie darauf achten, dass in der HTML-Mail keine CSS-Klassen zugewiesen sind, die mit dem Webmail-Service kollidieren könnten, bedeutet also: kein, sondern eher kundenbezogene Klassennamen wie. Gmail mag zudem keine Hochkommata in der Zuweisung einer bestimmten Schrift, also font-family: &#8220;Lucida Grade&#8221; wird zu font-family: Lucida Grande. Vermeiden Sie ebenfalls relative Größenangaben und geben Sie dafür alle Angaben in Pixeln an.</p>
<p><strong>Hier noch weitere wichtige Hinweise für die Erstellung:</strong></p>
<p>• Alle paddings und margins auf 0 setzen.<br />
• Für Abstände lieber padding anstatt margin verwenden (margin wird selten richtig interpretiert).<br />
• Keine Kurzschreibweisen für font verwenden, also font-size, font-weight, font-family einzeln aufzählen.<br />
• Vermeiden Sie RGB als Farbwerte, geben Sie diese besser als Hexadezimalwerte an.<br />
• Kein Whitespace in Tabellenzellen.<br />
• Überschriften H1, H2 und H3 verwenden sowie sämtliche CSS-Eigenschaften hierfür neu vergeben, damit kein Default-Style greift.<br />
• Text-Stile in Tabellenzellen jeweils neu vergeben, nicht darauf vertrauen, dass die Stile vererbt werden.</p>
<h3>Test-Tools</h3>
<p>Haben Sie Ihren HTML-Newsletter fertig erstellt, geht es ans Testen. Wichtig beim Testen ist es, dass Textinhalte schon die echten Inhalte sind, Dummy-Texte werden meist als Spam angesehen. Zudem kommt somit auch nicht erst nach dem Versenden das böse Erwachen, wenn es heißt, dass ein Teil der Newsletter als Spam erkannt worden ist. Optimal geeignet für einen Spamtest ist ein kleines Programm namens <a href="http://www.mailingcheck.com/" title="Mailcheck Spam Check">Mailingcheck</a>. Das Programm erkennt zudem, ob die E-Mail als Phishing gekennzeichnet wurde und weist Sie darauf hin. Einen Test auf Cross-Client-Kompatibilität können Sie wunderbar mit dem kostenpflichtigen Onlineservice von <a href="http://litmus.com/" title="Litmus Mail Preview clients and mobile devices">litmus.com</a> durchführen. Für die Programme Outlook 2003 und Gmail bietet litmus.com die kostenlose Möglichkeit, eine Test-Mail an den Service zu senden, die dann in Form von Screenshots wenige Minuten später online abrufbar sind. Insgesamt können Sie über litmus Previews von mehr als 30 Mail-Clients erzeugen – dann allerdings kostenpflichtig. </p>
<h3>Auf der sicheren Seite – Mailvorlagen von MailChimp</h3>
<p>Sicherlich, Webdesigner erstellen am liebsten alles selbst, allerings ist es bei der Fülle an Stolpersteinen, die auf dem Weg zum Cross-Client-HTML-Newsletter liegen, müßig bis schier unmöglich, alles richtig zu machen. Der Anbieter <a href="www.mailchimp.com" title="Mail Chimp Newsletter Service">MailChimp</a> stellt auf seiner Webseite eine große Sammlung an Template-Vorlagen zur Verfügung, die in diversen Mail-Clients getestet wurden. Zudem hat <a href="https://github.com/mailchimp/Email-Blueprints" title="E-Mail Templates">MailChimp diese Sammlung auf GitHub veröffentlicht</a> . Wenn Sie MailChimp als Newsletter-Versandservice nutzen möchten, haben Sie zudem den Vorteil, dass die Mails über einen sicheren Absender verfügen und ein Tracking der Kampagnen bereits mit zum Service gehört. Neu ist, dass in die Mails auch Social-Buttons für Facebook oder Twitter integriert werden können. Des Weiteren können A/B-Tests bei den Kampagnen auf einfache Art und Weise durchgeführt werden. </p>
<p><a href="https://github.com/mailchimp/Email-Blueprints"><img src="http://maddesigns.de/wp-content/uploads/2011/10/mailchimp-html-email-templates-253x300.png" alt="mailchimp html email templates" title="mailchimp-html-email-templates" width="253" height="300" class="aligncenter size-medium wp-image-1042" /></a></p>
<h3>Tools</h3>
<h4>CSS Inline-Style-Konverter</h4>
<p>Die Firma Torchbox stellt einen <a href="http://inlinestyler.torchboxapps.com/styler/" title="CSS Inline Style Converter">Onlineservice</a> zur Verfügung, der extern eingebundenes CSS zu Inline-Styles wandelt. Auch eine rudimentäre API zum Service können Sie aus einer eigenen Anwendung heraus ansprechen T. Einen ähnlichen Service bietet Dialect aus Kanada, wobei <a href="http://premailer.dialect.ca/" title="Pre-flight for HTML email.">Premailer</a> sogar noch mit zusätzlichen Hinweisen glänzt. </p>
<h4>E-Mail-Tracking mit Google-Analytics</h4>
<p>In seinem Artikel beschreibt Justin Cutroni sehr ausführlich, wie Sie mit Google Analytics eine E-Mail-Kampagne tracken können. Obwohl der Artikel bereits aus dem Jahr 2008 stammt, ist er nach wie vor sehr aufschlussreich und nützlich.<br />
<a href="http://cutroni.com/blog/2008/11/04/email-tracking-with-google-analytics/" title="E-Mail Campaign Tracking with Google Analytics">http://cutroni.com/blog/2008/11/04/email-tracking-with-google-analytics/</a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
Das war mein Artikel aus dem Webstandards-Magazin Nr. 9</p>
<h3>neue Link-Tipps</h3>
<p><a href="http://spamcheck.postmarkapp.com/" title="Spam Check Service">http://spamcheck.postmarkapp.com/</a> &#8211; Spam Check Service incl. API</p>
<p><a href="http://htmlemailboilerplate.com/" title="E-Mail Boilerplate">http://htmlemailboilerplate.com/</a> &#8211; HTML E-Mail Boilerplate Starter Kit</p>
<p><a href="http://litmus.com/blog/anatomy-mobile-email/anatomy-mobile-email-24-1000px" title="Anatomy of a mobile email">http://litmus.com/blog/anatomy-mobile-email/anatomy-mobile-email-24-1000px</a> &#8211; Anatomy of a Perfect Mobile Email </p>
<p><a href="http://www.1stwebdesigner.com/wp-content/uploads/2011/08/email_marketing_infographic_upd.jpg" title="E-Mail Marketing Infografik">http://www.1stwebdesigner.com/wp-content/uploads/2011/08/email_marketing_infographic_upd.jpg</a> &#8211; E-Mail Marketing Infografik</p>
<div id="tweetbutton1030" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fhtml-newsletter-1030.html&amp;via=maddesigns&amp;text=HTML%20E-Mail%20Newsletter%20cross-client-konform%20erstellen&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fhtml-newsletter-1030.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/html-newsletter-1030.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>CSS3 im praktischen Einsatz</title>
		<link>http://maddesigns.de/css3-im-praktischen-einsatz-1013.html</link>
		<comments>http://maddesigns.de/css3-im-praktischen-einsatz-1013.html#comments</comments>
		<pubDate>Tue, 18 Oct 2011 07:12:55 +0000</pubDate>
		<dc:creator>Sven Wolfermann</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://maddesigns.de/?p=1013</guid>
		<description><![CDATA[…lautet der Titel meines Vortrags auf der Web DevCon in Hamburg gestern. Eine Stunde lang habe ich über die aktuellen Einsatzmöglichkeiten von CSS3 erzählt. Die HTML-Slideshow findet ihr hier: CSS3 im praktischen Einsatz Die letzte Zeit war sehr hektisch für mich, viele Konferenzen und BarCamp habe ich besucht. Zuerst aber die Gewinner der Buchverlosung vom [...]
Related posts:<ol>
<li><a href='http://maddesigns.de/maddesigns-wechselt-zur-marit-ag-55.html' rel='bookmark' title='maddesigns wechselt zu Marit AG'>maddesigns wechselt zu Marit AG</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>…lautet der Titel meines Vortrags auf der Web DevCon in Hamburg gestern. Eine Stunde lang habe ich über die aktuellen Einsatzmöglichkeiten von CSS3 erzählt. </p>
<p><strong>Die HTML-Slideshow findet ihr hier: <a href="http://maddesigns.de/css3/css3-im-praktischen-einsatz.html" title="Slideshow CSS3 - Web DevCon 2011">CSS3 im praktischen Einsatz</a></strong><br />
<span id="more-1013"></span><br />
Die letzte Zeit war sehr hektisch für mich, viele Konferenzen und BarCamp habe ich besucht. Zuerst aber die Gewinner der <a href="http://maddesigns.de/page-speed-1-web-performance-optimierung-2011-typo3camp-munchen-session-978.html" title="„page.speed = 1“ Web Performance Optimierung 2011">Buchverlosung</a> vom letzten Blogbeitrag: </p>
<p>Praxiswissen TYPO3 4.5: Andy<br />
Einstieg in TYPO3 4.5: Lukas<br />
TYPO3 4.5: Markus<br />
TYPO3 Extensions mit Extbase &#038; Fluid: Marc</p>
<p>Herzlichen Glückwunsch an alle Gewinner und Danke an alle, die mitgemacht haben!</p>
<h3>Unterwegs</h3>
<p>Wie schon eingangs erwähnt, war ich in den letzten Wochen ziemlich viel unterwegs, 1,5 Tage (jaja, eigentlich 2) auf der fantastischen <a href="http://fronteers.nl/congres/2011" title="Fronteers 2011">Fronteers</a> Konferenz in Amsterdam, bei der ich endlich auch <a href="http://twitter.com/#!/derSchepp/" title="Christian Schäfer auf Twitter">derSchepp</a>, <a href="http://twitter.com/#!/drublic/" title="Hans Christian Reinl auf Twitter">Häääns</a> und <a href="http://twitter.com/#!/Fernmuendlich/" title="Maik Wagner auf Twitter">Maik</a> in RL kennen lernen durfte. Von da aus ging es fast direkt zum <a href="http://mobilecamp-hamburg.de/" title="mobilecamp Hamburg">mobilecamp Hamburg</a>. Hier habe ich nochmal meine Präzi zum Thema <a href="http://lanyrd.com/2011/mchh11/skfhr/" title="Lanyrd Session - CSS3 - mobile performance optimierung">&#8220;Mit CSS3 das mobile Web beschleunigen &#8211; Mobile Performance Optimierung&#8221;</a> gehalten und eine kleine Einführung in jQuery Mobile gegeben (Slides folgen). </p>
<p>Zwischenstop auf der <a href="http://www.sae-alumni-convention.org/2011/Wordpress/">SAE Alumni Convention</a> in Berlin und von der <a href="http://www.web-devcon.de/" title="Web DevCon 2011 in Hamburg">Web DevCon</a> direkt nach München zum <a href="http://www.managementcircle.de/weiterbildung/07-68952web.pdf">B2B-Marketing &#8211; Social Media (PDF Link)</a>. Als wäre das nicht genug für dieses Jahr, freue ich mich noch auf den <a href="http://www.google.com/events/developerday/2011/berlin/" title="Google Developer Day 2011">Google Developer Day</a> am 19.11. in Berlin, die <a href="http://2011.beyondtellerrand.com/" title="Beyond Tellerrand Conference">Beyond Tellerrand</a> am 21.-22.11. in Düsseldorf und letztlich auf dem <a href="http://multimediatreff.de" title="Multimedia Treff 28">Multimediatreff 28</a> am 03.12. in Köln. <a href="http://www.multimediatreff.de/naechstestreffen.php#vortrag3" title="Vortrag: CSS3 und responsive Web">Dort erzähle ich dann wieder etwas über CSS3.</a> </p>
<p>Ohne zuviel zu verraten, es gibt im Dezember wieder mehr CSS3 <img src='http://maddesigns.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="tweetbutton1013" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fmaddesigns.de%2Fcss3-im-praktischen-einsatz-1013.html&amp;via=maddesigns&amp;text=CSS3%20im%20praktischen%20Einsatz&amp;related=&amp;lang=de&amp;count=vertical&amp;counturl=http%3A%2F%2Fmaddesigns.de%2Fcss3-im-praktischen-einsatz-1013.html" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://maddesigns.de/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Related posts:</p><ol>
<li><a href='http://maddesigns.de/maddesigns-wechselt-zur-marit-ag-55.html' rel='bookmark' title='maddesigns wechselt zu Marit AG'>maddesigns wechselt zu Marit AG</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://maddesigns.de/css3-im-praktischen-einsatz-1013.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 61/468 queries in 0.201 seconds using disk: basic
Object Caching 9542/9847 objects using disk: basic

Served from: maddesigns.de @ 2012-05-17 13:06:08 -->
