Sven Rautenberg: differnt CSS for NN4, winie, Opera, Mozilla, Konqueror

Beitrag lesen

Moin!

Das lässt sich je nach Hack einschätzen, außerdem bedarf vermutlich jeder Workaround ständiger Kontrolle.
[...] Ich frage mich angesichts dessen, welche Lösung im Hinblick auf den zu erwartenden zukünftigen Arbeitsaufwand effizienter und nachhaltiger ist. Mit beispielsweise Tanteks Box Model-Hack, welcher unzähligen CSS-Layoutern das Leben erleichtert, stehst du ja auf Kriegsfuß. ;)

Es ist eine grundsätzliche Entscheidung, die man da fällen muß.

Wir alle haben uns doch irgendwie gefreut, dass man mittlerweile _keine_ Sonder-Seitenversionen für Netscape und IE mehr basteln muß - zumindest _will_ das keine aufgeklärter Mensch mehr.

Warum zum Teufel also wird das gleiche Vorgehen jetzt bei CSS-Dateien angewandt? Es treten dieselben grundsätzlichen Probleme auf:
1. Ist sichergestellt, dass die angewandten Hacks wirklich zuverlässig den Zielbrowser betreffen, und keinen anderen?
2. Ist sichergestellt, dass künftige Browser den Hack immer noch kennen? Oder dass die Browser den mit dem Hack zu umgehenden Bug gemeinsam mit dem Hack-Bug entfernen?
3. Kann man eigentlich alle existierenden Browser auf Verträglichkeit mit dem Hack prüfen?

Und nicht ganz unwichtig:
4. Kann man nachfolgenden Bearbeitern den Hack ausreichend dokumentieren? Nichts ist schlimmer, als wenn Hacks verwendet werden, die man durch irgendeinen dummen Zufall oder Unwissenheit wieder deaktiviert.

In Anbetracht all dieser teilweise schwerwiegenden Probleme, die allesamt ein "Create and forget", also im Prinzip Wartungsfreiheit nach dem erstmaligen Erstellen, verhindern, weil man beim Auftreten neuer Browserversionen die Seiten noch einmal komplett durchtesten muß, sind solche Hacks sehr kritisch zu sehen. Das hat mit einzelnen, speziellen Hacks gar nichts zu tun - es geht um die Gesamtheit aller Hacks.

Es gibt einfach zu viele Szenarien, bei denen Hacks zur Zeitbombe werden können.

Nur ein Beispiel:
Der IE6 hat bei Tanteks Hack sicherlich einige solche Zeitbomben hochgehen lassen. Denn er erkennt endlich, dass die vorzeitig eingeschmuggelte "}"-Klammer in der voice-family die CSS-Klasse _nicht_ beendet. Er schaltet aber nur dann in den W3C-Box-Model-Modus, wenn er einen korrekten DOCTYPE erhält.

Also hatten und haben alle Seiten ein Problem, die Tanteks Hack einsetzen, um den IE5 zu bezwingen, aber keinen richtigen DOCTYPE angeben, um den IE6 in den Strict-Modus zu schalten und damit zu bezwingen. Oder in XHTML-Seiten die erste Zeile mit der XML-Deklaration "versauen", die den IE6 ebenfalls in den Quirks-Modus schaltet. Tantek selbst weist darauf hin, dass dies ein Problem ist und man die Zeile deshalb einfach weglassen soll. Aber geht das immer?

Dabei hat Microsoft eigentlich fast alles richtig gemacht: Im IE6 ist sowohl beseitigt, dass die erste }-Klammer die CSS-Klasse beendet, als auch das Box-Model korrigiert, was ja erst zu diesem Hack führte. Aber eben leider nur unter gewissen Umständen. Man stelle sich vor, dass bei anderen Browsern einfach nur einer der beiden Bugs korrigiert wird - und schon ist alles im Arsch! Obwohl ich vermute, dass die Hersteller die kursierenden CSS-Hacks kennen, bin ich absolut nicht davon überzeugt, dass sie diese bei ihrer Fehlerbehebung auch wirklich beachten können. Das fängt ja allein damit an, dass Tanteks Hack nicht nur dazu benutzt werden kann, das Box-Model zu korrigieren, sondern für eine Vielzahl von weiteren Dingen, die man irgendwie vor dem IE 5.5 und tiefer verstecken will.

Wenn also Probleme mit dem IE-Box-Model hat, benutze diesen "Hack":
http://www.b-spoke.de/artikel/css-box-model/boxmodell-01.html

Auch wenn auf der Seite behauptet wird, der zusätzliche Code sei unsauber, weil aufgebläht: Es ist eine absolut standardkonforme Methode. Das damit hervorgerufene Aussehen ist in allen Browsern identisch, weil es gemäß dem Standard so aussehen muß. Aber eben auch mit dem IE-Box-Model identisch aussieht.

Ok, damit ist nicht gesagt, dass irgendein Box-Model-Bug eines anderen Browsers auch geheilt wird. Aber die meisten Probleme werden vermieden, weil es gar nicht mehr so viele Kombinationen gibt, Breiten falsch zu addieren. Irgendeine Ähnlichkeit mit dem W3C-Box-Model werden ja wohl alle existierenden Box-Models in Browsern haben. :)

- Sven Rautenberg

--
Signatur oder nicht Signatur - das ist hier die Frage!