Voll aus dem Leben: Warum Hacks suboptimal sind
Je nach Komplexität eines Layouts kommt man um Griffe in die Trickkiste nicht herum, wenn es gilt, dem ein oder anderen Browser begreiflich zu machen, was man haben will. Jeder Webdeveloper hat einige dieser Hacks in der Schublade oder in den Lesezeichen und sie haben alle eines gemeinsam: Sie nutzen Fehler in der Interpretation von CSS und XHTML der Browser aus. Und damit hängt der ganze Hack an einem seidenen Faden: Ist der Fehler in der nächsten Version des Browsers nämlich behoben, ist der ganze Hack für die Katz oder führt sogar zu komischen Ergebnissen.
So richtig zu spüren bekommt man das aber eigentlich erst, seit der Internet Explorer 7 draußen ist. Denn der hat einige Bugs nicht mehr, die seine Vergängerversionen noch hatten und die teilweise weidlich ausgenutzt wurden. So etwa, dass alle Varianten des Internet Explorer bis Version 6 einen Underscore vor einer Eigenschaft ignoriert haben. Man konnte also mit
body { background: #F00; _background: #FF0; }
eine rote Hintergrundfarbe für den body definieren, für den IE hingegen eine gelbe, da der nachfolgende _background aufgrund der Eigenschaften von CSS den vorhergenden background überschreibt. Natürlich nur beim Internet Explorer bis Version 6, denn der betrachtet _background und background als identisch. Alle anderen Browser nicht. Und deshalb funktionierte das. Bislang. Der IE 7 macht es nämlich jetzt auch richtig.
Und genau aus dem Grund sollte man auf die Empfehlung aus Redmond zur Abwechslung mal hören, die da lautet, für IE-spezifische notwendige Anpassungen doch bitte die Conditional Comments zu nutzen, die der Internet Explorer seit Version 5 unterstützt. Dann spart man sich auch derart nachgereichte Bastellösungen. Ich würde im übrigen Abstand davon nehmen, die Conditional Comments direkt in die CSS-Datei zu schreiben. Zum einen werden die dann auch wieder von allen Browsern geladen, die das gar nicht nötig haben und zum anderen sollte man HTML-Kommentare in CSS-Dateien nur dann einsetzen, wenn man scharf drauf ist, vom Validator ein paar Fehlermeldungen um die Ohren geknallt zu bekommen. Aber jetzt verstehe ich wenigstens, was der Autor des Green Velvet Templates damit gemeint hat, dass Conditional Comments mehr Quelltext in der CSS-Datei erzeugen. Und wenn er sich wirklich damit auskennen würde, dann wüsste er, dass Conditional Comments eben kein Hack sind.
Technorati Tags: xtc, xt:commerce, hacks, css, underscore hack, conditional comments
Das ist das private Weblog von Matt Slovig. Ich verdiene meine Brötchen als Webdeveloper in der Druckvorstufe, versuche seit fast zehn Jahren, Baseball & Softball, unter anderem als Stadionsprecher der Mainz Athletics (Deutscher Meister 2007), einer breiteren Öffentlichkeit bekannt zu machen und sollte nach 15 Jahren mal wieder Geld in ein neues Bild investieren.
Dienstag, 6. März 2007 um 03:22
Einspruch Euer Ehren!
Zum Einen gibt es einen sehr guten Grund CCs NICHT zu verwenden, das ist einfach der, dass es Redmond – statt ‘nen vernünftigen Browser zu bauen – empfiehlt ;)
Zum Anderen ist es relativ Rille, ob man nun Hacks oder CCs nutzt, wenn sich MS nach 5 Jahren mal wieder bequemt ‘ne neue Browserversion rauszubringen, dann ist man so oder so zum Fixen verdammt.
Zum dritten und vorletzten: ich möchte jetzt nicht direkt widersprechen, und CCs als Hack bezeichnen, “kein Hack” finde ich aber auch nicht richtig – was auch eine gute Überleitung zu letztens ist:
Ich finde CCs per se eine widerliche Angelegenheit, also vom Konzept her, nicht von der Auswirkung. Mich würde interessieren, wie die Geschichte dieser Kommentare ist, und wofür das ursprünglich gedacht war. rein gefühlsmässig haben solche Hacks weniger in einem Dokument was zu suchen, als CSS-Hacks. Aber das wiederum ist – zugegeben – Geschmackssache.
P.s. Schön, wie Du wieder einen Seitenhieb auf diesen buckligen Shop untergebracht hast ;)
Dienstag, 6. März 2007 um 22:58
Einspruch abgelehnt :D
CCs sind zwar sicher nicht das Optimum, aber es gibt einen entscheidenden Unterschied zwischen Hacks und CCs (auch wenn hier etwas Wunschdenken mitschwingt, gerade wenn es um den IE geht):
Jede neue Browserversion sollte die Standards besser beherzigen als die Vorgängerversionen.
Von daher ist es möglich und zu erhoffen, dass die neue Version die versionsbedingte, über CCs geladene Anpassung gar nicht mehr nötig hat, sondern das, was im Standard-Stylesheet schon definiert ist, einfach nicht mehr falsch interpretiert, während Hacks dazu führen können, dass es zu unvorhergesehen Darstellungsbugs kommt, eben weil das neue Release die Angaben nicht mehr falsch interpretiert, die man vorher dazu benutzt hat, um den Browser auszutricksen.
Das bringt natürlich aber nur was, wenn man den CC für das IE-Stylesheet schon etwas genauer definiert und nicht nur <!–[if IE]> schreibt…