Статьи

Больше CSS исправлений для IE7

Microsoft анонсировала еще несколько исправлений для IE7, в которых CSS-эксперты будут танцевать в проходах.

Давняя ошибка в Internet Explorer создает «корневой узел», который расположен над элементом html в дереве документа, что позволяет использовать селекторы, начинающиеся с «* html», только для этого браузера. И наоборот, поскольку IE в настоящее время не поддерживает дочерний селектор (>), правила, начинающиеся с «html> body», могут использоваться для таргетинга всех браузеров, кроме IE.

В IE7 селектор корневого узла отсутствует, а дочерний селектор полностью поддерживается , что позволяет браузеру использовать все те же правила CSS, что и в других существующих браузерах. Предполагая, что Microsoft исправляет большинство других ошибок CSS (из которых я осторожно оптимистичен), эти два исправления позволят дизайнерам сохранить обратную совместимость с IE6 и более ранними версиями, в то же время используя все преимущества IE7.

Более тонкое исправление, которое затронет гораздо меньше дизайнеров, – полная поддержка мультиклассовых селекторов . В HTML-документе одному элементу можно назначить несколько классов, разделяя их имена пробелами (например, <div class = ”Важное примечание”>). В соответствии со стандартом CSS, если вы хотите сопоставить элементы, которые имеют определенную комбинацию классов (например, div с классами ‘важный’ и ‘note’), вы можете перечислить их через точки в вашем селекторе CSS (например, div. важная заметка). IE6 в настоящее время игнорирует все, кроме последнего имени класса в таком селекторе (например, div.important.note будет сопоставлять любой div с классом ‘note’), возможно, применяя правило к элементам, к которым оно не должно применяться. IE7 это исправит.

Все эти исправления влияют только на строгий режим IE7. Браузер продолжит текущее поведение IE6 при работе в режиме причуд. Но есть еще одно исправление, которое будет влиять на браузер как в строгом, так и в причудливом режиме: правильный синтаксический анализ селекторов псевдоэлементов . IE6 не поддерживает селекторы псевдоэлементов, такие как: first-letter, если они не являются самой последней вещью в селекторе CSS и сопровождаются символом пробела. Если за псевдоэлементом следует класс или псевдокласс (например, div: first-letter: hover) или если после него не осталось пробелов (например, div: first-letter {float: left;}), весь Правило игнорируется. Исправляя эти ошибки синтаксического анализатора, IE7 обеспечит, чтобы правила псевдоэлемента работали более согласованно и с меньшими затратами времени.