SiteIS

HTML и CSS - революция в мире web-дизайна!

- управление отображением множества документов с помощью каскадных таблиц стилей

- Более точный контроль над внешним видом web-документов

- Различные представления для разных носителей информации

- Сложная и проработанная техника дизайна

CSS хаки для ИЕ

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

1. Подключение отдельного стилевого файла для ИЕ:

В атрибуте href указывается путь до файла со стилями и название самого файла. Код размещается между тегами head

<!--[if IE 7]><link href="/ie7.css" rel="stylesheet" type="text/css" /><![endif]--> //подключение файла со стилями только для ИЕ 7
<!--[if IE 8]><link href="/ie7.css" rel="stylesheet" type="text/css" /><![endif]--> //подключение файла со стилями только для ИЕ 8
<!--[if IE 9]><link href="/ie7.css" rel="stylesheet" type="text/css" /><![endif]--> //подключение файла со стилями только для ИЕ 8
<!--[if lte IE 7]><link href="/ie7.css" rel="stylesheet" type="text/css" /><![endif]--> //подключение файла со стилями для ИЕ версии 7 и ниже
<!--[if lte IE 8]><link href="/ie7.css" rel="stylesheet" type="text/css" /><![endif]--> //подключение файла со стилями для ИЕ версии 8 и ниже
<!--[if lte IE 9]><link href="/ie7.css" rel="stylesheet" type="text/css" /><![endif]--> //подключение файла со стилями для ИЕ версии 9 и ниже
<!--[if IE]><link href="/ie7.css" rel="stylesheet" type="text/css" /><![endif]--> //подключение файла со стилями для всех версий ИЕ

Если по каким либо причинам нет возможности подключить дополнительный файл стилей, то можно воспользоваться следующими хаками:

Только для ИЕ 7

Обе записи устанавливают верхний отступ 100px для блока с классом block

.block {
//margin-top:100px;
}
/*или*/
.block {
*margin-top:100px;
}

Только для ИЕ 8 и 9

Запись устанавливает верхний отступ 100px для блока с классом block в ИЕ 8 и 9

.block {
margin-top:100px\0/;
}

Только для ИЕ 9

Эту запись поймет только ИЕ 9

:root .block {
margin-top:100px\0/;
}

Только для ИЕ 8

Что бы изменения были видны только в ИЕ 8, сначала используется общий хак для ИЕ 8 и 9, а затем для ИЕ 9 переопределяем значение. В приведенном примере отступ 100px для блока с классом block отобразится только в ИЕ 8.

.block {
margin-top:100px\0/;
}
:root .block {
margin-top:0\0/;
}

Назначение специального класса

Отличный вариант назначить правила для определенной версии ИЕ, объявить для нужной версии (или версий) специальный класс. Между тегами head вставляем строку вида:

<!--[if IE 7]> <html class="ie7" lang="en"> <![endif]--> //объявляем класс ie7 для 7 версии ИЕ
<!--[if IE 8]> <html class="ie8" lang="en"> <![endif]--> //объявляем класс ie8 для 8 версии ИЕ
<!--[if IE 9]> <html class="ie9" lang="en"> <![endif]--> //объявляем класс ie9 для 9 версии ИЕ
<!--[if lte IE 9]> <html class="ie9_all" lang="en"> <![endif]--> //объявляем класс ie9_all для 9 и ниже версий ИЕ
<!--[if lte IE 8]> <html class="ie8_all" lang="en"> <![endif]--> //объявляем класс ie8_all для 8 и ниже версий ИЕ
<!--[if lte IE 7]> <html class="ie7_all" lang="en"> <![endif]--> //объявляем класс ie7_all для 7 и ниже версий ИЕ

После чего в таблице стилей задаем стили для нужного браузера:

//блоку с классом block в ИЕ 7 будет добавлен верхний отступ 100px
.ie7 .block {
margin-top:100px;
}

//блоку с классом block в ИЕ 7 и 8 будет добавлен верхний отступ 100px
.ie8_all .block {
margin-top:100px;
}