Разработчики имеют отношения любви-ненависти с префиксами вендоров CSS. Они позволяют нам использовать новейшие технологии за счет многословных деклараций:
background-image: -webkit-linear-gradient(#fff, #000); background-image: -moz-linear-gradient(#fff, #000); background-image: -ms-linear-gradient(#fff, #000); background-image: -o-linear-gradient(#fff, #000); background-image: linear-gradient(#fff, #000);
Это хорошо работает в теории, но рассмотрим, что происходит в дикой природе:
- Экспериментальные свойства часто сначала реализуются в движке webkit, и нет гарантии, что они будут реплицированы в других браузерах.
- Часто бывает трудно определить, является ли свойство с префиксом поставщика частью спецификации CSS. Некоторые поставщики не предоставляют свойства для стандартизации.
- Даже если стандартное свойство изменяется, неверная версия с префиксом поставщика продолжает поддерживаться. Ваш старый код все еще работает; Вы не вернетесь к нему, чтобы исправить реализацию.
Вы будете часто находить сайты, использующие только префиксы -webkit — даже если другие браузеры поддерживают это свойство или оно широко доступно без префикса (например, border-radius
). Таким образом, Chrome и Safari выглядят лучше, чем конкурирующие браузеры, а другие производители не довольны .
Этот вопрос был поднят и обсужден на заседании W3C 7 февраля 2012 года :
Активисты веб-стандартов учат людей пользоваться webkit. Вы увидите презентации всех сторонников веб-стандартов, призывающих людей использовать префиксы webkit.
Наша задача — решить проблемы совместимости.
На данный момент мы пытаемся выяснить, какие и сколько свойств префикса webkit реально реализовать поддержку в Mozilla.
Если мы не поддерживаем префиксы webkit, мы блокируем себя из частей мобильного Интернета.
Позвольте этому погрузиться на мгновение.
Браузеры без webkit будут поддерживать префикс -webkit. Это решение рассматривается W3C.
Идея, скорее всего, потерпит неудачу. Две или более реализации одного и того же свойства webkit не будут совместимы, поэтому разработчики не смогут нигде его использовать. Никто не побеждает — включая Apple и Google.
Но меня больше беспокоит непоправимый ущерб, который он нанесет, если решение будет успешным. Как только разработчики обнаружат префиксы webkit, работающие в Firefox, IE и Opera, они будут ожидать, что они будут работать со всеми свойствами. Внедрение только для Webkit будет расти в геометрической прогрессии, и поставщики будут вынуждены внедрять префиксы повсюду. На этом этапе свойства webkit станут стандартом де-факто независимо от какой-либо спецификации W3C. Игра окончена: открытая сеть закрыта.
Последствия также выходят за рамки CSS: многие из новых API-интерфейсов JavaScript имеют префиксы поставщиков.
Кто виноват?
Мы можем указать липким пальцем неудачи на:
Рабочая группа W3C
Веб-стандартам требуется слишком много времени для достижения зрелости. Это может быть неизбежно, но производители браузеров обходят этот процесс.
Поставщики браузеров
В стремлении внедрить новые технологии поставщики слишком легко добавляют префикс и забывают об этом. Веб-разработчикам требуется больше информации: рассматривается ли это свойство W3C и когда префикс будет удален?
В идеальном случае экспериментальные префиксы исчезают, как только браузер реализует стандартное свойство. Производители не будут этого делать, потому что это может взломать сайты, но они могут сделать больше, чтобы осветить проблему, например, предоставить инструменты обнаружения устаревания или вывести сообщения об ошибках на консоль разработчика.
Apple и Google
Оба виновны в продвижении префиксов webkit, как если бы они были стандартной частью повседневной веб-разработки на HTML5. Apple обвиняют в активной работе против W3C.
Mozilla, Microsoft и Опера
Другие поставщики часто отстают от браузеров webkit на месяцы, если не на годы. Добавление префиксов webkit — нелепое решение: пришло время улучшить их игру.
Технологические сайты и евангелисты
Мы все любим классные демонстрации, но евангелисты часто забывают упомянуть, что свойства являются экспериментальными и могут никогда не иметь полной поддержки браузера (и, да, включая SitePoint) . В идеале код должен работать как минимум в двух браузерах; по крайней мере, это будет означать, что требуются префиксы нескольких поставщиков.
Веб-разработчики
Мы слишком ленивы. Мы пишем код для браузера и, хотя у нас могут быть хорошие намерения исправить его позже, мы редко делаем это.
Вы помните, когда в последний раз разработчики ориентировались на конкретный браузер? Это был IE6. Мы все еще живем с наследием этого решения десятилетие спустя. Вы действительно хотите, чтобы история повторилась?
Время действовать
Я против браузеров не-webkit, поддерживающих префиксы webkit. В лучшем случае это делает префиксы непригодными. В худшем случае это нарушает весь процесс стандартизации. Вы можете соглашаться или не соглашаться, но делитесь своим мнением с коллегами, в блогах и в социальных сетях. W3C и поставщики браузеров выслушают ваши отзывы; вам просто нужно предоставить некоторые.
Затем протестируйте свой сайт в нескольких браузерах. Немного изящная деградация — это хорошо, но пренебрегать одним или несколькими современными браузерами с эквивалентной поддержкой — нет. Исправьте код, иначе ваш сайт усугубляет проблему.