Из моего ответа на этот похожий вопрос :
- Браузеры на основе WebKit (включая Opera 15 и более поздние версии) по-прежнему требуют префикс
-webkit-
для анимации сегодняи преобразования не имеют префикса в последних версиях Chrome.Для обеих функций вам понадобится префикс.
(Преобразования не имели префикса в Chrome 36; анимация не была префиксом до Chrome 43. Обе функции были без префикса одновременно в Safari 9 так что вам не нужно беспокоиться о перекрытии с префиксом / без префикса в Safari.)
В двух словах, хотя ваши два примера не обеспечивают одинаковую функциональность, нет смысла включать любые префиксные свойства в @-webkit-keyframes
так как большинству браузеров WebKit, которые зависят от префикса at-rule, никогда не понадобятся свойства без префикса.В частности, из нашего обсуждения в чате :
Вы можете потерять объявление без префикса [animation-timer-function].@keyframes находится в том же семействе, что и свойства animation- *, и ни один из существующих браузеров не поддерживает один без префикса без другого
Что касается преобразований, только очень немногие браузеры одновременно поддерживают преобразования без префиксов и требуют префиксов для анимаций.Эти браузеры все еще поддерживают префиксные преобразования, поэтому аналогичным образом вы можете потерять нефиксированные преобразования в @ -webkit-keyframes
Обратите внимание на разницу между «support» и «require»
Итак, кодвторой образец - это все, что вам нужно.Это на 40% меньше , чем пример кода, с потерей функциональности без .40% - это большая сделка.Единственное изменение, которое я хотел бы сделать, это переместить @-webkit-keyframes
правило вверх:
@-webkit-keyframes coolEffect {
-webkit-transform: some value;
-webkit-animation-timing-function: some value;
}
@keyframes coolEffect {
transform: some value;
animation-timing-function: some value;
}
Читатели также могут быть заинтересованы в моих комментариях к Autoprefixer:
Я предполагаю, что Autoprefixer видит, чтоChrome 36-42 поддерживает преобразования без префиксов, но требует анимации с префиксом, поэтому он помещает преобразование в @ -webkit-keyframes.Я не думаю, что это хороший подход.Это излишне удваивает объявления преобразования.Все эти версии Chrome до сих пор понимают -webkit-transform, поэтому может также придерживаться того, что
Autoprefixer хорош для тех, кто просто не хочет беспокоиться о префиксах или проводит все исследования, необходимые длядействительно оптимизируйте их таблицы стилей
Если вы хотите оптимизировать свою таблицу стилей, вам нужно будет провести немало исследований, чтобы выяснить, где нужны префиксы, а где нет, где нужны объявления без префиксов и гдевы можете оставить их и т. д. Префиксы в любом случае - боль;)