<?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>Codecandies &#187; Suchergebnisse  &#187;  css+guidelines</title>
	<atom:link href="http://codecandies.de/search/css+guidelines/feed/rss2/" rel="self" type="application/rss+xml" />
	<link>http://codecandies.de</link>
	<description>Das Weblog von Nico Brünjes.</description>
	<lastBuildDate>Wed, 08 Feb 2012 12:25:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Javascript sch&#246;ner und schneller machen</title>
		<link>http://codecandies.de/2010/11/26/javascript-schoener-und-schneller-machen/</link>
		<comments>http://codecandies.de/2010/11/26/javascript-schoener-und-schneller-machen/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 11:27:35 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Postings]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=3361</guid>
		<description><![CDATA[Javascript ist, angesichts seiner <a href="http://en.wikipedia.org/wiki/JavaScript#History">etwas holprigen Entstehungsgeschichte</a> eine eigentlich recht elegante Scriptsprache. Es krankt jedoch daran, dass in Javascript im Grunde alles geht und alles gemacht wird und jedesmal anders. Beachtet man aber neben einem guten Stil in Javascript einige elementare Regeln, kann man seine Scripte dadurch auch noch merklich schneller und kompakter machen. Ein Acht-Punkte-Plan.]]></description>
			<content:encoded><![CDATA[<div class="foto"><img src="http://codecandies.de/wp-content/uploads/2010/11/aintbroke.jpg" alt="" title="Javascript sch&#246;ner und schneller machen" width="620" height="420" class="alignnone size-full wp-image-3366" /></div>
<p>Javascript ist, angesichts seiner <a href="http://en.wikipedia.org/wiki/JavaScript#History">etwas holprigen Entstehungsgeschichte</a> eine eigentlich recht elegante Scriptsprache. Es krankt jedoch daran, dass in Javascript im Grunde alles geht und alles gemacht wird und jedesmal anders. Will man mit Kollegen zusammen an einem Javascriptprojekt arbeiten, ist der eigene Dialekt ebenso hinderlich, wie mangelnde Sauberkeit beim Codeschreiben. Beachtet man aber neben einem guten Stil in Javascript einige elementare Regeln, kann man seine Scripte dadurch auch noch merklich schneller und kompakter machen.</p>
<h2>Coding Guidelines</h2>
<p>In Sachen Coding Guidelines gilt auf jeden Fall: jede Regel ist besser als keine Regel. In Javascript kann man viele b&#246;se Dinge schreiben, die kein Mensch versteht, die aber trotzdem hervorragend funktionieren. Die Sprache l&#228;sst einfach vieles zu, was trotzdem schlechter Stil ist. Vor kurzem haben sich die Entwickler von jQuery einen Styleguide verpasst, die <a href="http://docs.jquery.com/JQuery_Core_Style_Guidelines">JQuery Core Style Guidelines</a>, das ist schon eine wunderbare Grundlage. Einfach copy &amp; pasten.</p>
<p>Wichtig ist dabei auch, die Verwendung von <a href="http://jslint.com/">JS Lint</a> (<q>JSLint will hurt your feelings.</q>). Mit diesem Tool kann man die &#252;belsten Stylefehler vermeiden und die Einhaltung des Styleguides automatisiert &#252;berpr&#252;fen. <a href="http://www.jslint.com/lint.html">Die Einf&#252;hrung dazu</a> ist mehr als lesenswert. Besonders praktisch f&#252;r Nutzer von <a href="http://macromates.com/">Textmate</a> (<em>Lieblingseditor</em>) ist das <a href="http://andrewdupont.net/2006/10/01/javascript-tools-textmate-bundle/">JS Lint Bundle</a>.</p>
<h2>Codeverbesserung: erster Durchgang</h2>
<p>Sich aufzuraffen, seinen Code zu &#252;berarbeiten, ist nicht leicht. Aber: der Wille zur Verbesserung und das Wissen, dass der erste Aufschlag meist nicht optimal ist, trennt den Programmieren vom Scriptingguy, oder so. Hier ein paar schnelle und einfache Schritte, die Javascript schon deutlich verbessern. Federice Galassi hat dar&#252;ber eine <a href="http://www.slideshare.net/mobile/fgalassi/refactoring-to-unobtrusive-javascript">wunderbare Pr&#228;sentation</a> gemacht. Die Ma&#223;nahmen f&#252;hren aber nicht nur in Richtung <em>unobtrusiveness</em>, sondern sind auch geeignet, Javascript schneller und wartbarer zu machen. Kurz zusammengefasst:</p>
<ol>
<li>
<p>Entferne alles Inline-Javascript aus dem HTML-Code.</p>
<p>Also <code>&lt;script&gt; Code&hellip;&lt;/script&gt;</code> raus aus den Seiten und in eigene Dateien (besser eine eintige) packen. Diese dann mit <code>&lt;script src=&quot;datei.js&quot;&gt;&lt;/script&gt;</code> aufrufen. Und das am besten <strong>am Ende der Seite</strong>, direkt vor <code>&lt;/body&gt;</code>.</p>
</li>
<li>
<p>Alle Inlineevents aus dem HTML entfernen</p>
<p>Weg mit <code>&lt;a class=&quot;klick&quot; href=&quot;#&quot; onclick=&quot;foo();&quot;&gt;Klicken Sie hier&lt;/a&gt;</code>. Das kann besser machen. Mit jQuery beispielsweise: <code>$("a.klick" ).bind("click", function() { foo(); });</code>, jedenfalls aber in der externen Javascriptdatei.</p>
</li>
<li>
<p>Javascript-Pseudolinks entfernen</p>
<p>Mit Todesstrafe wird der uralte Javascript-Pseudolink bestraft! Sowas geht gar nicht: <code>&lt;a href=&quot;javascript:foo()&quot;&gt;Klicken Sie hier&lt;/a&gt;</code></p>
</li>
<li>
<p>CSS-Code aus dem Javascript entfernen.</p>
<p>Innerhalb des Javascriptes sollte kein CSS verwendet werden (Trennung von Pr&#228;sentation und Programmierlogik). D.h. sowohl Zuweisungen wie <code>$("a" ).css("background","#ff0000" );</code> oder auch <code>document.getElementById("id").style.color("#ff0000");</code>	und &#228;hnliches schreiben teilweise lange un&#252;berschaubare style-Attribute in den HTML-Code und produzieren DOM-Zugriffe. Stattdessen schreibt man die CSS-Anweisungen in eine CSS-Datei</p>
<pre class="brush: css; title: ; notranslate">
// bspw. base.css
a.rot {
	background: #ff0000;
}
</pre>
<p>und nutzt im Javascript</p>
<pre class="brush: jscript; title: ; notranslate">
$(&quot;a&quot;).addClass(&quot;rot&quot;); // Farbe an
$(&quot;a&quot;).removeClass(&quot;rot&quot;); // Farbe aus, oder gleich:
$(&quot;a&quot;).toggleClass(&quot;rot&quot;); // je nach dem
</pre>
<p><q>CSS bewegt sich wesentlich schneller und gewandter durch das DOM als Javascript.</q></p>
</li>
<li>
<p>Businesslogik aus dem Javascript entfernen (Client-Server-Anwendungen).</p>
<p>Bei Client-Server-Anwendungen kann es einen entscheidenen Geschwindigkeitsvorteil bedeuten, komplizierte Berechnungen nicht auf dem Client (also mit Javascript) sondern auf dem Server auszuf&#252;hren. Wenn man sich also schon Daten vom Server holt, dann sollte man vermeiden mit diesen Daten Berechnungen auf dem Client auszuf&#252;hren. Ein Beispiel:</p>
<pre class="brush: jscript; title: ; notranslate">
// Schlecht!
$.get(&quot;action.php&quot;, function ( data ) {
    if ( data ) {
        if ( data.kontostand &gt; data.dispokredit ) {
            alert(&quot;Konto &#252;berzogen&quot; );
        }
    }
});

// Besser!
$.get(&quot;action.php?dispoberechnung&quot;, {konto:&quot;123456&quot;}, function ( data ) {
    if ( data.dispo === false ) {
        alert(&quot;Konto &#252;berzogen&quot; );
    }
}
</pre>
</li>
<li>
<p>DOM-Operationen auf ein Minimum beschr&#228;nken!</p>
<p>Nicolas Zakas formuliert es in <a href="http://www.amazon.de/gp/product/059680279X?ie=UTF8&amp;tag=couchblogorg-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=059680279X">High Performance JavaScript (Build Faster Web Application Interfaces)</a><img src="http://www.assoc-amazon.de/e/ir?t=couchblogorg-21&amp;l=as2&amp;o=3&amp;a=059680279X" width="1" height="1" border="0" alt="" style="display:inline !important;border:none !important; margin:0px !important;" /> so:</p>
<blockquote><p>An excellent analogy is to think of DOM as a piece of land and JavaScript (meaning ECMAScript) as another piece of land, both connected with a toll bridge (see John Hrvatin, Microsoft, MIX09,  http://videos.visitmix.com/MIX09/T53F ). Every time your ECMAScript needs access to the DOM, you have to cross this bridge and pay the performance toll fee. The more you work with the DOM, the more you pay. So the general recommendation is to cross that bridge as few times as possible and strive to stay in ECMAScript land.</p>
</blockquote>
<p>Daraus ergibt sich eine klare Anweisung: greife sowenig wie es eben geht auf das DOM zu.</p>
<p>Ein Domzugriff ist dann gegeben, wenn ein DOM-Element erschafft, ins DOM einh&#228;ngt, ein Element im DOM verschiebt, Attribute hinzuf&#252;gt und so weiter und so fort. Am allerschlimmsten sind die sogenannte HTML-Coolections und das iterieren hierauf.</p>
<pre class="brush: jscript; title: ; notranslate">
// ein ganz b&#246;ses Beispiel!
function innerHTMLLoop () {
    for ( var i = 0; i &lt; 15000; i++ ) {
        document.getElementById(&quot;meinLink&quot; ).innerHTML +=&quot;a&quot;;
    }
}
</pre>
<p>Hier erleben wir schlappen 15000 DOM-Aufrufe der &#252;belsten Art. Stattdessen vermeidet man solange wie m&#246;glich den Zugriff aufs DOM:</15000></p>
<pre class="brush: jscript; title: ; notranslate">
// dann besser so
function innerHTMLLoop2 () {
    var content =&quot;&quot;;
    for ( var i = 0; i &lt; 15000; i++ ) {
        content +=&quot;a&quot;;
    }
    document.getElementById(&quot;meinLink&quot; ).innerHTML += content;
}
</pre>
<p><strong>Goldene Regel: pro Funktion sollte es nur einen Zugriff auf den DOM geben.</strong> So kann es beispielsweise Sinn machen, sehr lange auf Strings mit HTML zu arbeiten und erst am Ende alles zusammen per  <code>$( var ).appendTo( 'body' );</code> ins DOM zu h&#228;ngen. Ausser in Chrome und Safari ist es sogar noch schneller <code>innerHTML</code> zu benutzen, in jQuery <code>$("#meinKram" ).html( var );</code>. Hier scheiden sich allerdings die Geister, weil innerHTML nicht standardkonform ist, wohl aber von jedem Browser unterst&#252;tzt wird.</p0>
	</li>
<li>
<p>Gro&#223;e HTML-Chunks ggf. durch Templates ersetzen.</p>
<p>Wegen der schon oft angesprochenen Trennung von Content und Pr&#228;sentationslogik ist zu &#252;berlegen, ob man f&#252;r gro&#223;e HTML-St&#252;cke die man in den Code einspeisen muss, vielleicht besser HTML-Templates verwendet, den Code also in externe Dateien auslagert und nachl&#228;dt (auf welche Weise auch immer). Als Vorstufe dazu und Kompromiss kann man auch bis mittelgro&#223;e Codeschnipsel im verborgenen Teilen des HTML-Dokuments unterbringen und sich dann per .clone() oder wieder .html() einlesen und wiederverwenden.</p>
<p>Die Verwendung eines Templatesystems setzt aber bspw. wieder ein eingenes Plugin voraus, Schnipsel im HTML verursachen beim Laden wieder DOM-Zugriffe. Hier muss man genau abwiegen, was der Performance hier zutr&#228;glich ist, sicherlich auch in Abh&#228;ngigkeit vom der Gr&#246;&#223;e des HTML-Codes der ben&#246;tigt wird.</p>
</li>
<li>
<p>Keine/wenig globalen Variablen nutzen!</p>
<p>Variablen die ausserhalb von Funktionen definiert werden, sind, auch wenn sie mit var geschrieben werden, globale Variablen, die im window-Namensraum gespeichert werden. Es besteht die Gefahr, dass diese an anderer Stelle ungewollt &#252;berschrieben werden, au&#223;erdem ist der Zugriff auf window langsam. Stattdessen speichert man Variablen aus dem Window-Namensraum in lokalen Variablen zwischen, auf die der Zugriff wesentlich schneller erfolgt.</p>
</li>
</ol>
<h2>Fortsetzung folgt</h2>
<p>Dieser 8-Punkte-Plan ist aber nur ein Einstieg. Wenn man ein Programm so optimiert hat, kann man praktisch direkt wieder von vorne anfangen und weitere Verbesserungen einbringen. Das wird dann das Thema eines weiteren Artikels hier.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2010/11/26/javascript-schoener-und-schneller-machen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Barrierefrei ganz nebenbei?</title>
		<link>http://codecandies.de/2009/12/08/barrierefrei-ganz-nebenbei/</link>
		<comments>http://codecandies.de/2009/12/08/barrierefrei-ganz-nebenbei/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 20:54:11 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Postings]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=2579</guid>
		<description><![CDATA[<p>ZEIT ONLINE wurde mit einem BIENE-Award ausgezeichnet. Dieser Award geht an Webseiten, die sich um das barrierefreie Internet verdient gemacht haben, pathetisch ausgedr&#252;ckt. Da haben wir uns zun&#228;chst mal ein wenig gewundert und dann gefreut. Und ein wenig Stolz sind wir nat&#252;rlich auch.</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://codecandies.de/wp-content/uploads/2009/12/braillewein.jpg" alt="Foto einer Weinflasche mit Brailleschrift" class="wp-image-2580" /></p>
<p>Bei der Verleihung des <a href="http://www.biene-award.de/award">Biene Awards</a> letzte Woche in Berlin<sup><a href="#anmerkung1">1</a></sup> wurde ich gefragt, ob das jetzige <a href="http://www.zeit.de/">ZEIT ONLINE</a> <em>quasi zuf&#228;llig</em> so gut geworden w&#228;re. Zun&#228;chst empfand ich die Frage als d&#228;mlich, mithin frech. Beim genauerer &#220;berlegung muss ich jedoch zugeben: preisw&#252;rdige Barrierefreiheit ist tats&#228;chlich bei der Entwicklung mehr als Zugabe herausgefallen, als dass wir darauf zugesteuert h&#228;tten. Die Gemeinschaftsleistung aller Beteiligten, von den <a href="http://informationsarchitects.js">Information Architects</a> in Japan und in der Schweiz, &#252;ber <a href="http://www.nexum.de/">Nexum</a>, die <a href="http://erdfisch.de/">Erdfische</a> und das <a href="http://www.digitalkombinat.net/">Digitalkombinat</a>, hat uns in Hamburg genug Freiheit in der Codegestaltung gegeben, dass zun&#228;chst nur Validit&#228;t und letzten Endes dann wohl auch Barrierefreiheit m&#246;glich wurden.</p>
<p>Als ich bei ZEIT Online angefangen habe, da bestand die Site noch aus einer gro&#223;en, merkw&#252;rdigen Tabellenkonstruktion. Seitdem hat sich einiges ge&#228;ndert: zun&#228;chst stellten wir auf CSS um, damals noch mit schlimmster &lt;div&gt;-terie, einen Relaunch sp&#228;ter versuchten wir wenigtens stellenweise valide zu sein, was nicht durchg&#228;ngig gelang. Heute ist zumindest dieses Ziel erreicht. Meistens. Die Wahrheit ist, dass man regelm&#228;&#223;ig Kontrollen machen muss, ob noch alles in Ordnung ist.</p>
<p>Aber, das wissen wir alle: das alleine macht ja keine Barrierefreiheit aus. In der Laudatio wurde es aber auch schon deutlich: das gelungene Design (Japan/Schweiz) und der Einsatz allermodernster Techniken wie HTML5 (Hamburg), sowie die gute Typographie (Japan/Schweiz/Hamburg) haben einen guten Teil des Ergebnisses ausgemacht. Wenn ich die Andeutungen richtig verstanden habe, war es auch ein wenig umstritten, ob man ZEIT ONLINE auszeichnen solle, oder das Ergebnis war zumindest knapp. Was ich gut verstehen kann, denn obwohl unser Motto lautet: »Wir sind die Guten!«, hatten wir doch schon das Gef&#252;hl, allein wegen der schieren Masse an Code nicht in alle Ecken vorgedrungen zu sein, um dort mit gutem Zureden, freundlichen Worten und zur Not eiserner Faust die Richtlinien durchzusetzen, die man braucht, um eine barrierefreie Seite zu bauen. Au&#223;erdem besteht unser Team zwar aus Jungs, die in HTML und CSS tr&#228;umen und das Getr&#228;umte morgens durch den W3C-Validator jagen, aber anderseits sind wir nicht mit der <abbr title="Barrierefreie Informationstechnik-Verordnung">BITV</abbr> oder den <abbr title="Web Content Accessibility Guidelines">WCAG</abbr>, jedenfalls nicht t&#228;glich.</p>
<p>Das wir daf&#252;r die Biene in Bronze erhalten haben, die aussagt, dass da noch Raum f&#252;r Verbesserungen ist, noch Luft nach oben, zeigt uns, dass man trotzdem bereit war unsere bisherige Arbeit positiv zu bewerten. Das ist nat&#252;rlich ein gro&#223;er Ansporn, um auf dem Weg weiter zu gehen. Und sicherlich auch eine Legitimation mehr, denn letzten Endes muss man sich auch immer f&#252;r l&#228;ngere Entwicklungszeiten, kompliziertere Konstrukte und das teilweise sture Beharren auf bestimmte Codestrukturen verantworten. Da ist der Preis sicherlich Wind von hinten.</p>
<p>Last but not least m&#246;chte ich noch auf eine Sache hinweisen, auch weil es bei der Verleihung kurz zur Sprache kam: als Newswebsite m&#252;ssen wir nat&#252;rlich in einem teilweise sehr hartem Verdr&#228;ngungswettbewerb bestehen, im Rennen um die beste Platzierung in der Google-Suche, den meisten Nennungen bei Google News und so fort. Wir haben aber im letzten Jahr kontinuierlich versucht SEO-Ma&#223;nahmen als eine Form der Zug&#228;nglichkeit zu verstehen. Scheinbar hat auch das, jedenfalls an den meisten Stellen, sehr gut funktioniert, in beide Richtungen.</p>
<p class="anmerkung" id="anmerkung1"><sup>1</sup> ZEIT ONLINE wurde eine bronzene Biene in der Kategorie »tagesaktuelle Recherche- und Serviceangebote« verliehen</p>
<p xmlns:cc="http://creativecommons.org/ns#" about="http://www.flickr.com/photos/adactio/89778576/">Bild: <a rel="cc:attributionURL" href="http://www.flickr.com/photos/adactio/">http://www.flickr.com/photos/adactio/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2009/12/08/barrierefrei-ganz-nebenbei/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>You never have expected…</title>
		<link>http://codecandies.de/2008/09/22/you-never-have-expected/</link>
		<comments>http://codecandies.de/2008/09/22/you-never-have-expected/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 07:17:52 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Postings]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=1176</guid>
		<description><![CDATA[In Pisto bettelt Andreas D&#246;lling um Schl&#228;ge der heiligen CSS-Inquisition. Es gibt eine heilige CSS-Inquisition? Das bin ja dann wohl ich. Schl&#228;ge? Kann er haben!]]></description>
			<content:encoded><![CDATA[<p>Hallo, hier spricht die <q>heilige CSS-Inqisition</q>. Sie h&#228;tten das sicherlich nicht erwartet, aber hier ging es ja schon das <a href="http://codecandies.de/2008/05/21/css-coding-guidelines-i/">eine</a> oder <a href="http://codecandies.de/2008/05/22/css-coding-guidelines-ii/">andere</a> Mal um CSS-Code<del>poetry</del><ins>styleguidespie&#223;ereien</ins>, da kann ich nat&#252;rlich kaum an mich halten, wenn in einem von mir hochgelobten <a href="http://pisto-magazin.de">Webmagazin</a> derartig <a href="http://pisto-magazin.de/artikel/css-wir-raeumen-auf">hahneb&#252;chener Bl&#246;dsinn</a> verzapft wird.</p>
<p>Andreas D&#246;lling ist laut Autorenangbae <q><a href="http://a-doelling.de/">Webentwickler</a>, kann es aber nicht lassen, seine Nase immer wieder in Bereiche zu stecken, die ihn eigentlich gar nichts angehen, und seine Meinung dazu kundzutun.</q> Schon passiert w&#252;rde ich mal sagen, obwohl ich dachte, dass CSS einen Webentwickler sehr wohl etwas angeht.</p>
<p>Zun&#228;chst einmal ist es nat&#252;rlich eine super Sache, seine CSS-Klassen gut und semantisch zu benennen, es werden auch wirklich sch&#246;ne und einleuchtende Besipiele genannt, die Herr D&#246;lling einem <em>alten Hasen</em> abgescahut hat bzw. zu denen ihn das Qualit&#228;tsmanagement einer professionellen Firma <em>gezwungen</em> hat. Scheinbar aus Rachen gegen die Affront jedoch hat sich Herr D&#246;lling noch einige Reste eigenen CSS-Stils bewahrt und die haben es in sich. Mein Vorschlag dazu: <strong>auf gar keinen Fall nachmachen!</strong></p>
<h4>Anordnung von CSS-Eigenschaften</h4>
<p>Es wird empfohlen, Eigenschaften in der Reihenfolge der Wichtigkeit zu notieren, wobei in f&#252;nf Wichtigkeitsgruppen eingeteilt  wird (Verhalten, Position und Dimension, Abst&#228;nde und Rahme, Schriftgr&#246;&#223;e und Zeilenh&#246;he, Hintergrund und &#252;brige Eigenschaften). D&#228;mliche Idee numero uno: erstens halte ich die <em>Wichtigeit von CSS-Eigenschaften</em> f&#252;r h&#246;chst diskutabel, das kommt halt immer auf den Fall an, in Wahrheit ist dies ein willk&#252;rliche Festlegung. Wogegen man eigentlich gar nichts einwenden kann, denn wenn es keine logische Reihenfolge gibt ist koordninierte Willk&#252;r der einzige Weg. Nur sind diese Gruppen schwer vemittelbar: man muss lernen, was zu welcher Gruppe geh&#246;rt, lernen in welcher Reihenfolge die Gruppen anzuordnen sind und innerhalb der Gruppen, gibt es gar keine definierte Reihenfolge. Stellen sie sich einmal vor, sie sind Qualit&#228;tsmanager und sollen nun dieses Regelwerk an diverse Webentwickler und -dekorateure kommunizieren. Sch&#246;nen Dank. Ich sag&#8217;s mal in CSS-Inquisitions-Sprache: <em>wird sich nicht durchsetzen</em>. Zu kompliziert, zu schwierig umzusetzen.</p>
<p>Der Gegenvorschlag bleibt bestehen: <strong>CSS-Eigenschaften immer in aplhabetischer Reihenfolge notieren.</strong> Das ist einfach, versteht jeder, ist eine nachpr&#252;fbare, also durchsetzbare Regel und super umsetzbar. Und f&#252;hrt auch auf lange Sicht zu lesbaren Stylesheets.</p>
<h4>Einr&#252;ckung und Umbr&#252;che</h4>
<p>Endg&#252;ltig die Haare zu Berge stehen einem dann, wenn man die Idee zum <q>quer schreiben</q> liest. Herr D&#246;lling, lassen sie sich an dieser Stelle einmal folgendes sagen: wer quer schreibt, ist noch lange kein Querdenker, eher schon ein Quertreiber. Mal davon abgesehen, dass die letzte &#220;bersichtlichkeit, die Herrn D&#246;llings drolliger Dialekt noch bietet, einzig und allein durchs Synthaxhighlighting zustande kommt, ist dies ein CSS-Code der sagt: »Fass mich nicht an! Mein Autor ist so von sich selbst &#252;berzeugt, dass er nicht glaubt, dass jemand anderes ausser er selbst &#196;nderungen vornehmen m&#246;chte.« Danke sch&#246;n.</p>
<p>Sowas darf man sicherlich auf den Server stellen, es spart eine Menge Platz und sicherlich das eine oder andere Byte an Gewicht. Aber w&#228;hrend der Entwicklungszeit ist so eine Schreibweise einfach nur eins: kontraproduktiv. Man stelle sich nur vor, man soll jetzt hier eine CSS-Regel hinzuf&#252;gen, wom&#246;glich nach der vorgenannten Fehllehre, sozusagen irgendwo in der 400 Zeichen langen Zeile. Wir w&#252;nschen fr&#246;hliches horizontal scrollen. Das ist wirklich eine dumme Idee. <strong>Auf gar keinen Fall nachmachen.</strong></p>
<p>Hoffe, das war jetzt inquisitorisch genug, war ja auch so gew&#252;nscht. Da kann einem aber auch der Geduldsfaden reissen. Schon passiert: hier habe ich eine Videoaufnahme davon:</p>
<p><a href="http://www.youtube.com/watch?v=gldlyTjXk9A">http://www.youtube.com/watch?v=gldlyTjXk9A</a></p>
<p class="update">Nachtrag: ich habe heute morgen in meiner grenzenlosen <del>Weisheit</del> D&#228;mlichkeit diesen Artikel aus Versehen gel&#246;scht und musste z.T. von Hand restoren, dabei sind die Pingbacks fl&#246;ten gegangen. Sorry.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2008/09/22/you-never-have-expected/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>CSS Coding Guidelines II</title>
		<link>http://codecandies.de/2008/05/22/css-coding-guidelines-ii/</link>
		<comments>http://codecandies.de/2008/05/22/css-coding-guidelines-ii/#comments</comments>
		<pubDate>Thu, 22 May 2008 16:06:42 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Postings]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=564</guid>
		<description><![CDATA[Nach angeregter Diskussion gegen die CSS.Guidelines in die zweite Runde. Und wir sind immer noch beim reinen Codelayout, noch kein wort dar&#252;ber, welche Techniken zu nutzen und welche verboten sind…]]></description>
			<content:encoded><![CDATA[<p><a href="http://codecandies.de/2008/05/21/css-coding-guidelines-i/">Teil 1</a> wurde ja schon ausgiebig diskutiert, daraus habe ich schon einiges mitgenommen. Machen wir also fr&#246;hlich weiter mit meinen Ideen, wie man CSS am besten notiert…</p>
<p><img src="http://codecandies.de/wp-content/uploads/iw/ZZ46E36474.jpg" width="632" height="347" alt="dr. who" /><br />
»It&#8217;s not <strong>everything</strong> that bad…« &copy;BBC</p>
<h4>Kommentare</h4>
<p><strong>Mehrzeilige Kommentare, mit Einr&#252;ckung et al.</strong> sind zu platzieren:</p>
<ul>
<li>am Beginn jeder Datei
<ul>
<li>mit Angabe wozu und an welcher Stelle das Stylesheet ben&#246;tigt wird, kurze Inhaltsangabe o.&#228;.</li>
<li>Abh&#228;ngigkeiten</li>
</ul>
</li>
<li>vor jedem Themenabschnitt</li>
</ul>
<p class="codeexample"><strong>Codebespiel:</strong> mehrzeiliger Kommentar</p>
<pre class="codeexample"><code>/**
 * Hello World
 * Dies ist ein mehrzeiliger Kommentar
 */
</code></pre>
<p>In allen anderen F&#228;llen ist der Zeilenkommentar zu nutzen</p>
<p class="codeexample"><strong>Codebespiel:</strong> einzeiliger Kommentar</p>
<pre class="codeexample"><code>/* Dies ist ein einzeiliger Kommentar */
</code></pre>
<h4>Leerzeilen</h4>
<p>Einzelne Regeln sind durch <strong>1</strong> Leerzeile voneinander zu trennen. Es sollten niemal mehr als <strong>2</strong> Leerzeilen aufeinander folgen.</p>
<p class="codeexample"><strong>Codebespiel:</strong> Leerzeilen</p>
<pre class="codeexample"><code>.note { border: 1px solid #000; }

.black_note {
    background: #ff00ff;
    color: #000;
}</code></pre>
<p>Anm.: <em>Bitte den Code immer so leserlich wie m&#246;glich gestalten. Optimierung des CSS auf Gr&#246;&#223;e wird in sp&#228;teren Buildprozessen umgesetzt und ist vom Layout unabh&#228;ngig.</em></p>
<h4>Kurzschrift-Eigenschaften</h4>
<p>Wo immer <em>m&#246;glich <strong>und</strong> sinnvoll</em> sollen die Deklarationen in Kurzschreibweise zusammengefasst werden.</p>
<p class="codeexample"><strong>Codebespiel:</strong> Kurzschreibweisen 1</p>
<pre class="codeexample"><code>.small {
    background: transparent url(img/border-bottom.gif) repeat-x bottom;
    border: 1px solid #000;
}
</code></pre>
<p>Trotzdem bitte flexibel bleiben und davon abweichen, wenn es sinnvoll ist:</p>
<p class="codeexample"><strong>Codebespiel:</strong> Kurzschreibweisen 2</p>
<pre class="codeexample"><code>a:link {
    background: transparent url(img/sprite.gif) no-repeat 0 0;
}

a:hover {
    background-position: 0 -16px;
}
</code></pre>
<h4>Best practice</h4>
<p>Bitte jede Deklaration immer mit einem Semikolon abschlie&#223;en.</p>
<h4>Namen</h4>
<ul>
<li>alle Namen in Kleinbuchstaben</li>
<li>zusammengesetzte Namen mit _ (underscore) verbinden</li>
<li>eher aber kurze Namen suchen, h&#246;chstens 1 Zusammensetzung </li>
<li>Update: <q>Klassennamen verraten nicht das Aussehen eines Elementes.</q> (<a href="http://cyberer.wordpress.com/2008/07/21/css-und-html/">via</a>) D.h. Klassen heissen nicht &#8220;.grey-border&#8221; oder &#228;hnliches.</li>
</ul>
<p><strong>Reservierte IDs:</strong> folgende IDs sind in der Regel f&#252;r das HTML-Ger&#252;st vergeben und sollen au&#223;erhalb dessen nicht benutzt werden:</p>
<ul>
<li>#wrapper</li>
<li>#container</li>
<li>#header</li>
<li>#content</li>
<li>#sidebar</li>
<li>#footer</li>
</ul>
<p><strong>To be continued.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2008/05/22/css-coding-guidelines-ii/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>CSS Coding Guidelines I</title>
		<link>http://codecandies.de/2008/05/21/css-coding-guidelines-i/</link>
		<comments>http://codecandies.de/2008/05/21/css-coding-guidelines-i/#comments</comments>
		<pubDate>Wed, 21 May 2008 16:34:37 +0000</pubDate>
		<dc:creator>Nico Brünjes</dc:creator>
				<category><![CDATA[Postings]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://codecandies.de/?p=556</guid>
		<description><![CDATA[Zur Zeit dr&#252;cke ich mir kiloweise Coding Guidelines aus dem Kopf. In loser Reihenfolge werde ich die Ergebnisse hier posten- Den Anfang machen die ersten Zeilen CSS-Guideline.]]></description>
			<content:encoded><![CDATA[<p><img src="http://codecandies.de/wp-content/uploads/iw/ZZ58D4E4B0.jpg" width="632" height="347" alt="the doctor" /><br />The Doctor. &copy; BBC</p>
<h4>Begriffskl&#228;rung</h4>
<p class="codeexample"><strong>Codebespiel:</strong> Begrifflichkeiten</p>
<pre class="codeexample"><code>h2 { color: #000; }</code></pre>
<ul>
<li> Diese Codezeile ist eine CSS-Regel (rule)</li>
<li> <b>h2</b> ist (hier) ein Selektor (selector)</li>
<li> <b>color: #000;</b> ist die Deklaration (declaration)</li>
<li> <b>color</b> ist eine Eigenschaft (property)</li>
<li> <b>#000</b> ist ein Wert (value)</li>
</ul>
<p>Nachzulesen beim <a href="http://www.w3.org/TR/CSS1#basic-concepts">W3C</a>.</p>
<h4>Schreibweisen</h4>
<ul>
<li>Alle IDs und Klassennamen <strong>klein</strong> schreiben</li>
<li>Alle Selektoren <strong>klein</strong> schreiben</li>
<li>Alle Deklarationen <strong>klein</strong> schreiben</li>
<li>Alle Werte <strong>klein</strong> schreiben</li>
</ul>
<p class="codeexample"><strong>Codebespiel:</strong> Schreibweisen</p>
<pre class="codeexample"><code>h2, #container, .formbox { color: #efe; }</code></pre>
<h4>Leerzeichen (Space)</h4>
<ul>
<li> Zwischen Deklaration und Wert (nach dem Doppelpunkt)</li>
<li>nach Kommata</li>
<li>bei einzeligen Selektoren nach <code>{</code> und vor <code>}</code></li>
<li> nach <code>/*</code> und vor <code>*/</code></li>
</ul>
<h4>Einr&#252;ckung</h4>
<ul>
<li> Selektor auf eigener Zeile, dahinter <code>{</code>-Klammer</li>
<li> Deklarationen (1 pro Zeile) einger&#252;ckt um vier Leerzeichen</li>
<li> <code>}</code>-Klammer am Ende wieder ausger&#252;ckt </li>
</ul>
<p class="codeexample"><strong>Codebespiel:</strong> Einr&#252;ckung 1</p>
<pre class="codeexample"><code>.note {
    border: 1px solid #000;
    color: #ff0000;
    margin-bottom: 10px;
}</code></pre>
<p><strong>Ausnahme:</strong> Selektor mit nur <strong>1</strong> Deklaration wird einzeilig geschrieben</p>
<p class="codeexample"><strong>Codebespiel:</strong> Einr&#252;ckung 2</p>
<pre class="codeexample"><code>.note { border: 1px solid #000; }</code></pre>
<p>Regeln, die sich auf Kindelemente beziehen, werden an der Mutter-Regel ausgerichtet.</p>
<p class="codeexample"><strong>Codebespiel:</strong> Einr&#252;ckung 3</p>
<pre class="codeexample"><code>.note {
    border: 1px solid #000;
}
    .note p {
        padding: 4px 2px;
    }</code></pre>
<p>To be continued. <strong>Update:</strong> <ins><a href="http://codecandies.de/2008/05/22/css-coding-guidelines-ii/">Teil 2 ist fertig</a>.</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://codecandies.de/2008/05/21/css-coding-guidelines-i/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

