Зачем нам хаки для IE?
17 мая 2009
Ответ на этот вопрос, обычно — чтобы не плодить файлы. С другой стороны хаки могут перестать работать в любой момент (с апдейтом IE, например). Условные комментарии в этом плане намного стабильнее.
На самом деле решение можно скомбинировать, задав class для body через CC:
<!--[if lt IE 7]> <body class="ie6"> <![endif]--> <!--[if IE 7]> <body class="ie7"> <![endif]--> <!--[if IE 8]> <body class="ie8"> <![endif]--> <!--[if !IE]>--> <body> <!--<![endif]-->
Теперь вместо хаков можно использовать класс body:
.ie6 .menu li { zoom: 1; }
Примерно так же можно поступить с остальными браузерами, проанализировав заголовок HTTP_USER_AGENT, хотя это менее надёжно т.к. он может меняться.
Комментарии RSS по email OK
Мне лично идея отдавать несколько таблиц стилей только старым версиям IE (чем более устаревшая версия, тем больше файлов ей достаётся) нравится больше, чем отдавать всем браузерам тонны стилей, для них не предназначенных. ;-)
а мне очень не нравится, что страница сохранённая в ие криво отображается в лисице...
Года полтора назад я уже видел статью с описанием этого способа. Но там в коментах писали о каких-то проблемах с валидацией таких страниц.
MT
Тонн там в любом случае не будет, а вот загрузить лишний файл — это уже будет заметно.
tenshi
А почему она будет криво отображаться? Разве сохряняет с разруленными для IE CC?
Oleg Lobach
С чего валидатору поплохеет? CC — штука вполне валидная, классы в стилях — тоже.
Проблема с валидацией, да.
В том случае, если в CSS придётся писать что-то, не по стандартам. Те же filter или expression.
Это ради экономии что ли? Как то слишком грубо. Все таки в отношении ИЕ тоже нужно стараться соблюдать принцип разделения контента-оформления-поведения. А заключение HTML-тегов в кондомы этот принцип нарушают сильнее. Это шаг назад. В общем, грубый хак. Но пример классно иллюстрирует тезис, что кондомы - зло.
uggallery
Да, это естественно хорошо только для экономии. Если экономить не нужно — лучше разделить как надо. Ну и это менее грубо, чем хаки в CSS, часто используемые, и даже многими рекомендуемые, для слития стилей в один файл. С технической стороны данное решение более надёжно.
Имхо, вероятность такого масштабного апдейта IE6 сравнима с вероятностью падения астероида на хостинг :). На * html (вполне валидный, кстати), по-моему, можно полагаться в той же мере, что и на CC. На +html, имхо, тоже (тем более, что оно однозначно отзывается на *режим рендеринга IE7 — неважно, нативного или IE8 в режиме совместимости — тогда как CC тупо смотрит на номер версии), не в интересах MS патчить такие привычные вещи (особенно с их пунктиком про обр. совместимость), в 7-ке будут патчить разве что критические дыры безопасности, имхо.
Но за интересную идею спасибо!
Не эстетично :)
Вдогонку моему прошлому комменту: похоже, про то, что "CC тупо смотрит на номер версии" я приврал, извиняюсь.