2009-03-05 2 views
5
  • CSS имеет @import, правильно?
  • IE6 понимает *html selector взломать, правильно?

Можно ли объединить их какМетод CSS для включения IE6 hacks

//*html @import url(ie6hacks.css); 

или, возможно,

//*html { @import url(ie6hacks.css); } 

?

Хорошие браузеры должны пропустить это, будет ли он работать в IE6? Как это выглядит как решение? Я отчетливо вижу, что он выглядит уродливым, как обычный CSS.

ответ

4

Можно ли объединить их как

* html @import url(ie6hacks.css); 

No. на-правил, как @import не селекторы, поэтому они не могут быть объединены с другими селекторов.

Есть способы, чтобы сделать в-правила работы в качестве писак, например так:

@import url(/* no! */iehacks.css); 

будет нагруженной IE6/7, но не в других браузерах. Однако я бы не рекомендовал его использовать; такого рода вещи могут быть действительно хрупкими. Этот конкретный пример также является недопустимым CSS.

Как говорит Дэниел, если вы хотите отдельные файлы .css для хаков, лучшим подходом является условно включенный тег ссылки. Красота «* html» заключается в том, что вы можете вводить хакерские правила в ту же таблицу стилей, которую проще управлять, если их немного; если в любом случае у вас есть отдельная таблица стилей, это не дает никаких преимуществ.

IMO "* html" для IE6 является единственным взломом, который по-прежнему является законным для использования сегодня. Все вещи в коробке мертвы вместе с IE5 - если вы не используете режим Quirks IE6, который вам не нужно - и другие браузеры, даже IE7, как правило, слишком хороши, чтобы иметь возможность атаковать простым взломом; несколько хаков, которые могут их настроить, слишком сложны/хрупки/недействительны, чтобы действительно использовать.

(И как изобретатель упрощенной Box Model Hack, я говорю сердечную скатерть дороги к ним.)

+0

Хахаха, это опрятный трюк, хотя каждый раз, когда я изучаю новый IE-хак, я чувствую, что мой мозг расширяется со знанием и сокращает боль в то же время. –

3

К сожалению, взлом *html не может быть использован для импорта других таблиц стилей.

Here is an article поясняет, что взломали и другие, которые полезны для атаки на ошибки IE.

+0

Спасибо за ясный ответ. К сожалению, сегодня у меня нет голосов :) – temoto

12

Зачем беспокоиться об этом дурацком хаке, когда вы можете использовать условные комментарии, чтобы включить только тот CSS-код, который вам нужен?

<!--[if IE 6]> 
    <link rel="stylesheet" type="text/css" href="ie-6.0.css" /> 
<![endif]--> 

Некоторые ресурсы:

Если вы действительно должны использовать @import, вы можете воспользоваться тем, что IE не следует спецификации для правило @import. Обычно это должно быть самое первое мнение в теге стилей или стиле, или оно полностью игнорируется. Однако IE6 (по крайней мере, когда я его тестировал), похоже, не заботится. Вдоль этих линий, вы можете сделать это:

<style type="text/css"> 
.NotARealClass { } 

@import url("ie-style.css"); 
</style> 

Обратите внимание, что я не проверял это в чем-либо, кроме FF3 (где она не сможет загрузить то-style.css) и IE6 (где он загружает его в любом случае). Ваш пробег может отличаться.

+0

Я знаю это, спасибо. Зачем? Потому что я думал, что было бы разумно и удобно держать CSS-хаки внутри CSS. – temoto

+0

Это путь, если все ваши специфичные для ie6 css находятся в отдельном файле. Если у вас очень мало css-кода, специфичного для ie6, вы можете использовать underscore-hack, например. _width интерпретируется как ширина на ie6 (но не ie7), что не будет проверяться, хотя .. – svinto

+0

Условные комментарии не являются взломом, так как используют расширенный набор функций одного браузера. Конечно, селекторные хаки. –