2010-12-12 7 views
8

Wiem, że możesz wstawiać instrukcje warunkowe do ładowania różnych plików CSS, jeśli jesteś w programie Internet Explorer, ale czy możesz to zrobić w pliku CSS?Czy jest jakiś sposób, aby zrobić "jeśli IE" wewnątrz pliku CSS?

Mam sytuację, w której chcę, aby prawy margines wynosił 20, jeśli jest to Internet Explorer, ale 10, jeśli jest to jakakolwiek inna przeglądarka.

+0

Może to w jakiś sposób można zrobić, wykorzystując niewłaściwą składnię wyrażenia IE #? – thejh

Odpowiedz

14

Najprostszym sposobem radzenia sobie z tym problemem jest sytuacja w kodzie HTML, która umieszcza element div z określonym identyfikatorem wokół reszty strony.

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

Następnie Twój CSS może to zrobić:

#IE8 div.whatever { ... } 

tego rodzaju sprawia, że ​​wszystkie te hacki CSS niepotrzebne.

+0

Podoba mi się to podejście. Jest naprawdę czysty. +1 – BoltClock

+0

Świetnie !! dobry przykład .... –

+1

Z wyjątkiem tego, że dodawany jest dodatkowy element. Zasadniczo powinieneś zrobić, jak działa HTML boilerplate, wziąć istniejący element i jeśli to IE dodać do niego klasę "IE". http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ –

2

Nie ma oficjalnej składni komentarzy warunkowych dla CSS. Są tylko warunkowe komentarze HTML i JavaScript, więc bądź kreatywny z tymi (John Fisher pokazuje w jedną stronę).

Można emulować warunkowe CSS za pomocą dobrze znanych haków CSS, ale wolałbym nie. Mogliby się złamać lub w inny sposób zadziałać nieoczekiwanie w dowolnej dowolnej wersji IE, ponieważ hacki mają wykorzystywać błędy w obsłudze CSS przez IE.

2

Istnieją hacki, takie jak this one, w których używanie reguł, których IE nie może zinterpretować, oznacza, że ​​IE przestaje przetwarzać regułę, pozostawiając ją bezpieczną dla innych przeglądarek.

Jak to:

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

Będziesz się bałagan plików css robi tego rodzaju hacki. Lepiej przygotuj osobny plik dla IE. Ustaw margines na 10 w ogólnym pliku css i ustaw go na 20 w pliku specyficznym dla IE, który powinien (warunkowo) zostać załadowany po ogólnym pliku css. Wiesz, jak to zrobić i nie ma powodu, by robić to w jakikolwiek inny sposób.

Powiązane problemy