Underscore-Hack für IE kleiner 7 auch für den IE7
Montag, 11 Juni 2007 06:42 MET
Die Lösung bisher
Beispiel:
width: 700px;
_width: 750px;
Diese Anweisung bewirkt, dass alle Browser eine Breite von 700px nehmen und die zweite Anweisung ignorieren. IE (Win) 5 bis 6 lesen die zweite Anweisung auch und bekommen die Breite 750px verpasst.
In einer normalen Validitätsprüfung wird solch eine Anweisung als Fehler bemängelt und wäre daher korrekterweise in eine Quarantäne-Datei
auszulagern. Soweit die nüchternen Fakten.
Underscore valide oder nicht valide?
Es gab schon im Jahr 2004 die Diskussion darüber, dass der Underscore ab der CSS 2.1 Spezifikation gültig ist und daher zulässig. Was mir bei dieser Diskussion auffiel ist, dass teilweise Konventionen für Klassen- oder ID-Namen mit Anweisungsnamen vermischt wurden.
Hier geht es um Anweisungsnamen und hier sieht die Spezifikation vor, dass Hyphens und Underscores für herstellerabhängige Erweiterungen einzusetzen sind. Also z.B. die bekannten -moz-… Anweisungen. Ich kann also proprietäre Anweisungen für einen Browser in der Art _hersteller_… konstruieren, die nur dieser Browser versteht und alle anderen ignorieren diese Anweisung ganz einfach.
Wie nun Überprüfungsprogramme damit umgehen sollen, kann ich der Spezifikation nicht eindeutig herauslesen. Die meisten Überprüfungsprogramme schreien
derzeit, wenn sie eine proprietäre Mozilla Anweisung (-moz-…) finden. Ob nun ein Validierungsprogramm eine herstellerabhängige Anweisung, die laut Spezifikation also mit - oder _ beginnen muss, ignoriert oder als ungültig deklariert, kann ich nicht beurteilen. Meinem Verständnis nach müsste eine Anweisung die mit einem dieser zwei erwähnten Zeichen beginnt, bei einer automatischen Validierung ganz einfach ignoriert werden.
Die Lösung auch für IE7
Der IE7 versteht nun diesen Underscore auch nicht mehr und ignoriert die Anweisung. Was nun, wenn ein nicht ausgemerzter Bug im IE7 den Workaround für die anderen IE auch im IE7 verwenden soll?
Ich brauche den Underscore nur mit einem der folgenden Zeichen ersetzen:
* oder ? oder $ oder % oder ,.
Dies versteht kein anderer Browser, außer Windows IE von Version 5 bis inklusive 7.
Es gibt dafür auch noch eine Spezialität:
/ (interpretiert nur IE5.5, IE6 und IE7)
Dies ist bitte nur als
schnelle Lösungin bestehenden Sites zu sehen. Wird ein CSS-Design gerade neu aufgebaut, gibt es viele Möglichkeiten mit denen ich den bekannten Underscore-Hack unter Umständen auch nicht einmal für ältere IE-Versionen einsetzen muss.
Und wenn ich schon dabei bin, …
Um beispielsweise innerhalb einer bereits per Conditional-Comment geladenen CSS-Datei spezielle IE (Win) Versionen herauszufiltern, verwende ich gerne folgende Hacks:
Interpretiert nur IE5.5 bis IE7:
/width: 750px
ich weiß nicht mehr, wie ich zu diesem Hack kam und ich finde ihn nirgends dokumentiert. Er funktioniert aber gut, wenn ich beispielsweise nur den IE5 aussteigen lassen will.
Interpretiert nur IE6 und IE7:
*width/**/:/**/ 750px
Interpretiert nur IE6:
_width/**/:/**/ 750px
Interpretiert nur IE5.5 und IE6:
_width/**/: 750px
Beispiel, um IE5 und IE5.5 spezielle Wert zuzuweisen und den korrekten Wert allen anderen:
width:/**/ 700px; (verstehen alle, außer IE5.5)
width/**/: 725px; (verstehen alle, außer IE5)
width/**/:/**/ 750px; (verstehen alle, außer IE5 und IE5.5)
- Bei CSS-Kommentarzeichen zwischen Anweisung und Doppelpunkt steigt der IE5 aus und ignoriert die Anweisung.
- Bei CSS-Kommentarzeichen nach dem Doppelpunkt und vor dem Wert mit Leerzeichen, steigt der IE5.5 aus und ignoriert die Anweisung
- Verwende ich die Kommentarzeichen sowohl vor und nach dem Doppelpunkt, steigen IE5 und IE5.5 aus und ignorieren die Anweisung.
- Setze ich noch einen Underscore vor die Anweisung, versteht das der IE7 nicht.
Nur damit ich hier auch richtig verstanden werde: CSS-Hacks sind kein Lieblingsspielzeug von mir und ich würde sie natürlich gar nicht benutzen wollen. Alles so simpel wie möglich zu halten und gar nicht in die Verlegenheit von Workarounds kommen zu müssen, ist wohl das hehre Ziel. Wenn es ins tägliche Detail geht, kommen wir um so manche Hacks manchmal nicht herum.
Keine Anleitung zur ungehemmten Verwendung
CSS-Hacks sind auf lange Sicht nicht die Lösung und machen das Leben des Webgestalters nicht einfacher. Sie werden aber noch auf lange Sicht viele kleine Probleme lösen.
- Abschnitt 1 von 1
Quellenverzeichnis
- Underscore-Hack (Petr Stanicek)
- Underscore-Hack (Roger Johansson)
- Internet Explorer extended underscore hack (Anne van Kesteren)
- Syntax CSS 2.1
Weitere Links zum Thema
- Internet Explorer 7 – Hacks und Neuerungen (The Styleworks, Klaus Langenberg)
- CSS Hackz Series: Targeting and Filtering Internet Explorer 7 [Perishable Press] – hinzugefügt am 27. Juli 2008
Externe Verweise dieses Artikels wurden zuletzt am 27. Juli 2008 auf Relevanz geprüft.
- Datum:
- veröffentlicht am 11 Juni 2007, 06:42 MET.
- Artikel:
- Underscore-Hack für IE kleiner 7 auch für den IE7 [hyperkontext | Weblog]
- Kurz-URL:
- http://hyperkontext.at/s/61
- Thema:
- Webgestaltung
- Stichworte:
- Browser, IE, IE7, CSS
Dieser Eintrag kann nicht mehr kommentiert werden.
Mögliche themenverwandte Artikel aus dem Weblog
Blättern (chronologisch)
- « neuerer Artikel
- Textauszeichnungen in HTML mit Texteditoren
- älterer Artikel »
- RSS wird durch IE7 und Outlook2007 massiv verbreitet

HTML5-Buch