Hi,
Entgegen Cheatahs Meinung empfinde ich CCs aber als die sauberste Lösung. Man erstellt ein Stylesheet für das allgemeine CSS und gibt dem IE innerhalb eines CCs in der Reihenfolge _hinter_ dem allgemeinen Stylesheet ein eigenes, in dem man Definitionen des allgemeinen CSS IE-spezifisch überschreibt. Das passiert, weil bei CSS gilt, dass die letzte Definition gleicher Spezifität für einen Selektor umgesetzt wird.
Warum finde ich das besser als Hacks?
- Hacks sind gezielte Syntaxverletzungen. Es steht also fehlerhafter Code im CSS.
Nö, wenn man z.B. html>body ... schreibt, ist das keine Syntaxverlatzeung, sondern nur eine Schwäche des IE. Genauso verhält es sich bei Attributbedingten Selektoren usw. Selbst * html, würde ich nicht als Syntaxverletzung gelten lassen, da nur gesagt wird, dass der Hack nur dann funktionieren soll, wenn HTML ein Elternelement hat...
- Hacks stehen inmitten von normalen CSS-Angaben. Wenn sie mal ungültig werden müssen sie dort mühsam herausgeklaubt werden.
Dafür handelt es sich aber um eine zentrale Datei. Wenn CCs dagegen falsch gesetzt wurden, weil der IE 7 das z.B. immer noch nicht korrekt macht, müssen ALLE HTML-Dateien geändert werden. Das ist dann viel, viel aufwändiger!
- Hacks sind nicht logisch. Die Angaben in den CCs sind das schon.
Man muss sie nunmal kennen, das ist alles. Andererseits hast du natürlich Recht, ein Kindselektor ist ja z.B. nicht nur für Hacks wichtig.
Nachteil von CCs:
Jedes HTML-Dokument enthält diesen zusätzlichen Eintrag _nur für den IE_. Entweder so, wie oben oder eben so:<link rel="stylesheet" type="text/css" href="basis.css">
<!--[if IE]>
<style type="text/css">@import url(ie.css);</style>
<![endif]-->Die Hacks könnten im zentralen CSS benutzt werden. Das überwiegt aber die Nachteile meiner Meinung nach nicht.
Das kommt auf den Anwendungszweck an. Gibt es viele Stellen, die korrigiert werden müssen, dann sind CCs und ein zusätzliches Stylesheet erst Wahl. Handelt es sich dagegen um Kleinigkeiten, sind Hacks besser.
Einen schönen Dienstag noch!