我有一个可以在Firefox,Chrome上正常运行的动画,但在Safari和Edge上无效。 动画对象包含在用js加载的svg文件中。 这个想法是元素连续出现在屏幕的中心,然后向上移动到预期的最终位置。
我用来实现这个目的的一个例子是:
@-webkit-keyframes move-you {
0% {
opacity: 0;
-webkit-transform: translate(450px,400px);
transform: translate(450px,400px);
}
50% {
opacity: 1;
-webkit-transform: translate(450px,400px);
transform: translate(450px,400px);
}
100% {
opacity: 1;
-webkit-transform: translate(450px,222px);
transform: translate(450px,222px);
}
}
@keyframes move-you {
0% {
opacity: 0;
-webkit-transform: translate(450px,400px);
transform: translate(450px,400px);
}
50% {
opacity: 1;
-webkit-transform: translate(450px,400px);
transform: translate(450px,400px);
}
100% {
opacity: 1;
-webkit-transform: translate(450px,222px);
transform: translate(450px,222px);
}
}
.svgLoaded #you {
-webkit-animation: move-you 1s ease-in 3s;
animation: move-you 1s ease-in 3s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
因此,这在Firefox和Chrome上运行良好,但在Safari和Edge中不会发生翻译。如果使用大屏幕,因为一切仍然可见,这不是一个大问题, (you can see example here) 但这意味着我无法在小屏幕上将项目翻译到我想要的位置 我已经堆叠了这一天超过一天,我找到的唯一答案是关于缺少括号但我检查了我的代码并且所有括号都是平衡的。任何帮助都会非常感激。
答案 0 :(得分:1)
我认为这可能有用:
@-webkit-keyframes move-you {
0% {
opacity: 0;
-webkit-transform: translate(450px,400px);
}
50% {
opacity: 1;
-webkit-transform: translate(450px,400px);
}
100% {
opacity: 1;
-webkit-transform: translate(450px,222px);
}
}
@keyframes move-you {
0% {
opacity: 0;
transform: matrix(1,0,0, 1,0,0, 450, 400);
}
50% {
opacity: 1;
transform: translate(1,0,0, 1,0,0, 450, 400);
}
100% {
opacity: 1;
transform: translate(1,0,0, 1,0,0, 450, 222);
}
}
.svgLoaded #you {
-webkit-animation: move-you 1s ease-in 3s;
animation: move-you 1s ease-in 3s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
答案 1 :(得分:0)
在不同的浏览器上制作SVG动画存在很多问题。他们都工作不同。
以下是使用SVG创建一致动画的一些问题:
我发现使用像TweenMax这样的库可以很好地与几乎所有的浏览器一起工作。 当然,有一些特定的方法可以为某些属性设置动画,以便它们可以在IE 11上运行。其中很少有: - 圆半径 - 过渡
您可以在css-tricks中查看该工具的提示和技巧: