CSS анимация кросс-браузерная совместимость - PullRequest
0 голосов
/ 20 февраля 2019

Я создал анимированный логотип CSS со всем кодом анимации внутри одного и того же файла SVG, чтобы на него можно было загружать или ссылаться, и анимация воспроизводилась без каких-либо дополнительных усилий.Кажется, что он работает нормально, за исключением браузеров Microsoft и iPhone (протестировано на Safari и Chrome).В Internet Explorer анимация не воспроизводится почти полностью.На платформах iOS анимация воспроизводится, но, похоже, некоторые инструкции игнорируются или неправильно интерпретируются.В частности:

• Инструкция по шкале, предназначенная для создания мигающих глаз, похоже, имеет другое происхождение, заставляя глаза двигаться вместо масштабирования на месте.

• Ушные ушные раковины не "вращая».На самом деле они вращаются, но они должны двигаться вместе с остальными элементами, и вместо этого они просто вращаются на месте.Похоже, что инструкции по переводу игнорируются.

Вот ссылка на файл.

https://clevergap.staging.wpengine.com/wp-content/uploads/2019/02/pet-friendly-logo-anim-01-3.svg

Вот CSS для областей, которые отображаются неправильнов iOS.

@keyframes eyes-anim {
  0% {transform: scale(1, 0) translate(0, 0); transform-origin: 50% 50%;}
  24% {transform: scale(1, 0) translate(0, -22.5%); transform-origin: 50% 27.5%;}
  26% {transform: scale(1, 1) translate(0, 0%); transform-origin: 50% 50%;}
  28% {transform: scale(1, 0) translate(0, -22.5%); transform-origin: 50% 27.5%;}
  30% {transform: scale(1, 1) translate(0, 0%); transform-origin: 50% 50%;}
  65% {transform: scale(1, 1) rotateZ(0deg); transform-origin: 50% 35%;}
  67% {transform: scale(1, 1) rotateZ(15deg); transform-origin: 50% 35%;}
  90% {transform: scale(1, 1) rotateZ(15deg); transform-origin: 50% 35%;}
  93% {transform: scale(1, 1) rotateZ(0deg); transform-origin: 50% 35%;}
  100% {transform: scale(1, 1) rotateZ(0deg); transform-origin: 50% 35%;}
}

@keyframes earlobe-right-anim {
  0% {transform: scale(0, 0) translate(0, 0); transform-origin: 65% 11.25%;}
  43% {transform: scale(0, 0) translate(0, 0); transform-origin: 65% 11.25%;}
  45% {transform: scale(1.1, 1.1) translate(0, 0); transform-origin: 65% 11.25%;}
  49% {transform: scale(.95, .95) translate(0, 0); transform-origin: 65% 11.25%;}
  53% {transform: scale(1, 1) translate(0, 0); transform-origin: 65% 11.25%;}
  65% {transform: scale(1, 1) translate(0, 0) rotateZ(0deg); transform-origin: 65% 11.25%;}
  67% {transform: scale(1, 1) translate(6%, 4.4%) rotateZ(-25deg); transform-origin: 65% 11.25%;}
  70% {transform: scale(1, 1) translate(6%, 4.4%) rotateZ(25deg); transform-origin: 65% 11.25%;}
  72% {transform: scale(1, 1) translate(6%, 4.4%) rotateZ(17deg); transform-origin: 65% 11.25%;}
  76% {transform: scale(1, 1) translate(6%, 4.4%) rotateZ(20deg); transform-origin: 65% 11.25%;}
  90% {transform: scale(1, 1) translate(6%, 4.4%) rotateZ(20deg); transform-origin: 65% 11.25%;}
  94% {transform: scale(1, 1) translate(0, 0) rotateZ(-10deg); transform-origin: 65% 11.25%;}
  97% {transform: scale(1, 1) translate(0, 0) rotateZ(5deg); transform-origin: 65% 11.25%;}
  100% {transform: scale(1, 1) translate(0, 0) rotateZ(0deg); transform-origin: 65% 11.25%;}  
}

@keyframes earlobe-left-anim {
  0% {transform: scale(0, 0) translate(0, 0); transform-origin: 35% 11.25%;}
  43% {transform: scale(0, 0) translate(0, 0); transform-origin: 35% 11.25%;}
  45% {transform: scale(1.1, 1.1) translate(0, 0); transform-origin: 35% 11.25%;}
  49% {transform: scale(.95, .95) translate(0, 0); transform-origin: 35% 11.25%;}
  53% {transform: scale(1, 1) translate(0, 0); transform-origin: 35% 11.25%;}
  65% {transform: scale(1, 1) translate(0, 0) rotateZ(0deg); transform-origin: 35% 11.25%;}
  67% {transform: scale(1, 1) translate(6%, -3%) rotateZ(25deg); transform-origin: 35% 11.25%;}
  72% {transform: scale(1, 1) translate(6%, -3%) rotateZ(-25deg); transform-origin: 35% 11.25%;}
  75% {transform: scale(1, 1) translate(6%, -3%) rotateZ(-17deg); transform-origin: 35% 11.25%;}
  77% {transform: scale(1, 1) translate(6%, -3%) rotateZ(-20deg); transform-origin: 35% 11.25%;}
  90% {transform: scale(1, 1) translate(6%, -3%) rotateZ(-20deg); transform-origin: 35% 11.25%;}
  93% {transform: scale(1, 1) translate(0, 0) rotateZ(10deg); transform-origin: 35% 11.25%;}
  96% {transform: scale(1, 1) translate(0, 0) rotateZ(-5deg); transform-origin: 35% 11.25%;}
  100% {transform: scale(1, 1) translate(0, 0) rotateZ(0deg); transform-origin: 35% 11.25%;}  
}

#Earlobe-Left path {
    animation-name: earlobe-left-anim;
    animation-duration: 7000ms;
    animation-timing-function: ease-in-out;
}
#Earlobe-Right path {
    animation-name: earlobe-right-anim;
    animation-duration: 7000ms;
    animation-timing-function: ease-in-out;
}

#Eyes circle, #Eyes ellipse, #Eyes path {
    animation-name: eyes-anim;
    animation-duration: 7000ms;
    animation-timing-function: ease-in-out;
}
...