CSS filter и CSS expression Vs Internet Explorer 6

Мыши плакали, кололись,
но продолжали жрать кактус
Бородатый афоризм

IE6 не поддерживает PNG. Это знают все. Еще в нем не работают альфа-прозрачность, min-width, min-height, он криво отображает половину сайтов. По этим причинам и еще по сотне-другой других причин 99% верстальщиков желают ему скорейшей и мучительнейшей смерти. Увы, сайты под него делают: слишком он популярен среди пользователей.

Панацеей от многих глюков Internet Explorer-а незаслуженно считаются CSS filter и CSS expression. Однако панацеи не существует, даже в случае с IE.

Давайте попробуем посчитать, сколько раз expression выполняется на очень простой странице. Для примера я написал вот такой код:

Думаю, комментарии излишни: каждый вызов экспрешна увеличивает счетчик на единицу, а результат работы отображается в заголовке окна. Поводив несколько секунд курсором над слоем div#withExpressions я получил вот это:

Internet Explorer жжот

Как видите, старательный IE выполнил и перевыполнил план отрисовки слоя: за 8 секунд метаний мышкой он отрисовал слой 4960 (!!!) раз.

Expression обрабатывается каждый раз при перерисовке фрагмента окна в IE. Получается, если у вас было несколько больших PNG картинок, то ради нескольких пикселей, он отрисует заново практически весь экран. Как быть?

Забудьте про expressions, их не для этого придумали (для чего – сам не знаю ;) ). Есть средства значительно более удобные. К примеру, если вы эмулируете свойство max-width в IE, то вам нет смысла перерисовывать окно, когда оно неподвижно. Достаточно воспользоваться методом onresize, который вычислит нужные размеры при изменении самого окна браузера.

А если вы решились на использование полупрозрачных PNG в ослобраузере, то попробуйте перерисовать PNG только при загрузке: это существенно сократит время вашей работы. Как перерисовывать? Да хотя бы вот так:

Так вы избавите себя от возможных “тормозов” на странице (увы, и такое бывает) и подвисаний нашего любимого браузера.

Конечно, правильной версткой это не назовешь, но она уже стала валидной, а это не может не радовать ;)

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

А еще можно использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>