Inhalt
NEU: CSS-Wiki.com
CSS 2.1 und CSS 3
Alle CSSEigenschaften auf einen Blick!
CSS-Wiki.com
Internet Explorer 8
Multiple-Type-ID-Hack
Anders als bei den Star-HTML-Hack bzw. Star-Plus-HTML-Hack für IE 6 und 7 ist der Multiple-Type-ID-Hack ein Hack, der nicht speziell für den IE 8 eine CSS-Anweisung möglich macht, sondern genau umgekehrt, es wird eine CSS-Anweisung geschrieben, der Internet Explorer 8 wird aktiv davon ausgeschlossen.
CSS Code-Beispiel
#box {
background-color : red;
}
#a#b, #box {
background-color : green;
}
Genau genommen besteht der Hack aus drei Teilen:
- Aus der Anweisung, die für den Internet Explorer 8 gelten soll, welche über eine ganz normale ID gesetzt ist.
- Dann die Anweisung, die für alle anderen Browser gelten sollen, diese wird...
- ...mit einer fehlerhaft geschriebenen ID-Definiton eingeleitet, also der zwei aneinander hängenden IDs #a#b (die Bezeichner sind an der Stelle beliebig, in der Quelle wird folgendes Beispiel gewählt: #html#body , div {...}), der dann die gewollte ID folgt.
Dabei ist es nicht relevant, ob die eigentliche Anweisung, die man setzen möchte, per ID oder per CLASS angibt. Auch mit folgender Schreibweise wird der 2. Block vom IE8 ignoriert:
.kasten {
background-color : red;
}
#xx#yy, .kasten {
background-color : green;
}
Vergleicht man beide CSS-Quelltextbeispiele, wird ersichtlich, wie der Hack funktioniert: Die beiden zusammen geschriebenen IDs werden vom IE8 nicht interpretiert (bzw. ich vermute, dass der IE8 intern den dahinter folgenden Code durch die 2. Raute als Auskommentierung versteht, und deswegen nicht ausführt).
Bewertung
Es gibt zwei Aspekte, warum dieser Hack mit Vorsicht bzw. Sorgfallt zu verwenden ist:
Zum einen nehmen Sie nicht eine Einstellung expliziet für einen Browser vor, sondern Sie schließen einen Browser aus. Für diesen Hack bedeutet das, dass Sie IMMER die gleiche Reihenfolge einhalten müssen, damit Sie den gewünschten Effekt erzielen.
Falls Sie in der späteren Entwicklung weiter unten in der CSS-Datei, oder in auch einer anderen CSS-Datei, die in der Ladefolge später liegt, eine weitere Formatierung schreiben, laufen Sie Gefahr, beide Formatierungen mit einer neuen Anweisung zu überschreiben.
Sie müssen eben stets im Kopf haben, dass Sie einen Browser, nämlich den Internet Explorer 8 aktiv ausgeschlossen haben.
Viel kritischer ist die Zukunftssicherheit zu betrachten. Aktuell scheint es so, dass der Hack funktioniert, weil der IE8 an der Stelle mit der doppelten und leerzeichnen-freien ID-Angabe durch einen Bug in der Browserprogrammierung dahinter folgende CSS-Anweisung verschluckt.
Da der IE8 noch weiterentwickelt wird, bzw. Bugs gefixt werden, ist es durchaus möglich, dass dieser Browser-Bug irgendwann gefixt ist, der Hack würde dann seine Wirksamkeit einfach verlieren.
Insgesamt, da die Reihenfolge, die eingehalten werden muss, nicht sonderlich kompliziert ist, bietet sich der Hack für kleinere Projekte, in dem man der einzige CSSler ist an.
Für große Projekte, besonders falls mehrere Frontendentwickler beteiligt sind, würde ich tendenziell eher auf diesen Hack verzichten.
Danke für den Hinweis
Quelle des "Multiple-Type-ID-Hack" ist folgender Link/Foreneintrag, der neben diesem Hack auch weitere CSS-Hacks auflistet (die ebenfalls hier unter www.css-hack.de zu finden sind) und noch ein paar allgemeine Tipps für die CSS-Codierung gibt.
Vielen Dank an der Stelle an CGpingu, der mich auf diese Quelle hingewiesen hat!
Quatsch? Unsinn! Wie jetzt gleich?
Wir versuchen, alles zu testen und nur richtige Dinge zu schreiben, vielleicht haben wir aber hier und dort was übersehen, die Beschreibung ist in der Ausdruckweise nicht vollständig, oder es gibt Anregungen, was hier stehen sollte oder welcher Link noch fehlt.
Wir freuen uns über jede Anregung! Kurze Mail an mail@css-hack.de.
