2010-12-12 3 views
8

Ich weiß, dass Sie bedingte Anweisungen zum Laden verschiedener CSS-Dateien einfügen können, wenn Sie sich in Internet Explorer befinden, aber können Sie dies in einer CSS-Datei tun?Gibt es eine Möglichkeit, "wenn IE" innerhalb einer CSS-Datei zu tun?

Ich habe eine Situation, wo ich den rechten Rand 20 sein soll, wenn es Internet Explorer ist, aber 10, wenn es ein anderer Browser ist.

+0

Vielleicht ist dies irgendwie machbar durch missbrauchen IEs #Ausdrucksyntax? – thejh

Antwort

14

Der einfachste Weg, dies zu bewältigen, ist mit Bedingungen in Ihrem HTML, die ein Div mit einer bestimmten ID um den Rest der Seite legen.

<!--[If IE 8]> 
<div id="IE8"> 
<![endif]--> 
    . 
    . 
    . 
<!--[If IE 8]> 
</div> 
<![endif]--> 

Dann CSS kann dies tun:

#IE8 div.whatever { ... } 

Diese Art von macht alle, die CSS unnötige hackt.

+0

Ich mag diesen Ansatz. Es ist wirklich sauber. +1 – BoltClock

+0

Großartig !! gutes Beispiel .... –

+1

Außer dass ein zusätzliches Element hinzugefügt wird. Vorzugsweise sollten Sie tun, wie der HTML-Textbaustein tut, nehmen Sie ein vorhandenes Element und wenn es IE ist fügen Sie eine "IE" -Klasse hinzu. http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ –

2

Es gibt keine offizielle bedingte Kommentarsyntax für CSS. Es gibt nur bedingte HTML- und JavaScript-Kommentare, also sollten Sie mit denen kreativ sein (John Fisher zeigt in eine Richtung).

Sie könnten bedingte CSS mit den sehr bekannten CSS-Hacks emulieren, aber das möchte ich lieber nicht. Sie könnten bei jeder beliebigen IE-Version unerwartet brechen oder anderweitig arbeiten, da Hacks Fehler in der CSS-Behandlung von IE ausnutzen sollen.

2

Es gibt Hacks wie this one, in denen die Verwendung von Regeln, die der IE nicht interpretieren kann, bedeutet, dass IE die Verarbeitung einer Regel stoppt, damit sie für andere Browser sicher bleibt.

So:

div.iehack { 
    margin-right:20px; 
    voice-family: "\"}\""; 
    voice-family:inherit; 
    margin-right:10px; 
} 
0

Sie tun, diese Art von Hacks ein Chaos Ihrer CSS-Dateien machen. Erstellen Sie lieber eine separate Datei für IE. Setzen Sie den Rand in Ihrer allgemeinen CSS-Datei auf 10 und in Ihrer IE-spezifischen Datei auf 20, die (bedingt) nach Ihrer allgemeinen CSS-Datei geladen werden sollte. Sie wissen, wie man das macht und es gibt kaum einen Grund, es anders zu machen.

Verwandte Themen