Метод CSS для включения хаков IE6 - PullRequest
5 голосов
/ 05 марта 2009
  • У CSS есть @import, верно?
  • IE6 понимает *html selector хак, верно?

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

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

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

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

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

Ответы [ 3 ]

12 голосов
/ 05 марта 2009

Зачем беспокоиться об этом дурацком хаке, если вы можете использовать условные комментарии, чтобы включить только тот 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 (где не удается загрузить ie-style.css) и IE6 (где он все равно загружает). Ваш пробег может отличаться.

4 голосов
/ 05 марта 2009

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

* html @import url(ie6hacks.css);

Нет. Правила at, такие как @import, не являются селекторами, поэтому их нельзя комбинировать с другими селекторами.

Есть способы заставить at-rules работать как хаки, например:

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

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

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

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

(И, как изобретатель Упрощенного Ящика Модели Ящика, я говорю сердечное доброе избавление от них.)

3 голосов
/ 05 марта 2009

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

Вот статья , объясняющая, как взломать и другие, которые полезны для атаки на специфичные для IE ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...