Der CSS-Validator mag meinen Reset nicht

Gleich vorab, es geht hier nicht um den Abspielschutz™ auf DVDs, sondern um die Cascading Style Sheets, die sich die Abkürzung CSS mit dem genannten DRM-System teilen. ;-)

Ein Stolperstein, der vielen bei der Erstellung von Stylesheets einige Kopfschmerzen bereitet, ist die Tatsache, dass Webbrowser vielen Entities präventiv schon mal einen Style zuweisen. Macht auch Sinn, auf diese Art und Weise erspart man sich so manche Definition – solange man sich das Ergebnis nur im gleichen Browser ansieht. Das perfide an den voreingestellten Styles ist, dass sie sich von Browser zu Browser minimal unterscheiden (manchmal auch mehr als minimal). Soll heissen, man kann sich einen Wolf programmieren, die schönste typographische Kaskade entwickeln, und beim Betrachten in einem anderen Browser trifft einen der Schlag. Was ist also zu tun?Sich mit “made for [irgendein Browser]” herauszumogeln, macht das Ganze auch nicht besser. Wirft eher ein schlechtes Licht auf den / die Web-Designer(in).

Einfach das Naheliegende, am besten alle Entities am Beginn des ersten Stylesheets auf einen definierten Anfangswert setzen. Wer das sagt? Eric Meyer, und der sollte wissen wovon er redetIch habe das Gefühl, dass man Leuten mit diesem (oder ähnlich klingendem) Vornamen vertrauen sollte, Sie nicht auch? :-D . Auf seiner Website meyerweb.com (Pflichtlektüre für alle die sich mit CSS befassen) findet sich ein Beitrag mit dem Titel Reset Reloaded, welcher ein Beispiel für das Rücksetzen der eingestellten Browserwerte enthält. Meine Variante sieht so aus:

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td
{
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-weight: inherit;
font-style: inherit;
font-size: 100%;
font-family: inherit;
vertical-align: baseline;
/* background-image: transparent; */
background: transparent;
}

Wer die von mir ausgelassene Entity auf den ersten Blick entdeckt, gewinnt keinen Preis, aber meine Hochachtung. Geübten CSSlern(innen) erschliesst sich dieser Rundumschlag sofort, jegliche “Hilfestellung” des Browsers wird ausgehebelt, man beginnt mit dem sprichwörtlichen weissen Blatt Papier. Das hat den Nachteil, dass man wirklich alles selbst definieren muss, und den Vorteil, dass man die totale Kontrolle über das Erscheinungsbild der Website behält.

Ich möchte hier keine Debatte über Sinn oder Unsinn dieser Vorgehensweise vom Zaun brechen, ich halte es so, wer dazu keine Lust hat, bekommt zwar nicht meinen Segen, aber soll doch tun und lassen was er / sie will, oder “jede(r) wie er / sie magKennt jemand eine Öko-Bilanz über die CO2-Belastung durch zusätzlich übertragenen Netzwerk-Pakete wegen politisch korrektem Schreibens? Wenn ja, bitte E-Mail an mich, danke. ;-) “.

Mein nächster Schritt, nach dem Erstellen oder Modifizieren eines Stylesheets, führt mich zu dem W3C CSS Validation Service, oder über den Web Developer Toolbar in FireFox, zum gleichen Ziel. Wenn sich schon jemand die Arbeit gemacht hat, warum sollte ich das CSS mühsam per eigenem Augenschein überprüfen? (Ausserdem wird man “betriebsblind” wenn man zu lange auf den eigenen Code starrt. ;-) ) Also lasse ich den Validator über mein CSS laufen, und was passiert? Zwei Tippfehler und das:

Parse Error – html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; background-image: transparent; }

Der Code ist valide, anscheinend ist der Validator nur durch die schiere Anzahl von Entities einfach überfordert. Oder sollte jemand bei der W3C etwas gegen Resets haben? Ich für meinen Teil “resette” auf jeden Fall munter weiter.

Edit: Danke an Mike, ich hatte tatsächlich einen Fehler im Reset, es muss background: transparent; heissen. Der Fehler ist im Code oben auskommentiert.

Technorati Tags: , , ,

This entry was posted in Computer, WordPress. Bookmark the permalink.

6 Responses to Der CSS-Validator mag meinen Reset nicht

  1. mike says:

    input fehlt, wo is’ mein Preis? Ach gibt keinen, Mist.

    Was Dein Validator-problem betrifft, so kann ich den Parse-error nicht nachvollziehen, einen Fehler hast Du tzrotzdem, den spuckt der Validator – zumindest mir – auch aus:

    Ungültige Nummer : background-image transparent ist kein background-image-Wert : transparent

    Siehe auch: http://www.css4you.de/background-image.html

    Öko-bilanz schreib ich keine Mail, sondern verweise auf: http://trash-wissen.de/2007-07-08/webdesign-und-klimaschutz/

    Grüsse!

  2. Erik says:

    Hi Mike,
    welchen CSS-Validator hast Du denn benutzt? Beim W3C Validator bekomme ich immer noch das gleiche Ergebnis.

  3. mike says:

    Hi Erik, das Problem scheint mir nicht in den Regeln zu liegen, sondern im Charset Deiner CSS-Datei selbst, wenn ich mir das CSS mittels Web-dev-extension anschaue, sehe ich da ein BOM für utf-8, ich bin mir nicht sicher, ob das so ok ist.
    Vor meinem letzten Beitrag hatte ich mir nur die entsprechende Regel kopiert und getestet, da gabs obige Fehlermeldung, nun gerade hab ich das mal komplett kopiert (iso 8859-1) und gecheckt: selbe Meldung.
    Liegt also mutmasslich hier bei Dir bei Deinem Charset bzw dem BOM.

    Deine Regeln zumindest sind, bis auf den oben angemeckerten Fehler richtig und werden auch erkannt: Klick

  4. Erik says:

    Hi Mike,
    ich habe den Fehler gefunden, es muss “background: transparent” heissen, dann validiert der Reset-Block für sich allein. Das Stylesheet leider immer noch nicht.

    Die Datei hat laut meinem Editor als Format UTF-8 und nicht UTF-8 BOM, allerdings spuckt mir das Theme oder das WordPress immer ein BOM an den Anfang der generierten Website. Ich versuche schon seit einiger Zeit immer wieder herauszubekommen, woran das liegt.

    Vielen Dank. ;)

  5. Sadalwantar says:

    wenn man schon resettet, warum dann nicht gleich mit

    * { … }

    ?

    das wäre doch wesentlich konsequenter, oder? und man spart sich die tipperei der ganzen tags…

  6. Erik says:

    Ich wusste gar nicht, dass man das so machen kann. Ausserdem ist es mir lieber, wenn ich manche Tags vom Reset gezielt ausnehmen kann.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>