<?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>Hvem glor - din bror &#187; shortcase</title>
	<atom:link href="http://dinbror.dk/blog/tag/shortcase/feed/" rel="self" type="application/rss+xml" />
	<link>http://dinbror.dk/blog</link>
	<description>Den ikke-så-personlige blog af Bjørn Klinggaard</description>
	<lastBuildDate>Sat, 21 Apr 2012 22:18:14 +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>Tips &amp; tricks til bedre CSS og markup</title>
		<link>http://dinbror.dk/blog/tips-tricks-til-bedre-css-og-markup/</link>
		<comments>http://dinbror.dk/blog/tips-tricks-til-bedre-css-og-markup/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 18:47:20 +0000</pubDate>
		<dc:creator>dinbror</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[conditional comments]]></category>
		<category><![CDATA[divitus]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[normalisering]]></category>
		<category><![CDATA[oocss]]></category>
		<category><![CDATA[progressiv]]></category>
		<category><![CDATA[præcedens]]></category>
		<category><![CDATA[shortcase]]></category>

		<guid isPermaLink="false">http://dinbror.dk/blog/?p=562</guid>
		<description><![CDATA[Der er gået et år, siden jeg skrev indlægget Sådan laver du perfekt CSS, og jeg er i den tid blevet lidt klogere og fået noget mere erfaring, hvorfor en re-evaluering er på sin plads. Størstedelen af punkterne er stadig gældende, nogle er blevet ligegyldige og nye er opstået. Min påstand er, at alle udviklere [...]]]></description>
			<content:encoded><![CDATA[<p>Der er gået et år, siden jeg skrev indlægget <a title="Sådan laver du perfekt CSS" href="http://dinbror.dk/blog/css-sadan-laver-du-perfekt-css/">Sådan laver du perfekt CSS</a>, og jeg er i den tid blevet lidt klogere og fået noget mere erfaring, hvorfor en re-evaluering er på sin plads. Størstedelen af punkterne er stadig gældende, nogle er blevet ligegyldige og nye er opstået.</p>
<p>Min påstand er, at alle udviklere på et tidspunkt kommer til at støde på front-end arbejde herunder CSS og markup. Mange af de tungere drenge bryder sig ofte ikke om det, hvilket til tider resulterer i spaghetti kode! Om det er manglende interesse/viden eller bare arrogance, skal jeg ikke kunne sige. Ved at følge nogle simple principper kan det hele blive lidt sjovere og nemmere for alle parter, for de tunge drenge, for dem som er begejstret for det og sidst men ikke mindst for dem som skal vedligeholde det efterfølgende.</p>
<h3>1. Markup før CSS</h3>
<p>Lav altid dit markup før du begynder at style. Sørg for at den så vidt muligt er <a href="http://validator.w3.org/">valid</a>, og at den er semantisk opbygget. En god tommelfingerregel er, at ens markup skal give mening uden CSS.</p>
<h3>2. Lav valid kode</h3>
<p>Ligesom med dit markup skal dit CSS være valid. Hvis du er i tvivl, kan du validere dine <em>stylesheets</em> via <a title="W3 CSS validator" href="http://jigsaw.w3.org/css-validator/" target="_self">W3's CSS validator</a>. Mange undervurderer vigtigheden af valid kode, så længe det bare virker. Men ved ikke at have valid kode, kan man ikke være sikker på, at ens kode vil virke i fremtiden. Ved at følge en vis standard undgår vi kaos og monopolisme.</p>
<h3>3. Normalisering</h3>
<p>Normaliser altid dit <em>stylesheet</em> inden du går i gang. Forskellige browsere har forskellige <a href="http://en.wikipedia.org/wiki/Default_%28computer_science%29">default</a> værdier for de forskellige elementer, hvorfor det til tider kan være umuligt at lave en side, der opfører sig ens <a title="Cross-browser" href="http://en.wikipedia.org/wiki/Cross-browser">cross-browser</a> uden brug af reset. Hvor meget eller hvor lidt der skal resettes er en temperamentssag. Herunder er listet nogle eksempler:</p>
<ol>
<li><a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">CSS Reset Reloaded</a> by Eric Meyer</li>
<li><a href="http://developer.yahoo.com/yui/reset/">Yahoo! UI Library: Reset CSS</a></li>
<li><a href="http://warpspire.com/features/css-frameworks/">CSS Global Styles Reset</a> by Kyle Neath</li>
</ol>
<p>Være opmærksom på at det korte og brugte reset: <strong>* { margin: 0; padding: 0; } </strong> er et misforstået reset. Det er "tungere" at renderer (især med store websider), da det definerer regler for hvert enkelt element i ens dokument og nulstiller alt, hvorfor det <span style="text-decoration: underline;">ikke</span> er anbefalingsværdigt.</p>
<h3>4. Navngivning</h3>
<p>Navngivningen er vigtig og desværre også utrolig undervurderet. Uanset hvad du vælger så vær konsekvent. Hold dig evt. til engelsk, brug <a href="http://en.wikipedia.org/wiki/CamelCase">camelCaseMedLilleBegyndelsebogstav</a> eller adskil ord med bindestreg (-)  og giv som udgangspunkt strukturelle navne frem for <span id="result_box"><span style="background-color: #ffffff;" title="presentational">præsentationsmæssige</span></span>.<br />
Et strukturelt navn beskriver, hvad det er for et element, du vil henvise til frem for et præsentationsmæssigt navn, som beskriver, hvor elementet befinder sig på siden, eller hvordan det ser ud.</p>
<p><span style="background-color: #ffffff;" title="presentational">Præsentationsmæssige navne:<br />
</span></p>
<pre><span style="text-decoration: line-through;">topNav, leftTopLogo, leftContent, redBoldLink</span></pre>
<p>Strukturelle navne:</p>
<pre><span style="color: #0000ff;">primaryNav, branding, mainContent, externalLink</span></pre>
<p>De <span id="result_box"><span style="background-color: #ffffff;" title="presentational">præsentationsmæssige</span></span> navne låser elementet fast, hvorfor de skal undgås. Hvad nu hvis din top menu (#topNav) pludselig skal ligge til venstre for dit indhold? Der findes dog som altid undtagelser, hvor de <span id="result_box"><span style="background-color: #ffffff;" title="presentational">præsentationsmæssige </span></span>navne giver mening, som næste punkt vil illustrere.</p>
<h3>5. Lav genanvendelig kode</h3>
<p>Du er sikkert stødt på ordet "<em>object-oriented CSS</em>" også kaldet OOCSS?! Hvis ikke gør du det nu. Selve navnet, OOCSS, er en smule misvisende og forvirrede mig, da jeg første gang stødte på det. OOCSS er ikke, hvad man traditionelt vil betegne som <a href="http://en.wikipedia.org/wiki/Object_orientated_programming">objekt-orienteret programmering</a>, OOP, men i stedet benytter man nogle af OOPs principper såsom polymorfi, abstraktion, arv mm.<br />
Ideen bag OOCSS er at lave mindre og mere genanvendeligt CSS vha klasser. For en dybere redegørelse henvises til "opfinderens" hjemmeside, <a title="OOCSS" href="http://www.stubbornella.org/content/2009/02/28/object-oriented-css-grids-on-github/">Nicole Sullivan</a>.</p>
<p>Hvordan opnår man så genanvendeligt CSS? Først et eksempel på, hvordan man <span style="text-decoration: underline;">ikke</span> skal gøre:</p>
<pre><strong>CSS:</strong>
#element1 a.btn {background-color:#000;color:#fff;}
#element2 a.btn2 {background-color:#000;color:#fff;}
#element1 a.btnWithBorder {background-color: #000;border:1px solid #ccc;color:#fff;}
<strong>Markup:</strong>
&lt;div id="element1"&gt;
   &lt;a href="#" class="btn"&gt;Knap 1&lt;/a&gt;
   &lt;a href="#" class="btnWithBorder"&gt;Knap 1 med border&lt;/a&gt;
&lt;/div&gt;
&lt;div id="element2"&gt;
   &lt;a href="#" class="btn2"&gt;Knap 2&lt;/a&gt;
&lt;/div&gt;</pre>
<p>Her indkapsler og fastlåser du din knap til et anchor tag samt id element og opnår derved redundans CSS samt kode, der ikke kan genbruges! Fjern afhængighederne og du har genanvendelig kode:</p>
<pre><strong>CSS:</strong>
<span style="color: #0000ff;">.btn {background-color:#000;color:#fff;}
.border {border:1px solid #ccc;}</span>
<strong>Markup:</strong>
&lt;div id="element1"&gt;
   &lt;a href="#" class="<span style="color: #0000ff;">btn</span>"&gt;Knap 1&lt;/a&gt;
   &lt;a href="#" class="<span style="color: #0000ff;">btn border</span>"&gt;Knap 1 med border&lt;/a&gt;
&lt;/div&gt;
&lt;div id="element2"&gt;
   &lt;a href="#" class="<span style="color: #0000ff;">btn</span>"&gt;Knap 2&lt;/a&gt;
&lt;/div&gt;</pre>
<p>Nu kan dine klasser bruges på alle typer af objekter og ikke kun anchor tagget:</p>
<pre>&lt;<span style="color: #0000ff;">button</span> type="button" class="btn"&gt;Knap&lt;/button&gt;
&lt;<span style="color: #0000ff;">div</span> class="btn"&gt;Knap&lt;/div&gt;</pre>
<h3>6. CSS struktur</h3>
<p>CSS strukturen bliver ofte glemt eller nedprioriteret, hvilket er ærgerligt, da den kan spare dig og andre for en masse spildtid! Et godt råd er, at man i sit team/udviklingsmiljø aftaler nogle strukturelle regler, så man nemt kan arbejde på tværs af hinandens projekter.  Eksempler på strukturelle regler kunne være:</p>
<ul>
<li>Stylesheets inddeles i afsnit, fx via sektioner eller <em>selectors</em>.</li>
<li>En regels egenskaber opstilles i alfabetisk rækkefølge for at få et hurtigere overblik (#element { <span style="color: #0000ff;">float: left; height: 250px; width: 250px;</span> }).</li>
<li>Man har et element pr linje kontra en egenskab pr linje i sit stylesheet.</li>
<li>Hierarkisk inddeling.</li>
<li>etc.</li>
</ul>
<p>Hvis det skal have nogen effekt, er det vigtigt, at man er konsekvent. Man laver en ens struktur for at gøre udviklingen nemmere her og nu samt i fremtiden. Når man skal have sit projekt <em>live</em> bliver strukturen ligegyldig, hvorfor man altid skal minify sine stylesheets for at spare kb.</p>
<h3>7. Stylesheets</h3>
<p>Stylesheets skal altid være placeret i toppen fordi:</p>
<ol>
<li><a href="http://www.w3schools.com/css/css_howto.asp">W3</a> dikterer, at stylesheets skal være i toppen (<em>head</em>), medmindre det er<em> inline-styling</em>.</li>
<li>Ved at placere stylesheets i toppen opnår man, at ens side loader  progressivt, hvilket er vigtigt, hvis din side har meget indhold, eller  brugeren sidder bag en langsom forbindelse. Siden viser indholdet så  snart, det er klart, og brugeren har en indikation af, at siden er ved  at loade. Denne indikation er meget vigtig for <a href="http://www.useit.com/papers/responsetime.html">brugervenligheden</a>.  Hvis man derimod indsatte stylesheets nær bunden, ville man i mange  browsere (eksempelvis Internet Explorer) miste den progressiv hentning  og stå tilbage med en hvid blank side, da browsere blokerer renderingen  for at forhindre at skulle gentegne elementer, der måtte ændre sig.</li>
</ol>
<p>Der findes mange meninger omkring, hvordan du opnår den bedste <em>performance</em> samt struktur mht stylesheet inddelingen. Jeg er dog ikke stødt på en løsning, der kan bruges bestandigt og som hos så meget andet, mener jeg, at det skal vurderes fra projekt til projekt. Oftest ender jeg med et setup, hvor jeg samler mit reset jf. punkt 3, klasse objekter jf. punkt 5 og fællesregler (element styling, h1, h2 etc) i et stylesheet og, hvis nødvendigt, et side-specifikt stylesheet (internt eller eksternt), hvor regler der kun gælder for den aktuelle side er.</p>
<h3>8. Brug shortcase</h3>
<p>Brug <em>shortcase</em>, da det formindsker din kode og giver et bedre overblik. Et eksempel illustrer pointen:</p>
<pre>#element { margin-top: 15px; margin-right: 10px; margin-bottom: 15px; margin-left: 10px; }</pre>
<p>bliver til</p>
<pre>#element { <span style="color: #0000ff;">margin: 15px 10px;</span> }</pre>
<p>Du kan også bruge <em>shortcase</em> hos følgende egenskaber; <em>background, border, font, list, margin, outline</em> og <em>padding</em>. <a href="http://www.dustindiaz.com/css-shorthand/">Dustin Diaz</a> har skrevet en fremragende guide til emnet.</p>
<h3>9. Spring mellemledet over</h3>
<p>Som i den virkelige verden er det oftest billigst for forbrugeren, at mellemledet bliver fjernet, og det er det også hos CSS. Mellemledet er ofte ubrugeligt og fylder kun ekstra i dit <em>stylesheet</em>, hvorfor det skal fjernes. Der findes dog situationer, hvor du kan blive tvungen til at inkludere det men som udgangspunkt; <em>fjern det</em>:</p>
<pre>#element ul li a span.class</pre>
<p>bliver til</p>
<pre><span style="color: #0000ff;">.class</span> eller <span style="color: #0000ff;">#element .class</span> hvis man har behov for indkapsling</pre>
<h3>10. Undgå hacks</h3>
<p>Hold dig fra at bruge hacks! Hvad enten det er * hack, _ hack eller lignende. Brug i stedet <a href="http://msdn.microsoft.com/en-us/library/ms537512%28VS.85%29.aspx"><em>Conditional Comments</em></a> til fx at indsætte et Internet Explorer 6 specifikt <em>stylesheet</em>.</p>
<pre style="margin-right: -982px;"><span style="color: #0000ff;">&lt;!--[if IE 6]&gt;</span>
&lt;link type="text/css" href="ie6styling.css" rel="stylesheet"&gt;
<span style="color: #0000ff;">&lt;![endif]--&gt;</span></pre>
<p>Eller til at sætte en klasse på <em>html</em> tagget for derved at kunne style specifikt til en ønsket version af IE.</p>
<pre><span style="color: #0000ff;">&lt;!--[if lt IE 7 ]&gt; &lt;html lang="en" class="no-js ie6"&gt;&lt;![endif]--&gt;
&lt;!--[if IE 7 ]&gt; &lt;html lang="en" class="no-js ie7"&gt;&lt;![endif]--&gt;
&lt;!--[if IE 8 ]&gt; &lt;html lang="en" class="no-js ie8"&gt;&lt;![endif]--&gt;
&lt;!--[if IE 9 ]&gt; &lt;html lang="en" class="no-js ie9"&gt;&lt;![endif]--&gt;
&lt;!--[if (gt IE 9)|!(IE)]&gt;&lt;!--&gt; &lt;html lang="en" class="no-js"&gt; &lt;!--&lt;![endif]--&gt;</span></pre>
<h3>11. Adskillelse</h3>
<p>Markup og CSS er som <a href="http://en.wikipedia.org/wiki/Batman">Batman</a> og <a href="http://en.wikipedia.org/wiki/Robin_%28comics%29">Robin</a>. De er fantastiske sammen, dog kan Batman fint klare sig alene, hvorimod Robin er ubrugelig uden Batman.<br />
Man må aldrig begynde at sammensmelte markup og CSS og lave noget så uhyggeligt som<a href="http://www.w3schools.com/CSS/css_howto.asp"><em> inline styling</em></a>. For at sikre fleksibilitet og overblik er det vigtigt at alt styling adskilles fra markup og kun lever i et <em>stylesheet</em>. Nu siger du sikkert, at der findes situationer, hvor <em>inline-styling</em> er eneste løsning, og ja det gør der, men brug det kun som sidste udvej, og <span style="text-decoration: underline;"><strong>ikke</strong></span> fordi du er doven.</p>
<h3>12. Divitus, classitis og idikus</h3>
<p>Undgå at få divitus, classitis eller idikus. Generelt for alle 3 sygdomme er, at man overforbruger. Man kan sammenligne det med et <a href="http://www.graenseforeningen.dk/aab98.html">sønderjysk kaffebord</a>, hvor der minimum er 14 forskellige kager, 7 bløde og 7 hårde, hvilket er helt unødvendigt. Derimod ville 1-2 kager fra hver kategori have været rigeligt.<br />
Divitus er når man bruger for mange div'er. Mange nybegynder har en tendens til at smide en <em>div</em> rundt om alt:</p>
<pre>&lt;div id="mainHeader"&gt;&lt;h1&gt;Min overskift&lt;/h1&gt;&lt;/div&gt;</pre>
<p>Div'en er ikke nødvendig, og man kan i stedet skrive</p>
<pre><span style="color: #0000ff;">&lt;h1&gt;Min overskrift&lt;/h1&gt;</span></pre>
<p>og så style på <em>h1</em> i stedet for #mainHeader. Dog må man ikke være bange for at bruge div'er!  Jeg kan godt lide <a href="http://diveintohtml5.org/semantics.html">html5 tankegangen</a>, som giver bedre overblik og en pænere struktur, hvorfor jeg til tider indkapsler hovedområder i en div med et sigende id!</p>
<p>Classitis og idikus minder meget om divitus:</p>
<pre>&lt;ul id="unsortedList"&gt;
  &lt;li class="listItem firstItem"&gt;Item 1&lt;/li&gt;
  &lt;li class="listItem"&gt;Item 2&lt;/li&gt;
  &lt;li class="listItem"&gt;Item 3&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Det er ikke nødvendigt at overklistre alle <em>selectors</em> med klasser og id'er:</p>
<pre><span style="color: #0000ff;">&lt;ul&gt;
  &lt;li&gt;Item 1&lt;/li&gt;
  &lt;li&gt;Item 2&lt;/li&gt;
  &lt;li&gt;Item 3&lt;/li&gt;
&lt;/ul&gt;</span></pre>
<p>Brug i stedet de elementer der allerede er til rådighed (ul, li) og, hvis IE6 også er død for dig, de smarte og hjælpefulde <a href="http://www.w3.org/TR/CSS2/selector.html">CSS selectors</a>!<span style="color: #0000ff;"><em> </em></span></p>
<pre><span style="color: #0000ff;">li:first-child  </span> = Første li element.
<span style="color: #0000ff;">ul &gt; li</span>          = Alle <em>ul</em>'ers børn der er <em>li</em>.
<span style="color: #0000ff;">li + li</span>          = Alle <em>li</em>'er der har samme forældre,
                   og hvor der kommer en <em>li</em> lige efter en <em>li</em>.</pre>
<h3>13. Vær god til matematik</h3>
<p>Undersøgelser har vist, at personer med gode matematiske færdigheder har nemmere ved at programmere, hvilket også gavner, når man skal forstå, hvilken regel der er præcedens ved kollision. Fx kan et element have 2 regler der modsiger hinanden:</p>
<pre>HTML:
&lt;h1 class="h1"&gt;Header&lt;/h1&gt;

CSS:
.h1{color:white;}
h1{color:black;}</pre>
<p>Mange vil måske tro, at sidste regel altid er vigtigst, og at header teksten derfor vil være sort! Men hos CSS er der andre faktorer, der spiller ind. Først vægtes måden din styling bliver indlæst på:</p>
<pre>1. prioritet: Inline styling
2. prioritet: Internt stylesheet
3. prioritet: Eksternt stylesheet
(4. prioritet: Browser default)</pre>
<p>Dernæst vægtes attributterne:</p>
<pre>li             {...}  /* a=0 b=0 c=1 -&gt; specificity =   1 */
ul li          {...}  /* a=0 b=0 c=2 -&gt; specificity =   2 */
ul ol li       {...}  /* a=0 b=0 c=3 -&gt; specificity =   3 */
li.class       {...}  /* a=0 b=1 c=1 -&gt; specificity =  11 */
ul ol li.class {...}  /* a=0 b=1 c=3 -&gt; specificity =  13 */
#element       {...}  /* a=1 b=0 c=0 -&gt; specificity = 100 */</pre>
<p>hvor <strong>a</strong> repræsentere antal #id attributter, <strong>b</strong> antal klasse attributter og <strong>c</strong> antal tag elementer.  Jo højere tallet er, jo højere vægtning. I fornævnte eksempel vil header teksten være hvid, da klassen (.h1) vægtes med 10 point og tagget (h1) med 1 point.</p>
<h3>14. Vær progressiv</h3>
<p>I stedet for at udvikle til laveste fællesnævner, bør man være progressiv og anvende den nye teknologi, browsere løbende får, så længe siden stadig fungerer funktionelt hos laveste fællesnævner. Fx understøtter firefox bl.a. <em><a href="http://hacks.mozilla.org/2009/12/file-drag-and-drop-in-firefox-3-6/">drag and drop </a></em><a href="http://hacks.mozilla.org/2009/12/file-drag-and-drop-in-firefox-3-6/">af filer</a>, hvor en bruger, der skal uploade en fil, kan <em>dragge </em>og <em>droppe </em>filen direkte ind i browseren og derved spare adskillige kliks. IE understøtter i skrivende stund ikke denne feature, hvorfor det selvfølgelig stadig skal være muligt at uploade en fil på den gammeldags måde. Her får brugeren med den bedre browsere bare en bedre oplevelse.</p>
<p>Et andet eksempel kunne være, hvor du har et element, der skal have runde hjørner og en <em>gradient </em>baggrund. I stedet for at skulle være afhængig af et stykke grafik eller flere, kan du lave runde hjørner samt gradient med CSS. Dette understøttes dog ikke i alle browser, nærmere bestemt IE, så når man udvikler efter laveste fællesnævner, bliver man nødt til at løse det med grafik, som gør siden tungere. Men nu er vi jo progressive, og derfor vælger vi den lettere og elegante CSS løsning, og lader brugerne af IE se et firkantet element med fast baggrund, og alle andre et lækkert rundt element med gradient. Siden kan stadig bruges af IE brugere, og IE brugerne ser stadig samme indhold, som andre brugere. Dog kan designere være tunge at danse med, og ofte kan det ende i et kompromis, hvor man bruger CSS3 de steder, der understøtter det og ellers grafik (IE).</p>
<h3>15. Kend dine elementer</h3>
<p>Som med alle programmeringssprog er det en god ide at kende til basis funktionaliteterne. Nogle gange er området dog så stort, at en del erfaring er påkrævet. CSS har derimod et overkommeligt antal basis elementer, der derfor gør det hurtigere og nemmere at få et overblik og derved at kunne vælge de rigtige elementer i den rigtige situation. Lær elementerne at kende før du går i gang, float vs. position, display vs. visibility, tabel vs. div etc.</p>
<h3>16. Centrer med margin</h3>
<p>Centrer med margin: 0 auto; i stedet for fx at fastkode en fast <em>padding</em> i venstre side. For at centrer med margin skal du definere en bredde:</p>
<pre>#element { <span style="color: #0000ff;">margin: 0 auto;</span> width: 800px; }</pre>
<h3>17. Vær doven</h3>
<p>Sidste punkt som i øvrigt gælder programmering generelt er, at man skal være doven. Der findes et utal af udviklere, som allerede har haft de problemstillinger, som du støder på, hvorfor det vil være fjollet ikke at benytte sig af deres viden og erfaringer. Genbrug dine og andres komponenter og brug de erfaringer, der allerede er tilgængelige. I CSS støder man på mange lignende problemstillinger, hvorfor man nemt kan ende som <a href="http://da.wikipedia.org/wiki/Sisyfos">Sisyfos</a>!</p>
<h3>SLUT</h3>
<p>Det var mit bud på, hvordan man ved hjælp af nogle simple principper, opnår bedre og mere overskueligt CSS og markup. Vigtigst af alt er, at man er konsekvent hele vejen igennem og tro mod kode standarderne. Sammen kan vi gøre verden til et bedre sted!</p>
<p><strong>P.S. Har jeg glemt noget, eller er du bare dybt enig/uenig så smid gerne en kommentar.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://dinbror.dk/blog/tips-tricks-til-bedre-css-og-markup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

