Вопрос

  • В CSS есть @import, верно?
  • IE6 понимает *html selector взлом, верно?

Можно ли объединить их следующим образом

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

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

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

?

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

Это было полезно?

Решение

Можно ли объединить их следующим образом

* html @import url(ie6hacks.css);

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

Существуют способы заставить at-правила работать как взломы, например, это:

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top