Обновляются ли свойства CSS с префиксом поставщика при обновлении родителя без префикса?

Недавно я перечитывал модуль W3C CSS Timing Functions модуль, когда заметил, что определение однократной функции синхронизации было обновлено и теперь включает функцию синхронизации frames() (см. в этом разделе):

<single-timing-function> = linear | <cubic-bezier-timing-function> | <step-timing-function> | <frames-timing-function>

Я JSFiddled, чтобы увидеть, работает ли frames() в настоящее время при использовании свойства animation, но кажется, что эта функция в настоящее время не поддерживается в браузерах, которые я использую (но cubic-bezier() как показано здесь конечно работает для -moz-animation, как показывает скрипка).

Поддерживаемые в настоящее время свойства с префиксом поставщика (например, -moz-animation, как в приведенном выше JSFiddle) обновлены для поддержки изменений в родительском свойстве (без префикса)? То есть, когда, например. frames() поддерживается браузерами для свойства animation, будет ли оно поддерживаться, например. -moz/-webkit-animation свойств, или это нельзя обобщить? (т. е. зависит)


person The One and Only ChemistryBlob    schedule 21.04.2017    source источник


Ответы (1)


Похоже, что большинство функций с префиксами поставщиков обновлены, чтобы соответствовать стандартизированным реализациям, потому что обычно префиксы повторно реализуются как псевдонимы их аналогов без префикса к тому времени, когда последние поставляются в производство. Но я не думаю, что это можно обобщать — ну, наверное, я только что это сделал, поэтому вместо этого скажу, что на это нельзя полагаться. Градиенты — это хорошо известный пример префиксных функций, которые не обновляются в соответствии с последним стандартом.

На самом деле это утверждение даже не на 100 % верно, потому что Mozilla действительно фактически обновила свою функцию -moz-linear-gradient(), чтобы принять тот же синтаксис to <side-or-corner> вместе со старым синтаксисом <side-or-corner> (оба имеют совершенно противоположные значения), тогда как WebKit- браузеры на базе IE11 по-прежнему не принимают новый синтаксис to <side-or-corner> для своих функций -webkit-linear-gradient() и -ms-linear-gradient()-ms-linear-gradient() полностью отсутствует в Microsoft Edge).

Но каждый браузер правильно реализует стандартизированную грамматику для линейных градиентов: ключевое слово to требуется при указании ключевого слова <side-or-corner>; использование такого ключевого слова без to в выражении linear-gradient() недопустимо в каждом браузере.

Другими словами:

  1. -moz-linear-gradient(top, #FF0000, #FFFF00) работает в Firefox;
  2. и -moz-linear-gradient(to bottom, #FF0000, #FFFF00) также работает в Firefox;
  3. -webkit-linear-gradient(top, #FF0000, #FFFF00) работает в Safari и Chrome;
  4. но -webkit-linear-gradient(to bottom, #FF0000, #FFFF00) не работает в Safari или Chrome;
  5. -ms-linear-gradient(top, #FF0000, #FFFF00) работает в IE10 и IE11;
  6. но -ms-linear-gradient(to bottom, #FF0000, #FFFF00) не работает в IE10 и IE11;
  7. linear-gradient(top, #FF0000, #FFFF00) не работает ни в одном браузере;
  8. и linear-gradient(to bottom, #FF0000, #FFFF00) работает во всех браузерах.

Итак, учитывая беспорядок, связанный с префиксными градиентами, я настоятельно рекомендую не полагаться на префиксные реализации, чтобы они все время работали как стандарт. Даже если один браузер повторно реализует префикс как псевдоним версии функции без префикса после того, как реализация станет стабильной, не все браузеры могут это сделать.

Сказав это, весьма вероятно, что все браузеры используют псевдонимы свойств с префиксом -*-animation и -*-transition для своих аналогов без префикса, и поэтому столь же вероятно, что свойства с префиксом будут автоматически обновлены для поддержки новых функций синхронизации в качестве побочного эффекта обновления их аналогов без префикса. сделать это.

person BoltClock    schedule 21.04.2017
comment
Хорошие примеры - да, все это беспорядок. Бесчисленное множество других примеров, от медиа-запросов до зарезервированных ключевых слов CSS. - person The One and Only ChemistryBlob; 21.04.2017