воскресенье, 26 октября 2008 г.

Верстка для различных версий Internet Explorer


Saturday, 25 October 2008
С каждой новой версией браузера от Microsoft мир веб-разработчиков напрягается - чего они там еще нового придумали? Пользователи-новаторы радостно перескакивают на новые версии, пользователи-консерваторы довольствуются тем, что есть. Статистика используемых браузеров начинает колебаться, а за кулисами происходит настоящая борьба за приличный вид страниц. Потому что каждый новый Internet Explorer показывает один и тот же код страницы по разному, и не всегда так, чтобы можно было закрывать на это глаза.
В браузерах, живущих "по понятиям" - то есть поддерживающих стандарты наиболее полным образом, "проблема обновления" практически отсутствует - их механизм отрисовки страницы изначально максимально соответствует стандартам и новая версия предлагает в первую очередь новые удобства пользования браузером, а не нововведения в плане отображения страницы. Так происходит с Mozilla Firefox, с Opera и многими другими браузерами. Страница, сверстанная по стандартам, отображается в них коректно. Отрадно, что недавно появившийся Google Chrome продолжает эту традицию и головных болей верстальщикам почти не добавил.
Для браузеров, не придерживающихся стандартов (я в первую очередь имею в виду старый и недобрый IE), существует целый арсенал хаков, позволяющих обойти некорректное отображение кода сайта. Не буду их здесь перечислять - информацию по ним можно найти во многих местах в интернете.
Одним из таких хаков является условное включение в страницу HTML-кода, действующего только для IE старых версий - 6й и ниже:
<!--[if lte IE 6]>
            <link rel="stylesheet" type="text/css" href="/css/ie6.css" media="screen" />
            .....
<![endif]-->
Это замечательное решение, которое используется массой людей, в том числе и мной. Однако существует ситуация, в которой оно не срабатывает:
Если у вас, как и у многих добропорядочных верстальщиков, на рабочем компьютере основной версией IE, которая установлена в системе, является Internet Explorer 7, и для полного счастья установлен набор старых версий IE под названием Multiple IEs, то при попытке посмотреть страницу через IE 6 из этого набора описанный выше хак не сработает. Из-за того, что в проверке условия будет фигурировать основная (системная) версия Internet Explorer, то есть "семерка", а не та, которая указывается в User-Agent. Чтобы обойти это ограничение, в процессе отладки кода страницы для IE 6 и меньше придется ставить в код такое условие:
<!--[if lte IE 7]>
При этом необходимо помнить о том, что такую страницу не следует смотреть в IE 7 из-за того, что код будет срабатывать и для него
После того, как код будет отлажен, возвращаем в условие шестерку, удостоверяемся в корректном отображении в IE 7 и остальных браузерах - и смело выкладываем код на сайт.

Комментариев нет:

Отправить комментарий

Напишите что-нибудь по теме