Условные комментарии для IE
Условные комментарии используются для написания специальных инструкций которые будут работать только в Internet Explorer не ниже 5-ой версии.
Условный комментарий выглядит следующим образом:
Структура похожа на обычный комментарий в HTML, поэтому остальные браузеры будут воспринимать его как обычный комментарий. Explorer распознаёт специальный синтаксис <!--[if IE]>, решает условие if и представляет содержимое условного комментария так, как если бы это было содержание нормальной страницы. Условные комментарии используют синтаксис HTML комментариев, поэтому они могут быть включены только в HTML страницу. Удобно бывает сделать отдельные стили для IE и вставить тег link в условный комментарий.
Конечно, условные комментарии, как и обычные не могут быть вставлены внутри тега.
В условных комментариях можно использовать операторы, с помощью которых можно условие.
Оператор | Описание |
---|---|
lt | меньше чем |
lte | меньше или равно |
gt | больше чем |
gte | больше или равно |
В таблице ниже приведены все операторы:
Элемент | Пример | Значение |
---|---|---|
IE | [if IE] | Единственное поддерживаемое сейчас свойство IE, равное версии Internet Explorer. |
value | [if IE 7] | Целое или дробное число обозначающее версию браузера. Выражение истинно если число совпадает с версией браузера. |
! | [if !IE] | Оператор отрицания (NOT). Возвращает значение обратное логическому значению аргумента. |
lt | [if lt IE 5.5] | Меньше (less-than). Возвращает true если первый аргумент меньше второго. |
lte | [if lte IE 6] | Меньше либо равно (less-than or equal). Возвращает true если первый аргумент меньше либо равен второму. |
gt | [if gt IE 5] | Больше (greater-than). Возвращает true если первый аргумент больше второго. |
gte | [if gte IE 7] | Больше либо равно (greater-than or equal). Возвращает true если первый аргумент больше либо равен второму. |
( ) | [if !(IE 7)] | Скобки позволяют выделить подвыражения в сложном выражении. |
& | [if (gt IE 5)&(lt IE 7)] | Оператор AND. Возвращает true если оба подвыражения истинны. |
| | [if (IE 6)|(IE 7)] | Оператор OR. Возвращает true если одно их подвыражений истинно. |
true | [if true] | Всегда true. |
false | [if false] | Всегда false. |
Примеры:
<!--[if IE 5]>
<!--[if IE 5.0]>
<!--[if IE 5.5]>
<!--[if IE 6]>
<!--[if IE 7]>
<!--[if gte IE 5]>
<!--[if lt IE 6]>
<!--[if lte IE 5.5]>
<!--[if gt IE 6]>
<!--[if gt IE 7]>
Специальные инструкции для IE8 и старше
<![endif]-->
<!--[if gte IE 8]>
Специальные инструкции для IE8 и старше
<![endif]-->
Еще примеры:
<!--[if IE]>
<h1>Этот текст выведется во всех браузерах </h1>
<![endif]-->
<!--[if IE 6]>
<h1>Этот текст выведется только в IE6 </h1>
<![endif]-->
<!--[if gt IE 5]>
<h1>Этот текст выведется браузерах версии выше 5 </h1>
<![endif]-->
<!--[if (gt IE 5)&(lt IE 7)]>
<img src="blank.gif" width="100" height="100" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'png_sample_image.png\', sizingMethod=\'scale\')" alt="Пример использования условного комментария" />
<![endif]-->
Условные комментарии и различные версии IE на одном компьютере
Если у вас установлено несколько версий IE, каждый их них будет считать, что его версия равна версии самого нового IE установленного в системе, т.е. если установлены IE6 и IE7, то в IE6 условные комментарии будут работать так же как и в IE7. Исправить это можно удалив ключ IE в разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version Vector (если удалять не хочется можно просто переименовать его в xIE, так поступает Multiple IE package44 от TredoSoft).