Применение CSS. Часть 3: «Семёрка» - эпохальный шаг вперёд

Aug 14, 2011 15:15


7-я версия IE, вышедшая в 2006 г., ввела ряд возможностей, доступных в других браузерах уже два-три года (только в Opera селекторы E[attr$="value"], E[attr*="value"], E[ns|attr], E ~ F стали доступны в том же году, в версии 9).

Заработал нормально классовый селектор с указанием множества классов. Заработали селекторы E > F, E + F и даже E ~ F из CSS 3.

В спецификации CSS 2 была двусмысленность - было непонятно, должны ли браузеры учитывать в селекторе атрибута наличие атрибута по умолчанию и IE 6 считал, что все ячейки таблиц подпадают под td[colspan] или th[colspan], независимо от того, задан ли он явно. Но поведению других браузеров и спецификации CSS 2.1 это не соответствовало и такое поведение было исправлено. Кстати, я вовсе не уверен, что это хорошо. Для таких случаев можно было бы ввести в спецификацию напрашивающийся синтаксис типа td[colspan>1]. Зато необходимость явно указывать элементам input умолчательный атрибут type="text", чтобы работал селектор input[type="text"], не очевидна, это приходится запоминать.

Заработали селекторы атрибутов E[attr="value"], E[attr~="value"], E[attr|="value"] (по-моему, сильно недооцениваемый уэб-мастерами, но замечательно подходящий для задания правил, специфичных для определённых веток в иерархии сайта или определённых версий браузеров), E[attr^="value"], E[attr$="value"], E[attr*="value"], E[ns|attr]. Всё это ранее приходилось имитировать экспрешионами.

То же относится к заработавшему теперь псевдоклассу E:first-child. Псевдокласс E:hover, применявшийся ранее только к ссылкам, заработал на всех элементах.

Заработали свойства ширины и высоты min-width, max-width, min-height, max-height.

Добавилась поддержка значения transparent у свойства border-color и значения fixed у свойств position и background-attachment.


В общем, с этим уже можно работать, а то без дочернего селектора, селекторов атрибутов, фирст-чайлда, минимальных / максимальных размеров и эйч-оувера было очень уж грустно. IE 7 не был передовым браузером и сохранил множество недостатков, но главная проблема в коммерческой модели распространения «Майкрософт», приводящей к сохранению на сцене явно устаревших версий (сейчас та же беда, хотя и по другим причинам, приключается с «Файерфоксом»). Появившиеся позже Уэбкит-браузеры вообще автообновляются, вышедшие в том же году Opera 9 и Firefox 2 давно вытеснили своих предшественников и сейчас сами уже почти не используются (0,8 % и 0,1 % соответственно, при 4,9 % у IE 7 и 2,0 % у IE 6). А древний IE 6 ещё жив, хотя и сокращает свою долю в Рунете вдвое каждые месяцев девять. И кое-то ещё требует его поддержки!

В пику такому злодейству есть чудо: JScript-библиотека IE7 от Дина Эдуардса, обеспечивающая совместимость IE 5.5-6 с IE 7. Конечно, всё можно пофиксить и самостоятельно, но это утомительно. Проще подключить скрипт и больше не думать об отсталости шестёрки. Библиотека добавляет все перечисленные выше возможности, кроме экзотического селектора атрибута с пространством имён, и про border-color: transparent и исправление для !important ничего не сказано. Также фиксится прозрачность png-картинок. Дополнительный модуль библиотеки (ie7-squish.js) исправляет три знаменитых бага - Doubled Margin, Peekaboo и Unscrollable Content. Должен, однако, предупредить, что я эту библиотеку не проверял - IETester при её применении падает, а в моём окружении найти живой IE 6 нереально.

css, opera, firefox, Web-вёрстка, ie, jscript, графики

Previous post Next post
Up