当前位置: 首页 > 知识库问答 >
问题:

SVG动画在Safari/IE中无法工作

爱炯
2023-03-14

我有一个SVG线条动画绘制文本,但它似乎不能在Safari或Internet Explorer上工作。是不是我漏了什么?

http://codepen.io/anon/pen/vygdzv

CSS

svg path {
  fill: none;
  stroke: #000;
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 1700;
  stroke-dashoffset: 1700;
  animation: dash 5s ease-out forwards;
   -webkit-animation-name:dash;
  -webkit-animation-duration:5s;
  -webkit-animation-timing-function:ease-out;
  -webkit-animation-fill-mode:forwards;
 -moz-animation: dash 5s ease-out forwards;
  -o-animation: dash 5s ease-out forwards;
  -ms-animation: dash 5s ease-out forwards;

}

@keyframes dash {
  to {
    stroke-dashoffset: 0;
  }
}

@-moz-keyframes dash {
  to {
    stroke-dashoffset: 0;
  }
}

@-webkit-keyframes dash {
  to {
    stroke-dashoffset: 0;
  }
}

@-o-keyframes dash {
  to {
    stroke-dashoffset: 0;
  }
}

@-ms-keyframes dash {
  to {
    stroke-dashoffset: 0;
  }
}

共有1个答案

穆招
2023-03-14

CSS动画、转换、转换(以及JS中的classlistdataset)在IE11及更早版本中不起作用。过渡/动画问题刚刚在Edge引擎中得到了解决(classlist),但是对于IE11和更早的版本,唯一的解决方案是使用JS(SMIL动画也不起作用,另外Chrome可能也会删除SMIL-更新:SMIL即将退出,不要使用它!)。

这是一个你可以如何做的例子:

var p = document.querySelector('.animate'), 
    offset = 1000;

var offsetMe = function() {
  if(offset < 0) offset = 1000;
  p.style.strokeDashoffset = offset;
  offset--;
  
  requestAnimationFrame(offsetMe);
}

offsetMe();
@keyframes fadeInP {
  to {
    stroke-dashoffset: 0;
  }
}
.animate {
  stroke-dashoffset: 1000;
  /*animation: fadeInP 10s linear infinite;*/
}

/*
CSS animations don't work for this in IE and neither do SMIL animations.
*/
<svg viewBox="0 0 400 400">
 <path stroke-width='8' class="animate" stroke-dasharray="10 10" fill='none' stroke="#000" d="M 0,0 C 100,10 200,80 300,15 " />
</svg>
 类似资料:
  • 我创建了一个简单的动画来使用webkit属性和CSS3在网站上旋转图像。 这里是样式css(它只适用于div) 现在的结果是,在Mozilla Firefox,Chrome和Safari上,它都能正常工作,但在Opera和Internet explorer上我看不到任何动画。

  • 我做了一个动画为一些元素(图像和按钮)淡入淡出使用不透明度。除了Safari之外,它在所有浏览器上都能完美地工作。当我尝试在Safari中运行它时,我的所有元素都有100%的不透明度,没有任何动画可以看到… 来自button元素的示例: 以下是我的HTML: 和我的CSS:

  • 我正在工作的HTML5横幅有很多CSS3动画。为了制作可重用的关键帧动画,我在单个元素上使用了多个动画。除了Safari之外一切都很顺利。 CSS: jsfiddle链接 可行的解决方案: 用另一个/更多元素包装该元素&为每个元素添加单个动画。此解决方案需要为包装器元素设置额外的样式。 将多个动画合并为一个&此解决方案增加了的复杂性,并且对于复杂的动画不容易维护。 根据另一个stackOverfl

  • 我使用&过滤器和标记创建了一个Porter-Duff Out(knockout)效果,它在底部的叶子形状层上切出一个圆形孔。 我在Chrome中的一切都运行良好,但在Firefox和Safari中发现了不同的行为。 Firefox根本不会呈现过滤后的元素,从我的在线搜索来看,原因似乎是Firefox不支持feImage标记中的支离破碎的svg元素。然而,即使我尝试用1)到实际svg文件的完整链接和

  • 我有一个svg,它有两条路径,一条对角线和一个小圆。它们的笔画颜色引用了defs中的linearGradient。在Chrome,Firefox和Safari上,小圆圈呈现。但是在Edge和IE 11上,小圆圈并没有将url路径连接到线性渐变的id上,如果我将它的stroke属性更改为颜色,那么它就会呈现,但是我想使用url值。 这里也有代码接口链接

  • 我正在使用Xcode在swift中制作一个应用程序,并且我在某些按钮的动画方面遇到了问题。这是我的情况: 我在屏幕中间有三个按钮,在那里我还添加了一些限制。 我需要的是,当点击按钮时,它会到达屏幕的顶部,如第二张带有动画的照片: 我试过这个: 但发生的情况是按钮从屏幕底部出现向上滑动到第一张照片的位置。它不尊重我在动画中写的位置。这可能是由于约束吗?因为我将其垂直和水平居中。 你能帮我把它弄好吗?