Условные комментарии для IE
09.6.2008 – Рубрика: HTML&CSS
Несмотря на неадекватную поддержку стандартов браузером Internet Explorer, его разработчики реализовали в нем одно довольно полезное свойство – поддержку условных комментариев. Условный комментарий это конструкция особого вида, которая воспринимается всем браузерами, кроме IE, как обычный комментарий. Но Internet Explorer не воспринимает это конструкция как комментарий. Таким образом, можно писать теги, которые будут восприниматься только IE. Преимуществом условных комментариев перед хаками(подробней о хаках читай в заметке Хаки – краткий путь к кроссбраузерности?) является то, что они проходят валидацию и скорее всего будут поддерживаться всеми последующим версиями нерадивого браузера.
Для того чтоб иметь возможность просмотреть страницу на одном компьютере в разных версиях браузера Internet Explorer необходимо установить IETester или Multiple IE о которых рассказывается в заметке «Джентльменский набор верстальщика«
Синтаксис условных комментариев:
<!--[if "условие"]> HTML <![endif]-->
Условие это логическое выражение, которое формируется при помощи специальных управляющих переменных.
| Переменная | Пример | Описание |
| IE | [if IE] | Условие выполняется во всех браузерах Internet Explorer |
| value | [if IE 7] | Условие выполняется только в Internet Explorer 7 версии(после IE стоит пробел!) |
| ! | [if !IE] | Условие НЕ выполняется в Internet Explorer |
| lt | [if lt IE 5.5] | less-than условие выполняется в браузерах IE версии ниже 5.5 |
| lte | [if lte IE 6] | less-than or equal условие выполняется в браузерах IE версии 6 и ниже |
| gt | [if gt IE 5] | greater-than условие выполняется в браузерах IE версии выше 5 |
| gte | [if gte IE 7] | greater-than or equal условие выполняется в браузерах IE версии 7 и выше |
| & | [if (gt IE 5)&(lt IE 7)] | Оператор И(AND) условие выполняется в браузерах IE версии выше 5 но ниже 7 |
| | | [if (IE 6)|(IE 7)] | Оператори ИЛИ(OR) условие выполняется в браузерах IE версии 6 или 7 |
| ( ) | [if !(IE 7)] | Скобки позволяют выделить подвыражения в сложном выражении.Условие не выполняется в браузере IE 7 версии |
Примеры условных комментариев:
<!--[if IE]>
<h1>Этот текст выведется во всех браузерах </h1>
<![endif]-->
<!--[if IE 6]>
<h1>Этот текст выведется только в IE6 </h1>
<![endif]-->
<!--[if gt IE 5]>
<h1>
Этот текст выведется браузерах версии высшее 5
</h1>
<![endif]-->
Постфактум
Условные комментарии также могут быть записаны вот таким образом:
<![if "условие"]> HTML <![endif]>
Хоть эта конструкция и будет восприниматься условным комментарием для Internet Explorer, она не проходит валидацию и отображается другими браузерами, так как они расценивают это как синтаксически неправильный тег. Воспользовавшись этой конструкцией и логическим выражениями можно написать конструкцию, которая будет воспринята всеми браузерами кроме Internet Explorer.
<!--[if IE]><![if !IE]><![endif]-->
<h1>Этот текст выведется любым браузером кроме IE</h1>
<!--[if IE]><![endif]><![endif]-->
Реализация условных комментариев
Tags: HTML, Internet Explorer
7 Отзывов to “Условные комментарии для IE”
Оставить отзыв
Последние записи
- DATA:URL – Картинки в документе без дополнительных запросов к серверу
(Вторник, 09. 8. 2009 – 11 отзывов) - Как изменить внешний вид checkbox
(Вторник, 04. 28. 2009 – 24 отзывов) - Как сделать галерею товаров для интернет-магазина
(Пятница, 03. 13. 2009 – 7 отзывов) - Я.ру
(Воскресенье, 03. 8. 2009 – 1 отзыв)
Октябрь 31, 2008 в 15:59
Спасибо за условный комментарий «Для всех, кроме IE»
Давно его искал, хотел делать server side и нашел ваш вариант!
Ноябрь 8, 2008 в 22:16
[...] отдельный файл стилей, который экранируется условным комментарием и в него добавляется expression, который эмулирует [...]
Сентябрь 8, 2009 в 12:56
[...] Второй не достаток можно решить путем передачи браузеру Internet Explorer дополнительного файла стилей, который будет экранирован от других браузеров условным комментарием. [...]
Январь 23, 2010 в 2:41
Журнал avtosl. Логотипы автомобилей daihatsu.
Апрель 20, 2010 в 14:35
Здравствуйте! Мне надо сделать, чтобы если ИЕ6, то подключалась одна версия модуля, а если другой браузер, то подключалась другая версия модуля. Попробовал с помощью предложенных условных комментариев, но не работает. Что-нибудь можете посоветовать?
Апрель 21, 2010 в 14:24
Разобрался.
Май 8, 2010 в 1:26
Статья полезная, спасибо!
Правда вот остается очень неприятный осадок от мелкомягких.. они как всегда радуют своим ПО. Интересно, сколько и чего нужно выкурить, чтобы реализовать подобное?.. Мало того, что их разработки настолько кривые, так ведь еще и за эту кривизну платить нужно..