<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>YellowLeds Weblog v2 - Webdesign</title>
    <link>http://yellowled.de/</link>
    <description>Artikel über Webdesign, Webstandards und Serendipity von Matthias Mees</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.6.2 - http://www.s9y.org/</generator>
    <managingEditor>mm@yellowled.de</managingEditor>
<webMaster>mm@yellowled.de</webMaster>
<pubDate>Wed, 16 May 2012 18:13:14 GMT</pubDate>

    <image>
        <url>http://yellowled.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: YellowLeds Weblog v2 - Webdesign - Artikel über Webdesign, Webstandards und Serendipity von Matthias Mees</title>
        <link>http://yellowled.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Web ≠ Print – So geht es auch</title>
    <link>http://yellowled.de/archiv/30/Web-Print-So-geht-es-auch.html</link>
            <category>Webdesign</category>
    
    <comments>http://yellowled.de/archiv/30/Web-Print-So-geht-es-auch.html#comments</comments>
    <wfw:comment>http://yellowled.de/wfwcomment.php?cid=30</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://yellowled.de/rss.php?version=2.0&amp;type=comments&amp;cid=30</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Mees)</author>
    <content:encoded>
    &lt;p&gt;Es ist nichts Neues, dass die Zusammenarbeit zwischen &lt;span lang=&quot;en&quot;&gt;Webdesignern&lt;/span&gt; und Print-Grafikern mitunter etwas schwierig ist. Da treffen zwei Welten aufeinander, die zusammenarbeiten sollen, aber andere Werkzeuge benutzen und unterschiedliche Sprachen sprechen. Der Kollege Marc Hinse hat dazu mal den schönen Artikel &lt;a href=&quot;http://www.mademyday.de/web-ist-nicht-print.html&quot;&gt;Web ≠ Print&lt;/a&gt; verfasst.&lt;/p&gt;

&lt;p&gt;Ich hatte neulich™ das Vergnügen, einem vorbildlichen Gegenbeispiel zu begegnen.&lt;/p&gt;

&lt;p&gt;Ich bat im Gespräch mit dem Kunden um die Kontaktdaten der Grafikerin, die das Logo entworfen hatte, um &lt;abbr title=&quot;gegebenenfalls&quot;&gt;ggf.&lt;/abbr&gt; Rückfragen zur verwendeten Schriftart und Farbcodes klären zu können. Antwort: „Aber das haben wir doch alles da.“ Man versprach, mir eine &lt;abbr title=&quot;Portable Document Format&quot; lang=&quot;en&quot;&gt;PDF&lt;/abbr&gt;-Datei zukommen zu lassen.&lt;/p&gt;

&lt;p&gt;Was ich bekam, war – vorbildlich.&lt;/p&gt;

&lt;img class=&quot;serendipity_image_center&quot;  src=&quot;http://yellowled.de/uploads/artikel/farbinfo.png&quot;  alt=&quot;Ausschnitt eines Logo-Infos mit Farbcodes und Angaben zur Schriftart&quot;&gt;

&lt;p&gt;Neben dem Logo wies die PDF-Datei die darin verwendete Schriftart inklusive aller verwendeten Schriftschnitte (nebst Schriftprobe) aus und listete sämtliche verwendete Farben auf, und zwar jeweils als:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Farb-Beispiel&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/CMYK-Farbmodell&quot;&gt;CMYK-Farbwert&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/RAL-Farbe&quot;&gt;RAL-Farbe&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Pantone_Matching_System&quot;&gt;Pantone-Farbe&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/HKS-Farbfächer&quot;&gt;HKS-Farbe&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/RGB-Farbraum&quot;&gt;RGB-Farbwert&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Webfarbe#Websichere_Farben&quot;&gt;websichere Farbe&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Grau&quot;&gt;Graustufe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Und jetzt merke mir bitte &lt;strong&gt;niemand&lt;/strong&gt; in den Kommentaren an, dass da noch &lt;a href=&quot;http://de.wikipedia.org/wiki/Hexadezimale_Farbdefinition&quot;&gt;Hex-&lt;/a&gt; und &lt;a href=&quot;http://de.wikipedia.org/wiki/HSV-Farbraum#Abgewandelte_Farbmodelle_HSL.2C_HSB.2C_HSI&quot;&gt;HSL-Farbcodes&lt;/a&gt; fehlen. Ja, websichere Farben &lt;em&gt;sind&lt;/em&gt; heutzutage bedeutungslos.)&lt;/p&gt;

&lt;p&gt;Das ist alles, was man als &lt;span lang=&quot;en&quot;&gt;Webdesigner&lt;/span&gt; an Informationen zu einem Logo braucht. Ein solches Infoblatt spart dem &lt;span lang=&quot;en&quot;&gt;Webdesigner&lt;/span&gt; eine Menge Zeit, vor allem dann, wenn Printler auf die Frage nach den verwendeten Farben nur die (für sie wichtigen, für uns aber völlig irrelevanten) Pantone-Farben benennen können oder offenbar wahllos Schriften einsetzen, ohne sich um Aspekte wie Webfonts und Schrift-Lizenzen auch nur Gedanken zu machen. (Ja, das &lt;strong&gt;sind&lt;/strong&gt; leider echte Praxisbeispiele aus anderen Projekten.)&lt;/p&gt;

&lt;p&gt;Ein solches PDF sagt: „Ich weiß, dass Andere meine Arbeit weiterverarbeiten. Deshalb dokumentiere ich sie sorgfältig.“ Ich habe &lt;a href=&quot;http://www.agentur-dettmann.de&quot;&gt;der Kollegin&lt;/a&gt; dafür ausdrücklich gedankt. Und ich möchte so etwas jetzt in jedem Projekt haben.&lt;/p&gt;  
    </content:encoded>

    <pubDate>Wed, 16 May 2012 15:50:00 +0200</pubDate>
    <guid isPermaLink="false">http://yellowled.de/archiv/30/guid.html</guid>
    <category>evangelism</category>
<category>thoughts</category>
<category>webdesign</category>

</item>
<item>
    <title>Modernizr: API</title>
    <link>http://yellowled.de/archiv/27/Modernizr-API.html</link>
            <category>Webdesign</category>
    
    <comments>http://yellowled.de/archiv/27/Modernizr-API.html#comments</comments>
    <wfw:comment>http://yellowled.de/wfwcomment.php?cid=27</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://yellowled.de/rss.php?version=2.0&amp;type=comments&amp;cid=27</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Mees)</author>
    <content:encoded>
    &lt;p&gt;Zum Abschluss der &lt;a href=&quot;http://yellowled.de/archiv/25/Modernizr-Grundlagen.html&quot;&gt;kleinen&lt;/a&gt; &lt;a href=&quot;http://yellowled.de/archiv/26/Modernizr-Load.html&quot;&gt;Reihe&lt;/a&gt; über &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; noch ein paar Dinge, die vielleicht über den alltäglichen Einsatz hinausgehen oder nicht für jeden Webentwickler interessant sind – API-Methoden und Möglichkeiten, &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; zu erweitern.&lt;/p&gt;

&lt;h3&gt;&lt;span lang=&quot;en&quot;&gt;Prefixed&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Hersteller-Präfixe in CSS sind ein (derzeit) viel diskutiertes Thema. Wie alle anderen CSS-Eigenschaften gibt es auch für diese ein Äquivalent in Javascript, allerdings etwas anders implementiert: Ohne Bindestrich und &lt;span lang=&quot;en&quot;&gt;case&lt;/span&gt;-sensitiv. In Javascript wird also aus &lt;code&gt;-moz-transform&lt;/code&gt; z.B. &lt;code&gt;MozTransform&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Die Methode &lt;code&gt;Modernizr.prefixed&lt;/code&gt; ermöglich es, auf das vom jeweiligen Browser benutzte Präfix zu testen und somit zur Laufzeit nur auf dieses zu reagieren – was eine Menge &lt;span lang=&quot;en&quot;&gt;Code&lt;/span&gt; einsparen kann. Die Methode liefert die vollständige Präfixform in Javascript-Format als &lt;span lang=&quot;en&quot;&gt;String&lt;/span&gt; zurück. Sie kann noch etwas mehr, auf das ich hier allerdings nicht weiter eingehen möchte – es gibt aber einen sehr ausführlichen &lt;a href=&quot;http://www.andismith.com/blog/2012/02/modernizr-prefixed/&quot;&gt;ausführlichen Artikel von Andi Smith&lt;/a&gt; dazu.&lt;/p&gt;

&lt;h3&gt;&lt;span lang=&quot;en&quot;&gt;Media Queries&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Gerade in Zeiten des &lt;span lang=&quot;en&quot;&gt;Responsive Web Design&lt;/span&gt; kann es absolut Sinn machen, Skripte in Abhängigkeit von bestimmten Dimensionen des Bildschirms auszuführen – also im Prinzip das zu tun, was &lt;span lang=&quot;en&quot;&gt;Media Queries&lt;/span&gt; in CSS leisten. Das geht etwas primitiver bereits in nacktem Javascript, indem man &lt;code&gt;screen.width&lt;/code&gt; abfragt, aber &lt;code&gt;Modernizr.mq&lt;/code&gt; stellt hier als Javascript-Methode etwas mehr bereit.&lt;/p&gt;

&lt;p&gt;Es testet ein als &lt;span lang=&quot;en&quot;&gt;String&lt;/span&gt; übergebenes &lt;span lang=&quot;en&quot;&gt;Media Query&lt;/span&gt;, welches einen Typ enthalten sollte und einen Wert enthalten muss, also z.B. &lt;code&gt;Modernizr.mq(&#039;only screen and min-width:480px&#039;)&lt;/code&gt;, zur Laufzeit gegen den aktuellen Zustand des &lt;span lang=&quot;en&quot;&gt;Browserfensters&lt;/span&gt; und liefert &lt;span lang=&quot;en&quot;&gt;true/false&lt;/span&gt; zurück.&lt;/p&gt;

&lt;p&gt;(Und genauso kann man natürlich auch andere Werte des &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;-Objektes als Testbedingungen in Javascript verwenden.)&lt;/p&gt;

&lt;h3&gt;Erweiterungen schreiben&lt;/h3&gt;

&lt;p&gt;Wer &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; erweitern möchte (so weit überhaupt noch nötig, siehe unten), findet auch dafür einige &lt;a href=&quot;http://www.modernizr.com/docs/#s3&quot;&gt;API-Methoden&lt;/a&gt; vor. Ich spare es mir, das entsprechende Beispiel aus der &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;-Dokumentation hier zu zitieren – angesichts der bereits zur Verfügung stehenden &lt;span lang=&quot;en&quot;&gt;Community&lt;/span&gt;-Erweiterungen wird es vorerst kaum nötig sein, eigene zu schreiben.&lt;/p&gt;

&lt;p&gt;Falls doch, bietet die API Methoden, um Tests anzulegen (wobei sich die API um das Anlegen der CSS-Klassen und Werte im &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;-Objekt kümmert), das so erzeugte Test-Element auf &lt;span lang=&quot;en&quot;&gt;Styles&lt;/span&gt; und &lt;span lang=&quot;en&quot;&gt;Events&lt;/span&gt; zu testen und dabei auch &lt;span lang=&quot;en&quot;&gt;Browser&lt;/span&gt;-Präfixe zu berücksichtigen.&lt;/p&gt;

&lt;h3&gt;Unerkennbares&lt;/h3&gt;

&lt;p&gt;Es gibt &lt;span lang=&quot;en&quot;&gt;Features&lt;/span&gt;, die &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; aus technischen Gründen &lt;strong&gt;nicht&lt;/strong&gt; erkennen kann – die sogenannten &lt;span lang=&quot;en&quot;&gt;Undetectables&lt;/span&gt;, die im &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;-Wiki in einer &lt;a href=&quot;https://github.com/Modernizr/Modernizr/wiki/Undetectables&quot;&gt;Liste&lt;/a&gt; gesammelt werden. (Dort findet man auch eine Liste der empfehlenswerten &lt;a href=&quot;https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Polyfills&lt;/span&gt;&lt;/a&gt;.)&lt;/p&gt;

&lt;h3&gt;&lt;span lang=&quot;en&quot;&gt;Community&lt;/span&gt;-Erweiterungen&lt;/h3&gt;

&lt;p&gt;Es gibt bereits eine Vielzahl von Erweiterungen für &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; aus der &lt;span lang=&quot;en&quot;&gt;Community&lt;/span&gt; (Stand März 2012: 74). Diese liegen auf &lt;a href=&quot;https://github.com/Modernizr/Modernizr/tree/master/feature-detects&quot;&gt;GitHub&lt;/a&gt;, lassen sich jedoch viel einfacher über den &lt;a href=&quot;http://www.modernizr.com/download/&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Download-Builder&lt;/span&gt;&lt;/a&gt; in &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; integrieren. Ebenso müssen die API-Methoden zur Nutzung von &lt;span lang=&quot;en&quot;&gt;Prefixed&lt;/span&gt; (nicht aber für &lt;span lang=&quot;en&quot;&gt;Media Queries&lt;/span&gt;) und zum Schreiben eigener Erweiterungen auf diese Weise ausdrücklich eingebunden werden.&lt;/p&gt;  
    </content:encoded>

    <pubDate>Sat, 03 Mar 2012 09:11:00 +0100</pubDate>
    <guid isPermaLink="false">http://yellowled.de/archiv/27/guid.html</guid>
    <category>javascript</category>
<category>webdesign</category>

</item>
<item>
    <title>Modernizr: Load</title>
    <link>http://yellowled.de/archiv/26/Modernizr-Load.html</link>
            <category>Webdesign</category>
    
    <comments>http://yellowled.de/archiv/26/Modernizr-Load.html#comments</comments>
    <wfw:comment>http://yellowled.de/wfwcomment.php?cid=26</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://yellowled.de/rss.php?version=2.0&amp;type=comments&amp;cid=26</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Mees)</author>
    <content:encoded>
    &lt;p&gt;Wie im &lt;a href=&quot;http://yellowled.de/archiv/25/Modernizr-Grundlagen.html&quot;&gt;Grundlagen-Artikel&lt;/a&gt; bereits angedeutet halte ich den integrierten &lt;span lang=&quot;en&quot;&gt;Script-Loader&lt;/span&gt; mittlerweile für die wichtigere Komponente in &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;. Bevor wir uns den &lt;span lang=&quot;en&quot;&gt;Loader&lt;/span&gt; genauer ansehen nochmals der Hinweis: Er wird &lt;strong&gt;nur&lt;/strong&gt; in &lt;a href=&quot;http://www.modernizr.com/download/&quot;&gt;generierte Versionen&lt;/a&gt; eingebunden, die Entwicklerversion (die z.B. auch im &lt;a href=&quot;http://h5bp.com&quot;&gt;HTML5 Boilerplate&lt;/a&gt; enthalten ist) kommt &lt;em&gt;ohne&lt;/em&gt; &lt;span lang=&quot;en&quot;&gt;Loader&lt;/span&gt; daher.&lt;/p&gt;

&lt;h3&gt;Warum überhaupt ein Script Loader?&lt;/h3&gt;

&lt;p&gt;Zunächst mal ist &lt;code&gt;Modernizr.load&lt;/code&gt; eigentlich kein &lt;span lang=&quot;en&quot;&gt;Script-&lt;/span&gt;, sondern vielmehr ein &lt;span lang=&quot;en&quot;&gt;Ressource-Loader&lt;/span&gt; – es kann nicht nur Javascript-, sondern auch CSS-Dateien nachladen, und das asynchron und parallel, wobei sie dennoch in der beabsichtigten Reihenfolge ausgeführt werden. Auch ist &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; natürlich bei weitem &lt;a href=&quot;http://labjs.com&quot; title=&quot;Script-Loader LABjs&quot;&gt;nicht&lt;/a&gt; &lt;a href=&quot;http://requirejs.org&quot; title=&quot;Script-Loader RequireJS&quot;&gt;der&lt;/a&gt; &lt;a href=&quot;http://stevesouders.com/controljs/&quot; title=&quot;Script-Loader ControlJS&quot;&gt;einzige&lt;/a&gt; &lt;span lang=&quot;en&quot;&gt;Script-Loader&lt;/span&gt; – sein großer Vorteil ist die Integration mit &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;.&lt;/p&gt;

&lt;h4&gt;Performance&lt;/h4&gt;

&lt;p&gt;In Sachen &lt;span lang=&quot;en&quot;&gt;Performance&lt;/span&gt; &lt;em&gt;kann&lt;/em&gt; es vorteilhaft sein, mehrere kleine Skripte anstatt einer kombinierten Skript-Datei parallel zu laden, obwohl mehrere Skripte logischerweise auch mehrere &lt;span lang=&quot;en&quot;&gt;HTTP-Requests&lt;/span&gt; bedeuten – muss es aber nicht. Der eigentliche Vorteil eines &lt;span lang=&quot;en&quot;&gt;Script-Loaders&lt;/span&gt; in Zusammenhang mit &lt;span lang=&quot;en&quot;&gt;Polyfills&lt;/span&gt; ist, dass man nur die Skripte (nach)lädt, die tatsächlich vom Browser benötigt werden, um Funktionalitäten nachzurüsten, die er nicht nativ beherrscht. Das spart in modernen Browsern in jedem Fall zu übertragende Daten ein. Im Übrigen ist es natürlich auch möglich, über den &lt;span lang=&quot;en&quot;&gt;Loader&lt;/span&gt; zusammengefasste Skripte (etwa in Form einer &lt;code&gt;oldie.js&lt;/code&gt;) nachzuladen.&lt;/p&gt;

&lt;h3&gt;Die grundsätzliche Form&lt;/h3&gt;

&lt;p&gt;Allgemein sieht die Form eines Aufrufes von &lt;code&gt;Modernizr.load&lt;/code&gt; so aus:&lt;/p&gt;

&lt;pre class=&quot;code&quot; data-code-lang=&quot;js&quot;&gt;Modernizr.load([
    {
        test: Modernizr.test,
        yep: Aktion_1,
        nope: [
            Aktion_2,
            Aktion_3
        ]
    }
]);&lt;/pre&gt;

&lt;p&gt;Wir testen also eine (oder mehrere über Javascript-Operatoren verknüpfte) Bedingung und führen in Abhängigkeit des Ergebnisses entweder die eine oder andere Aktion aus, wobei es &lt;strong&gt;nicht&lt;/strong&gt; notwendig (und wohl auch in den wenigsten Anwendungsfällen sinnvoll) ist, beiden Testergebnissen eine Aktion, aber sehr wohl möglich, einem Ergebnis &lt;em&gt;mehrere&lt;/em&gt; Aktionen (also etwa das Laden einer JS- und einer CSS-Datei) zuzuweisen. Wichtig ist allerdings die Reihenfolge, in der ggf. mehrere solcher Anweisungen in der Skriptdatei stehen, denn sie bestimmt auch die Reihenfolge, in der Ressourcen von &lt;span lang=&quot;en&quot;&gt;Modernizr.load&lt;/span&gt; nachgeladen werden.&lt;/p&gt;

&lt;p&gt;Testen kann man grundsätzlich alles, was &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; &lt;a href=&quot;http://www.modernizr.com/docs/#s2&quot;&gt;erkennt&lt;/a&gt;, nachladen kann man JS- und/oder CSS-Dateien. Ausführlichere Dokumentation zum &lt;span lang=&quot;en&quot;&gt;Loader&lt;/span&gt; findet man auf der Webseite von &lt;a href=&quot;http://yepnopejs.com&quot;&gt;yepnope&lt;/a&gt;, dem „Mutterprojekt“ von &lt;code&gt;Modernizr.load&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;Ein praktisches Beispiel&lt;/h3&gt;

&lt;p&gt;Nehmen wir an, wir wollen für ein Projekt den &lt;a href=&quot;https://github.com/ginader/HTML5-placeholder-polyfill&quot;&gt;placeholder-Polyfill&lt;/a&gt; von &lt;a href=&quot;http://blog.ginader.de&quot;&gt;Dirk Ginader&lt;/a&gt; verwenden. Nachzuladen wären in &lt;span lang=&quot;en&quot;&gt;Browsern&lt;/span&gt;, die &lt;code&gt;placeholder&lt;/code&gt; nicht nativ unterstützen, eine JS- und eine CSS-Datei, die Testbedingung ist auch klar:&lt;/p&gt;

&lt;pre class=&quot;code&quot; data-code-lang=&quot;js&quot;&gt;Modernizr.load([
    {
        test: Modernizr.input.placeholder,
        nope: [
            &#039;placeholder_polyfill.min.css&#039;,
            &#039;placeholder_polyfill.jquery.min.combo.js&#039;
        ]
    }
]);&lt;/pre&gt;

&lt;p&gt;Oder in Klartext formuliert: „Falls der &lt;span lang=&quot;en&quot;&gt;Browser&lt;/span&gt; das &lt;code&gt;input&lt;/code&gt;-Attribut &lt;code&gt;placeholder&lt;/code&gt; nicht unterstützt, lade die CSS- und die JS-Datei nach“ (der Pfad zu den nachzuladenden Ressourcen ist hier relativ zum Dokument, das den &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;-Aufruf enthält). Wichtig auch hier: Die Tests basieren auf den tatsächlich vom &lt;span lang=&quot;en&quot;&gt;Browser&lt;/span&gt; unterstützten Funktionen, nicht auf dem von ihm (eventuell fälschlich) übermittelten &lt;span lang=&quot;en&quot;&gt;User Agent&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;In jedem Fall lohnt sich ein Blick in die &lt;a href=&quot;http://www.modernizr.com/docs/#s2&quot;&gt;Dokumentation der Tests&lt;/a&gt; von &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;. Zum einen sind diese (zum Teil) nicht hundertprozentig verlässlich – so liefern zum Beispiel &lt;span lang=&quot;en&quot;&gt;Palm Pre/WebOS&lt;/span&gt;-Geräte bei &lt;code&gt;Modernizr.touch&lt;/code&gt; ein &lt;span lang=&quot;en&quot;&gt;false&lt;/span&gt; zurück, da diese Geräte trotz &lt;span lang=&quot;en&quot;&gt;Touchscreen&lt;/span&gt; keine &lt;span lang=&quot;en&quot;&gt;Touch-Events&lt;/span&gt; unterstützen. Des weiteren reicht es bei einigen Tests nicht, nur auf &lt;span lang=&quot;en&quot;&gt;true/false&lt;/span&gt; zu prüfen – dem Test auf &lt;span lang=&quot;en&quot;&gt;Media-Queries&lt;/span&gt; etwa sollte man einen Typ und muss man einen Wert mitgeben, also z.B. &lt;code&gt;Modernizr.mq(&#039;only screen and (max-width: 768px)&#039;)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Selbstverständlich gilt auch hier, dass man sich in jedem Fall einen &lt;a href=&quot;http://www.modernizr.com/download/&quot;&gt;angepassten &lt;span lang=&quot;en&quot;&gt;build&lt;/span&gt;&lt;/a&gt; von &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; erzeugen lassen sollte, der &lt;em&gt;nur&lt;/em&gt; die Tests enthält, die man konkret benutzt, um &lt;span lang=&quot;en&quot;&gt;Performance&lt;/span&gt;-Einbußen durch die Einbindung von &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; möglichst gering zu halten.&lt;/p&gt;

&lt;p&gt;&lt;ins datetime=&quot;2012-03-01T09:53:00+02:00&quot;&gt;&lt;strong&gt;Nachtrag:&lt;/strong&gt; &lt;a href=&quot;http://twitter.com/derSchepp&quot;&gt;Schepp&lt;/a&gt; hat mich per Twitter auf einen &lt;a href=&quot;https://docs.google.com/spreadsheet/ccc?key=0Aqln2akPWiMIdERkY3J2OXdOUVJDTkNSQ2ZsV3hoWVE#gid=2&quot;&gt;sehr umfassenden Vergleich&lt;/a&gt; gängiger &lt;span lang=&quot;en&quot;&gt;Script-Loader&lt;/span&gt; aufmerksam gemacht. Danke!&lt;/ins&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Thu, 01 Mar 2012 09:26:00 +0100</pubDate>
    <guid isPermaLink="false">http://yellowled.de/archiv/26/guid.html</guid>
    <category>css</category>
<category>javascript</category>
<category>webdesign</category>

</item>
<item>
    <title>Modernizr: Grundlagen</title>
    <link>http://yellowled.de/archiv/25/Modernizr-Grundlagen.html</link>
            <category>Webdesign</category>
    
    <comments>http://yellowled.de/archiv/25/Modernizr-Grundlagen.html#comments</comments>
    <wfw:comment>http://yellowled.de/wfwcomment.php?cid=25</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://yellowled.de/rss.php?version=2.0&amp;type=comments&amp;cid=25</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Mees)</author>
    <content:encoded>
    &lt;p&gt;Wenn ich die Suchanfragen dieses Blogs richtig deute, gibt es einen relativ großen Bedarf an (deutschsprachiger) Dokumentation zu &lt;a href=&quot;http://www.modernizr.com&quot;&gt;Modernizr&lt;/a&gt;. Ich versuche mal, diese kleine Javascript-Wunderwaffe zu erklären, so gut ich kann.&lt;/p&gt;

&lt;h3&gt;Was ist &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;?&lt;/h3&gt;

&lt;p&gt;&lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; ist eine Javascript-Bibliothek, deren primäre Aufgabe es ist, zu prüfen, ob ein &lt;span lang=&quot;en&quot;&gt;Browser&lt;/span&gt; bestimmte HTML5- oder CSS3-&lt;span lang=&quot;en&quot;&gt;Features&lt;/span&gt; (aber auch solche, welche nicht einem dieser beiden Standards zuzuordnen sind) nativ unterstützt. Es gibt uns damit die Möglichkeit, auf die Leistungsfähigkeit des &lt;span lang=&quot;en&quot;&gt;Browsers&lt;/span&gt; eines Seitenbesuchers individuell zu reagieren, also gegebenenfalls &lt;span lang=&quot;en&quot;&gt;Polyfills&lt;/span&gt; einzusetzen oder eine alternative Gestaltung anzuwenden und zwar – und das ist der Clou an &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; – eben &lt;strong&gt;nicht&lt;/strong&gt; basierend auf dem sogenannten &lt;span lang=&quot;en&quot;&gt;User Agent&lt;/span&gt; (dem nicht sehr zuverlässig zu ermittelnden „Namen“ des &lt;span lang=&quot;en&quot;&gt;Browsers&lt;/span&gt;), sondern auf den Ergebnissen diverser Tests, was der &lt;span lang=&quot;en&quot;&gt;Browser&lt;/span&gt; &lt;em&gt;tatsächlich&lt;/em&gt; beherrscht.&lt;/p&gt;

&lt;p&gt;&lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; testet (derzeit – Version 2.5.3) über 40 &lt;span lang=&quot;en&quot;&gt;Features&lt;/span&gt; und stellt basierend auf den Ergebnissen ein Javascript-Objekt bereit, welches die Testergebnisse als &lt;span lang=&quot;en&quot;&gt;true/false&lt;/span&gt;-Werte enthält. Zudem fügt es dem &lt;code&gt;html&lt;/code&gt;-Element einer Seite eine Reihe von CSS-Klassen hinzu, die ebenfalls anzeigen, ob der &lt;span lang=&quot;en&quot;&gt;Browser&lt;/span&gt; die betreffende Eigenschaft nativ unterstützt – also z.B. &lt;code&gt;.boxshadow&lt;/code&gt; und &lt;code&gt;.no-boxshadow&lt;/code&gt;. Darüber hinaus enthält &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; den &lt;a href=&quot;https://github.com/aFarkas/html5shiv&quot;&gt;html5shiv&lt;/a&gt;, um veralteten &lt;span lang=&quot;en&quot;&gt;Browsern&lt;/span&gt; die neuen HTML5-Elemente „beizubringen“ sowie mit &lt;a href=&quot;http://yepnopejs.com&quot;&gt;yepnope&lt;/a&gt; einen sogenannten &lt;span lang=&quot;en&quot;&gt;Script-Loader&lt;/span&gt;, der es ermöglicht, Skripte (aber auch CSS-Dateien) bei Bedarf dynamisch nachzuladen, was einen halbwegs performanten Einsatz von &lt;span lang=&quot;en&quot;&gt;Polyfills&lt;/span&gt; möglich macht.&lt;/p&gt;

&lt;h3&gt;Wie funktioniert &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;?&lt;/h3&gt;

&lt;p&gt;In den meisten Fällen erzeugt &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; ein Element, wendet eine bestimmte CSS-Eigenschaft darauf an und fragt besagtes Element ab, was entweder einen sinnvollen Wert oder eben nichts zurückliefert und entsprechend in Werte innerhalb des &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;-Objektes bzw. CSS-Klassen umgesetzt wird.&lt;/p&gt;

&lt;p&gt;Dabei ist &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; &lt;em&gt;relativ&lt;/em&gt; leichtgewichtig – minifiziert schlägt ein Modernizr in „Vollausstattung“ mit 17 &lt;abbr title=&quot;Kilobytes&quot; lang=&quot;en&quot;&gt;KB&lt;/abbr&gt; zu Buche. Diesen Wert kann (und sollte) man über den &lt;a href=&quot;http://www.modernizr.com/download/&quot;&gt;Generator&lt;/a&gt; drücken, indem man eine angepasste Version des Skriptes erzeugt, die nur die Tests enthält, die man auch wirklich benötigt. Ebenfalls zu beachten ist, dass der &lt;span lang=&quot;en&quot;&gt;Script-Loader&lt;/span&gt; nur über den Generator eingebunden wird; in der Entwicklungsversion ist er &lt;strong&gt;nicht&lt;/strong&gt; enthalten. Ebenso wurde kürzlich &lt;a href=&quot;https://github.com/scottjehl/Respond&quot;&gt;respond.js&lt;/a&gt;, ein &lt;span lang=&quot;en&quot;&gt;Polyfill&lt;/span&gt; für &lt;span lang=&quot;en&quot;&gt;Media-Queries&lt;/span&gt;, aus &lt;span lang=&quot;en&quot;&gt;Performance&lt;/span&gt;-Gründen aus &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; entfernt.&lt;/p&gt;

&lt;p&gt;Besagte Tests funktionieren laut &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;-Dokumentation in &lt;span lang=&quot;en&quot;&gt;IE6+, Firefox 3.5+, Opera 9.6+, Safari 2+, Chrome, Mobile Safari, Android WebKit, Opera Mobile, Firefox Mobile&lt;/span&gt; und (obschon das offenbar noch nicht ausreichend getestet ist) &lt;span lang=&quot;en&quot;&gt;Blackberry 6+&lt;/span&gt;. Damit der html5shiv korrekt umgesetzt wird, sollte man die entsprechenden Anweisungen (wie etwa in &lt;a href=&quot;http://necolas.github.com/normalize.css/&quot;&gt;normalize.css&lt;/a&gt; enthalten) im &lt;span lang=&quot;en&quot;&gt;Stylesheet&lt;/span&gt; haben.&lt;/p&gt;

&lt;h3&gt;Wie benutzt man &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt;?&lt;/h3&gt;

&lt;p&gt;&lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; wird im &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; einer HTML-Datei &lt;em&gt;nach&lt;/em&gt; den &lt;span lang=&quot;en&quot;&gt;Stylesheet&lt;/span&gt;-Referenzen eingebunden. So ist sichergestellt, dass der html5shiv korrekt funktioniert, bei Nutzung der von &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; erzeugten CSS-Klassen wird ein „&lt;span lang=&quot;en&quot;&gt;flash of unstyled content&lt;/span&gt;“ zumindest minimiert.&lt;/p&gt;

&lt;p&gt;Die gängigste Anwendungen für &lt;span lang=&quot;en&quot;&gt;Modernizr&lt;/span&gt; dürfte es sein, über die erzeugten CSS-Klassen alternative Gestaltungen bereit zu stellen. „Ersetzt“ man also z.B. den Rahmen eines &lt;code&gt;div&lt;/code&gt;-Elementes mit der ID &lt;code&gt;#logo&lt;/code&gt; in modernen Browsern durch &lt;code&gt;box-shadow&lt;/code&gt;, kann man diesem Element in alten Browsern über &lt;code&gt;.no-boxshadow #logo { }&lt;/code&gt; einen „konventionellen“ &lt;code&gt;border&lt;/code&gt; zuweisen. Mittlerweile dürfte in Zeiten des &lt;span lang=&quot;en&quot;&gt;progressive enhancements&lt;/span&gt; die Möglichkeit, &lt;span lang=&quot;en&quot;&gt;Polyfills&lt;/span&gt; über &lt;span lang=&quot;en&quot;&gt;Modernizr.load&lt;/span&gt; nachzuladen, sehr viel nützlicher sein. Darauf möchte ich später in einem separaten Artikel näher eingehen.&lt;/p&gt;

&lt;p&gt;Für den Moment sollte man bedenken, dass es nur bedingt eine gute Idee ist, für jedes erdenkliche &lt;span lang=&quot;en&quot;&gt;Feature&lt;/span&gt; ein &lt;span lang=&quot;en&quot;&gt;Polyfill&lt;/span&gt; nachzuladen. Auch dynamisch nachgeladenen Skripte müssen geladen werden und beeinflussen somit die Ladezeit einer Seite, wenngleich „nur“ in &lt;span lang=&quot;en&quot;&gt;Browsern&lt;/span&gt;, welche das &lt;span lang=&quot;en&quot;&gt;Polyfill&lt;/span&gt; tatsächlich benötigen.&lt;/p&gt;  
    </content:encoded>

    <pubDate>Wed, 29 Feb 2012 09:17:00 +0100</pubDate>
    <guid isPermaLink="false">http://yellowled.de/archiv/25/guid.html</guid>
    <category>css</category>
<category>html</category>
<category>javascript</category>
<category>webdesign</category>

</item>
<item>
    <title>Responsive Ressourcen 2011</title>
    <link>http://yellowled.de/archiv/21/Responsive-Ressourcen-2011.html</link>
            <category>Webdesign</category>
    
    <comments>http://yellowled.de/archiv/21/Responsive-Ressourcen-2011.html#comments</comments>
    <wfw:comment>http://yellowled.de/wfwcomment.php?cid=21</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://yellowled.de/rss.php?version=2.0&amp;type=comments&amp;cid=21</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Mees)</author>
    <content:encoded>
    &lt;p&gt;2011 war das Jahr des &lt;a href=&quot;http://yellowled.de/plugin/tag/responsive&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Responsive Webdesign&lt;/span&gt;&lt;/a&gt;. Aus &lt;a href=&quot;http://pinboard.in/u:yellowled/&quot;&gt;meinen &lt;span lang=&quot;en&quot;&gt;Bookmarks&lt;/span&gt;&lt;/a&gt; hier die meines Erachtens wichtigsten Quellen aus 2011 dazu:&lt;/p&gt;
&lt;h3&gt;Grundlagen&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.alistapart.com/articles/responsive-web-design/&quot;&gt;&lt;abbr title=&quot;A List Apart&quot; lang=&quot;en&quot;&gt;ALA&lt;/abbr&gt;: &lt;span lang=&quot;en&quot;&gt;Responsive Webdesign&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.lukew.com/ff/entry.asp?933&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Mobile first&lt;/span&gt;&lt;/a&gt; (ist spannenderweise bereits aus &lt;em&gt;2009&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.alistapart.com/articles/fluidgrids/&quot;&gt;ALA: &lt;span lang=&quot;en&quot;&gt;Fluid Grids&lt;/span&gt;&lt;/a&gt; (auch schon aus 2009)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://adactio.com/journal/4538/&quot;&gt;&lt;span lang=&quot;en&quot;&gt;The Responsive Designer&#039;s Workflow&lt;/span&gt;&lt;/a&gt; (Vortragsprotokoll)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span lang=&quot;en&quot;&gt;Responsive Images&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://unstoppablerobotninja.com/entry/fluid-images&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Fluid images&lt;/a&gt; und eine &lt;a href=&quot;https://twitter.com/#!/keithclarkcouk/statuses/111099584608083968&quot;&gt;Ergänzung dazu&lt;/a&gt; via Twitter&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;en&quot;&gt;Responsive IMGs&lt;/span&gt; &lt;a href=&quot;http://www.cloudfour.com/responsive-imgs/&quot;&gt;Teil 1&lt;/a&gt;, &lt;a href=&quot;http://www.cloudfour.com/responsive-imgs-part-2/&quot;&gt;Teil 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://adaptive-images.com/&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Adaptive images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://filamentgroup.com/lab/responsive_images_experimenting_with_context_aware_image_sizing/&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Context aware image sizing&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;code&gt;viewport&lt;/code&gt; und Co.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://adactio.com/journal/4470/&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Orientation and scale&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webkrauts.de/2011/12/21/ein-blick-durch-den-viewport/&quot;&gt;Ein Blick durch den Viewport&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.google.com/present/view?id=dkx3qtm_22dxsrgcf4&amp;pli=1&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Idiot&#039;s Guide to viewport and pixels&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://quirksmode.org/mobile/&quot;&gt;ppks „Forschungsergebnisse“ rund um &lt;span lang=&quot;en&quot;&gt;Mobile&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span lang=&quot;en&quot;&gt;Progressive enhancement/Feature detection&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.modernizr.com/docs&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Modernizr documentation&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.alistapart.com/articles/taking-advantage-of-html5-and-css3-with-modernizr/&quot;&gt;ALA: Taking Advantage of HTML5 and CSS3 with Modernizr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/regressive-enhancement-with-modernizr-and-yepnope/&quot;&gt;Regressive Enhancement with Modernizr and Yepnope&lt;/a&gt; (yepnope ist mittlerweile Bestandteil von Modernizr)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Sammelsurium&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blaze.io/mobile/&quot;&gt;Mobitest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fittextjs.com/&quot;&gt;FitText.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://css-tricks.com/convert-menu-to-dropdown/&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Convert a Menu to a Dropdown for Small Screens&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Falls Ihr in den Kommentaren weitere &lt;span lang=&quot;en&quot;&gt;Ressourcen&lt;/span&gt; ergänzen wollt, denkt bitte daran, dass Links in den Kommentaren mit &lt;a href=&quot;http://thresholdstate.com/articles/4312/the-textile-reference-manual&quot;&gt;&lt;span lang=&quot;en&quot;&gt;Textile&lt;/span&gt;-Syntax&lt;/a&gt; möglich sind, &lt;abbr title=&quot;HyperText Markup Language&quot; lang=&quot;en&quot;&gt;HTML&lt;/abbr&gt; jedoch nicht zulässig ist.&lt;/p&gt;  
    </content:encoded>

    <pubDate>Wed, 28 Dec 2011 20:03:00 +0100</pubDate>
    <guid isPermaLink="false">http://yellowled.de/archiv/21/guid.html</guid>
    <category>responsive</category>
<category>webdesign</category>

</item>

</channel>
</rss>
