Условные комментарии для Internet Explorer

Версия для печатиВерсия для печати

Одной из частых проблем при верстке и дизайне HTML-документов является неправильное отображение страницы различными браузерами или их версиями. И по известным всем причинам браузер Internet Explorer (IE) интерпретирует правила XHTML и CSS не так, как это положено по стандартам. Условные комментарии могут быть использованы для того, чтобы избежать проблем с этим «гадким» браузером.

Обычные HTML-комментарии выглядят следующим образом:

<!-- Текст комментария  -->

C помощью них можно оставить важные замечания по особенностям HTML-кода для себя или для других веб-дизайнеров. Такой вид комментариев официально принят в спецификации HTML.

На официальном сайте Майкрософт предложено ещё два вида комментариев: downlevel-hidden и downlevel-revealed. Оба типа комментариев используются для определения версии браузера. Если условие истинно, то содержимое условного комментария интерпретируется браузером как HTML-содержимое.

Тип комментария downlevel-hidden выглядит следующим образом:

<!--[if условное выражение]> HTML-содержимое <![endif]-->

Тип комментария downlevel-revealed имеет следующий вид:

<![if условное выражение]> HTML-содержимое <![endif]>

Комментарий downlevel-revealed не поддерживается стандартами HTML, так как имеет ошибочный синтаксис в контексте HTML. Поэтому если необходима чистота и безошибочность кода, тогда от использования этого типа условных комментариев лучше отказаться.

Комментарий downlevel-hidden в контексте HTML интерпретируется как обычный комментарий, а условие вычисляется только в IE. Однако если внутри условного комментария будет находиться обычный HTML-комментарий, то это будет синтаксической ошибкой.

Ниже предлагаются условные комментарии типа downlevel-hidden с различными выражениями.

<!--[if IE]> только для Internet Explorer <![endif]-->
<!--[if IE 7]> только для Internet Explorer версии 7 <![endif]-->
<!--[if !IE]> не для Internet Explorer <![endif]-->
<!--[if lt IE 6]> для Internet Explorer версий ниже 6 <![endif]-->
<!--[if lte IE 6]> для Internet Explorer версий 6 и ниже <![endif]-->
<!--[if gt IE 6]> для Internet Explorer версий выше 6 <![endif]-->
<!--[if gte IE 6]> для Internet Explorer версий 6 и выше<![endif]-->
<!--[if !(IE 7)]> для Internet Explorer любой версии за исключением 7 <![endif]-->
<!--[if (gt IE 5)&(lt IE 7)]> для Internet Explorer выше 5 и ниже 7 версии <![endif]-->
<!--[if (IE 6)|(IE 7)]> для Internet Explorer 6 или 7 версии <![endif]-->
<!--[if true]> для любой версии <![endif]-->
<!--[if false]> ни для одной версии <![endif]-->

Операнды в выражениях могут быть любыми из указанных выше, они могут комбинироваться самыми различными способами.

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

Статья основана на документе Microsoft «About Conditional Comments».
Ваша оценка: Нет Средняя: 9.5 (2 голосов)