Axel Richter: browserabfrage in css

Beitrag lesen

Hallo,

Conditional Comments

das bedeutet also, dass man zwar eine abfrage machen kann, um zwischen verschiedenen styleshees zu wählen,

Ja.

aber es gibt keine möglichkeit IN einem stylesheet eine solche abfrage zu machen.

beispiel:

<!--[if IE]>
#bereich {margin-right: 34%; margin-top: 10px; height: 600px}
  <![endif]-->
#bereich {margin-right: 34%; margin-top: 10px; height: auto}

Nein, so nicht, nur mit Hacks, die Dir ja auch schon gezeigt wurden.

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.

Beispiel:

<style type="text/css">
 /*das allgemeine CSS*/
 #bereich { margin-right: 34%; margin-top: 10px; height: auto; }
</style>
<!--[if IE]>
<style type="text/css">
 /*das IE-only CSS*/
 #bereich { height: 600px; }
</style>
<![endif]-->

Warum finde ich das besser als Hacks?
1. Hacks sind gezielte Syntaxverletzungen. Es steht also fehlerhafter Code im CSS.
2. Hacks stehen inmitten von normalen CSS-Angaben. Wenn sie mal ungültig werden müssen sie dort mühsam herausgeklaubt werden.
3. Hacks sind nicht logisch. Die Angaben in den CCs sind das schon.

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.

viele Grüße

Axel