<rmcreative>

RSS

Зачем нам хаки для 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

  1. №1578
    MT
    MT 17 мая 2009 г., 15:06:37

    Мне лично идея отдавать несколько таблиц стилей только старым версиям IE (чем более устаревшая версия, тем больше файлов ей достаётся) нравится больше, чем отдавать всем браузерам тонны стилей, для них не предназначенных. ;-)

  2. №1579
    tenshi
    tenshi 17 мая 2009 г., 19:11:27

    а мне очень не нравится, что страница сохранённая в ие криво отображается в лисице...

  3. №1581
    Oleg Lobach
    Oleg Lobach 17 мая 2009 г., 20:41:00

    Года полтора назад я уже видел статью с описанием этого способа. Но там в коментах писали о каких-то проблемах с валидацией таких страниц.

  4. №1583
    Sam
    Sam 17 мая 2009 г., 20:53:56

    MT

    Тонн там в любом случае не будет, а вот загрузить лишний файл — это уже будет заметно.

    tenshi

    А почему она будет криво отображаться? Разве сохряняет с разруленными для IE CC?

    Oleg Lobach

    С чего валидатору поплохеет? CC — штука вполне валидная, классы в стилях — тоже.

  5. №1585
    Виктор
    Виктор 17 мая 2009 г., 21:21:49

    Проблема с валидацией, да.

    В том случае, если в CSS придётся писать что-то, не по стандартам. Те же filter или expression.

  6. №1586
    uggallery
    uggallery 17 мая 2009 г., 22:54:09

    Это ради экономии что ли? Как то слишком грубо. Все таки в отношении ИЕ тоже нужно стараться соблюдать принцип разделения контента-оформления-поведения. А заключение HTML-тегов в кондомы этот принцип нарушают сильнее. Это шаг назад. В общем, грубый хак. Но пример классно иллюстрирует тезис, что кондомы - зло.

  7. №1587
    Sam
    Sam 18 мая 2009 г., 0:14:12

    uggallery

    Да, это естественно хорошо только для экономии. Если экономить не нужно — лучше разделить как надо. Ну и это менее грубо, чем хаки в CSS, часто используемые, и даже многими рекомендуемые, для слития стилей в один файл. С технической стороны данное решение более надёжно.

  8. №1588
    SelenIT
    SelenIT 19 мая 2009 г., 14:23:31

    С другой стороны хаки могут перестать работать в любой момент (с апдейтом IE, например)

    Имхо, вероятность такого масштабного апдейта IE6 сравнима с вероятностью падения астероида на хостинг :). На * html (вполне валидный, кстати), по-моему, можно полагаться в той же мере, что и на CC. На +html, имхо, тоже (тем более, что оно однозначно отзывается на *режим рендеринга IE7 — неважно, нативного или IE8 в режиме совместимости — тогда как CC тупо смотрит на номер версии), не в интересах MS патчить такие привычные вещи (особенно с их пунктиком про обр. совместимость), в 7-ке будут патчить разве что критические дыры безопасности, имхо.

    Но за интересную идею спасибо!

  9. №1597
    Исаак Тынгылчав
    Исаак Тынгылчав 25 мая 2009 г., 14:27:05

    Не эстетично :)

  10. №87
    SelenIT
    SelenIT 29 мая 2009 г., 20:25:45

    Вдогонку моему прошлому комменту: похоже, про то, что "CC тупо смотрит на номер версии" я приврал, извиняюсь.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.