CSS-метод для включения взломов IE6
-
03-07-2019 - |
Вопрос
- В 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.