【问题标题】:Opacity from 0 to 1 animation not working on Firefox从 0 到 1 动画的不透明度在 Firefox 上不起作用
【发布时间】:2017-07-25 05:24:11
【问题描述】:

正如标题所说,该动画不适用于 Firefox。

几秒钟后,我通过 JavaScript 运行此动画:

document.getElementById('my_id').style.webkitAnimationPlayState = "running";

我也试过了:

style.animationPlayState 

在同一个文件中,更改背景颜色动画效果很好。 我的结论是,Firefox 的不透明度有问题吗?

#my_id {
  opacity: 0;
  animation: animation 1s;
  animation-fill-mode: forwards;
  animation-play-state: paused;
  -webkit-animation: animation 1s;
  -webkit-animation-fill-mode: forwards;
  -webkit-animation-play-state: paused;
  -moz-animation: animation 1s;
  -moz-animation-fill-mode: forwards;
  -moz-animation-play-state: paused;
}
@keyframes animation {
  0% {opacity: 0;}
  50% {opacity: 1;}
  100% {opacity: 0.2;}
}

上面的 CSS 来自我想要动画的元素。

【问题讨论】:

  • 您没有右大括号 (}),您的 -webkit-animation 属性具有 1ss 而不是 1s。此外,您应该切换 CSS 类以引发 CSS 动画,而不是使用 JS 设置 CSS 属性本身。
  • 你知道你错过了一个结局}我猜?
  • 是的,我无法复制我的代码。这不是问题。
  • 你运行的是哪个版本的火狐?
  • 51.0.1(32 位)

标签: javascript css firefox animation opacity


【解决方案1】:

不要使用 JavaScript 添加-webkit-animation-play-state,只需使用包含所有浏览器前缀的onload 将一个类添加到您的#my_id div

JavaScript

window.onload = function() {
  document.getElementById("my_id").className += "running";
}

CSS

#my_id.running {
  -webkit-animation-play-state: running;
  -moz-animation-play-state: running;
  animation-play-state: running;
}

上面的代码将.running 类添加到您的#my_id 元素中,它声明了animation-play-state: running,包括浏览器前缀。您可以通过查看我的使用您的代码的example 来测试上面的代码。我已经对其进行了测试,它适用于 Firefox (51)、Chrome、Opera 和 Safari。

【讨论】:

  • 显然我只是使用onload 为例。您可以将语句更改为在运行 function 之前等待几秒钟。
  • 嗯,终于开始起作用了。这个和以前的解决方案现在都很好。但还有另一个问题。当我尝试放置 SVG 图像时无法正常工作。 <svg id="svg_id" viewBox=" 5 -200 1000 1000"> <image id="my_id" xlink:href="L_1_1.png"/></svg> 这个仅适用于 Chrome 上的第一个解决方案,而您的解决方案根本不起作用。我的 svg 包含有问题吗?
猜你喜欢
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 2020-05-27
  • 2014-11-02
  • 1970-01-01
  • 2013-07-08
  • 2012-11-04
相关资源
最近更新 更多