Статьи

Пора переосмыслить префиксы поставщиков в CSS

Префикс -webkit- теперь настолько доминирует в CSS в сети, что некоторые сайты не могут работать должным образом без него. Хотя это явный признак неидеальной практики разработчиков за последние несколько лет, это привело к довольно неудачному, но почти необходимому шагу со стороны Mozilla. В версии Firefox 46 или 47 (выпущенной либо в апреле, либо в мае 2016 года) Mozilla планирует реализовать поддержку ряда нестандартных префиксов -webkit-, чтобы улучшить совместимость Firefox с префиксом -webkit (и часто с мобильным) в Интернете.

Это не новая идея, Microsoft Edge также поддерживает серию префиксов -webkit- для обеспечения совместимости. Opera уже начала внедрять префиксы -webkit- в 2012 году и с тех пор перешла на движок Blink на основе WebKit.

W3C и поставщики браузеров не намеревались использовать префиксы поставщиков на рабочих сайтах:

«Официальная политика W3C гласит, что на самом деле вы не должны использовать экспериментальные свойства в рабочем коде, а люди делают это так, как они хотят, чтобы сайты выглядели круто и оставались на переднем крае». — Страница W3C по оптимизации контента для различных браузеров

Однако разработчики во всем мире хотели использовать их для доступа к новейшим функциям, как только могли. В то время как префиксы вызвали некоторую путаницу с доминированием WebKit, я думаю, что они преуспели в том, чтобы помочь сети довольно быстро продвигаться вперед.

Подход Mozilla и Microsoft, вероятно, будет безвредным для большинства веб-сайтов. Большинство веб-сайтов в сети уже -moz- префиксы -moz- или обнаружат, что обновления Mozilla улучшают совместимость их сайтов без каких-либо действий. Как профессиональные веб-разработчики, мы должны быть внимательными и понимать, что в некоторых проектах могут быть и другие результаты. Вы, возможно, уже знаете, какое из ваших творений может сломаться с этим обновлением.

Разработчики, пришло время переосмыслить ваш подход к префиксам и протестировать эти сайты.

Включенные префиксы

Существует целый ряд префиксов -webkit- Mozilla может включить. Из того, что я понял, Mozilla не ищет соответствия поддерживаемым -webkit- префиксам -webkit- , так как не все из них, вероятно, -webkit- для обеспечения совместимости движка -webkit- в Mozilla с более широкими сетями.

Префиксы, которые Mozilla может использовать в соответствии с их вики-страницей «Совместимость / Мобильность / Нестандартная совместимость», включают следующее:

  • -webkit-flexbox
  • -webkit- префиксом градиентов
  • -webkit-transforms
  • -webkit-transitions
  • -webkit-appearance
  • -webkit-background-clip
  • -webkit-device-pixel-ratio
  • -webkit-animation
  • -webkit-border*

Также могут быть затронуты некоторые другие функции, такие как @-webkit-keyframes .

Кросс-браузерное тестирование будет иметь решающее значение

Если вы веб-разработчик, который пропустил -moz- префиксы, чтобы избежать необходимости тестировать новые функции CSS в Firefox — предположим, вы были в сжатые сроки, а клиент настаивал на вашей руке — вам придется повторить тестирование сайт в Firefox 46 или 47. Эти версии Firefox выйдут либо в апреле, либо в мае, так что у вас есть немного времени для планирования.

Чтобы протестировать свой веб-сайт до того, как эти изменения достигнут Firefox 46/47, вы можете получить доступ к текущему состоянию изменений в Firefox Nightly с помощью настройки layout.css.prefixes.webkit в about:config . true по умолчанию должно быть установлено, если у вас установлена ​​последняя версия Nightly. Пока еще не все изменения префикса -webkit- в Firefox Nightly, но это место, где можно проверить, как выглядит ваш сайт. Я бы подождал до марта, прежде чем тестировать Firefox Nightly слишком тщательно.

Еще более срочно, Microsoft Edge уже интерпретирует и отображает префиксы -webkit- таким образом. Это означает, что любые специфические стили WebKit, которые вы используете на своих сайтах, могут уже отображаться в браузере, которого вы не ожидали. Если вы еще этого не сделали, получите доступ к Microsoft Edge в Windows 10 и протестируйте эти веб-сайты!

Префиксы поставщиков исчезают

К счастью, похоже, что префиксы вендоров исчезают, так как команды браузеров ищут лучшие решения. Команда Chrome / Blink изменила свой подход:

«В дальнейшем вместо того, чтобы включать функцию по умолчанию с префиксом поставщика, мы вместо этого будем оставлять (без префикса) функцию за флагом« включить экспериментальные функции веб-платформы »в поле about:flags пока функция не будет готова к включению по умолчанию. ”- команда Chrome / Blink

Команда Firefox также находится на пути к аналогичному подходу:

«Для чего бы то ни было, текущая тенденция в Mozilla — […] избегать поставщиков префиксов, либо отключая вещи перед отправкой, либо отправляя их без префиксов, если они достаточно стабильны. По крайней мере
как общая политика; конкретные случаи могут заслуживать исключения ». — Борис из Mozilla

Microsoft Edge стремится полностью исключить поддержку префиксов:

«Microsoft также избавляется от префиксов поставщиков для Edge. Это означает, что для того, чтобы разработчики могли воспользоваться специальными функциями HTML5 или CSS, им не нужно будет использовать определенный префикс Edge. Вместо этого они могут просто кодировать к веб-стандартам ». — Mashable

Нет более изящной деградации префиксами

Этот отход от префиксов поставщиков означает одно: постепенная деградация через префиксы поставщиков явно не подходит.

Использование префиксов вендоров для таргетинга на конкретный браузер (например, что-то специфическое только для Chrome) не было целью префиксов вендоров; разработчики всегда рекомендовали использовать все доступные префиксы поставщиков (от -webkit- до -o- ). Если вы используете функции, основанные на префиксных свойствах, и использовали префиксы для постепенного ухудшения дизайна в других браузерах, это больше не будет работать.

Вывод

Времена меняются. Доминирование WebKit непреднамеренно приводит к поломке и несовместимости сети, и другие браузеры стремятся расширить свою совместимость, -webkit- префиксы -webkit- чтобы не отставать. Хотя эта проблема должна исчезнуть по мере того, как префиксы поставщиков будут прекращены, разработчикам необходимо убедиться, что их использование префиксов не приводит к непредвиденным результатам в браузерах, отличных от WebKit.

Полезные ссылки