CSS - IE8 - Блог команди розробників Internet Explorer

Прозорість. Градієнти. Тіні, що падають.

Задовго до того, як у CSS додали функціїпереходівітрансформацій, Internet Explorer 4 забезпечував візуальні ефекти за допомогою CSS. Ці можливості були розширені в Internet Explorer 5.5. Наприклад, наступний код використовувався щоб зробити об'єкт напівпрозорим:

Частково внаслідок вихідного дизайну синтаксис властивостей фільтра порушував граматичні правила CSS 2.1: він включає символ «:» - роздільник, який використовується в CSS для відокремлення імені властивості від його значення, а тому заборонений за межами рядків у лапках. Синтаксис значень також спирається функціональну нотацію, тобто. формуfunction(expression), але приймає і знак «=» у виразі.

Що у цьому підході не так?

При розборі наведеного нижче коду:

аналізатор, створений відповідно до стандартів, виведе наступне:

IE7 у цьому сенсі більш гнучкий, оскільки він розпізнає фільтри і не так суворо дотримується правил синтаксичного аналізу CSS:

У новому синтаксичному аналізаторі таблиць стилів, сумісному з CSS 2.1, є опція для IE8, яка переписуватиме фільтр, наприклад той, який ви бачили вище, запис такого вигляду:

Як такий суворий синтаксис позначиться на моєму веб-сайті?

Це також означає, що для того, щоб фільтр працював і в IE7, і в бета-версії IE8, ви повинні написати два правила:

Звичайно, але це досить проблематично для деяких наших клієнтів і партнерів. Поки вони з великим розумінням і прихильністю ставилися до наших цілей щодо забезпечення відповідності стандартам, вплив зворотної сумісності виявився достатнім для того, щоб використовувати режим Compatibility Viewзамовчуванням у фінальній версії IE8, поки вони не приведуть у відповідність свої сайти. Це означає, що мільйони користувачів зможуть перейти на IE8, продовжуючи отримувати доступ до сайтів із високим трафіком через двигун IE7.

Хоча рішення може виявитися двояким – чи має IE8 бути зворотно-сумісним чи сумісним із прийнятими стандартами? – необхідно брати до уваги й інші фактори:

  • Властивість фільтра є власністю Microsoft, тому навряд чи вона буде стандартизована або підтримуватиметься іншими розробниками браузерів.
  • Ця властивість фільтрів широко використовується
  • І граматичні правила CSS та існуючі реалізації здатні безпечно пропустити синтаксично вірні коди фільтра.
  • У режимі стандартів IE8 наш синтаксичний аналізатор CSS у порівнянні має відповідати правилам відновлення помилок CSS 2.1.

Якщо фільтр синтаксично неприпустимий, IE8 не пропустить його за прийнятими правилами. Це те, що робить IE8 з моменту випуску RC1.

Якщо це єдина функція, заради якої я і багато інших використовують фільтри, чому б просто не реалізувати прозорість?

Так, на сьогоднішній день прозорість це найпоширеніший випадок використання фільтрів. Однак:

  • Будучи функцією CSS3, прозорість знаходилася поза нашими інтересами щодо забезпечення відповідності CSS 2.1, тому йшло як додаткове завдання.
  • Найбільш поширене припущення – те, що реалізація прозорості полягає у зміні значення альфа-фільтра від 0 до 1. Однак, як визначено, властивість прозорості має побічні ефекти при накладенні елементів.
  • Прозорість – це далеко не єдина функція фільтра для використання у мережі. Деякі з цих функцій не мають аналогівCSS.

Розроблений так, щоб пройти найбільшу кількість тестових прикладів CSS, новий механізм візуалізації сторінок IE8, як і раніше, передбачає просту роботу з HTML і CSS, які якраз і можуть бути сумісними, не дуже сумісними або несумісними взагалі. Очікується, що він пройде стандартні тести та підтримуватиме функції з попередніх випусків. Необхідність створення однієї міжбраузерної таблиці стилів є привабливою можливістю, особливо якщо раніше створені таблиці продовжують працювати. Цілі веб-стандартів разом з очікуваннями дизайнерів та користувачів не повинні бути взаємовиключними, адже сумісність із прийнятими стандартами та зворотна сумісність є ключовими характеристиками сучасного браузера.