CSS动画在Chrome和Safari中有效,但在Firefox和IE中无效。

3

我在我的网页上使用了一种动画效果。它可以在Chrome和Safari(webkit浏览器)上正常工作,但在Firefox(moz)和Internet Explorer上无法正常工作。 我不知道原因,但这是我的代码:

#Area {
   -webkit-animation: WriteText 2s;
   -moz-animation: WriteText 2s;
   animation: WriteText 2s;
}

@-webkit-keyframes WriteText {
   0%   { background: #fff url('../media/header/header00.jpg'); background-size: 1000px 263px; opacity: 1; }
   5%   { background: #fff url('../media/header/header01.jpg'); background-size: 1000px 263px; opacity: 1;  }
........
   100% { background: #fff url('../media/header/header.jpg'); background-size: 1000px 263px; opacity: 1; }
}

@-moz-keyframes WriteText {
   0%   { background: #fff url('../media/header/header00.jpg'); background-size: 1000px 263px; opacity: 1; }
   5%   { background: #fff url('../media/header/header01.jpg'); background-size: 1000px 263px; opacity: 1;  }
........
   100% { background: #fff url('../media/header/header.jpg'); background-size: 1000px 263px; opacity: 1; }
}

@keyframes WriteText {
   0%   { background: #fff url('../media/header/header00.jpg'); background-size: 1000px 263px; opacity: 1; }
   5%   { background: #fff url('../media/header/header01.jpg'); background-size: 1000px 263px; opacity: 1;  }
........
   100% { background: #fff url('../media/header/header.jpg'); background-size: 1000px 263px; opacity: 1; }
}

除CSS以外的其他事项在每个浏览器中都能正常工作,浏览器特定部分的内容对于动画来说是相同的,所以我不知道为什么它不起作用。

我已经尝试写成这样:

#Area {
   -webkit-animation-name: WriteText;
   -webkit-animation-duration: 2s;
   -moz-animation-name: WriteText;
   -moz-animation-duration: 2s;
   animation-name: WriteText;
   animation-duration: 2s;
}

但这对我没有帮助。

请问您能否创建一个带有工作图像的fiddle吗?关键帧动画只适用于ie9以上版本。 - Huangism
在http://manuelweitzel.de/上,您可以看到动画 - 它在Chrome和Safari中运行。错误代码是针对另一个功能的,与动画无关。 - Manuel Weitzel
抱歉 - 现在应该可以了:http://manuelweitzel.de/test/ - Manuel Weitzel
它适用于Chrome、Safari和Opera,但不适用于Firefox和IE——有人有想法吗? - Manuel Weitzel
1个回答

0

从您提供的链接中查看CSS文件,您在-moz-animation-name和-moz-animation-duration后面缺少分号:

#NavigationArea .ImgAni {
position: relative;
width: 1000px;
height: 263px;
background: #E0FFFF url('../media/header/header.jpg');
opacity: 1;
background-size: 1000px 263px;
-webkit-animation-name:WriteText;
-webkit-animation-delay: 1s;
-webkit-animation-duration: 3s;
-moz-animation-name: WriteText /* missing semicolon here */
-moz-animation-delay:  1s;
-moz-animation-duration: 3s /* missing semicolon here */
animation-name:WriteText;
animation-delay: 1s;
animation-duration: 3s;
}

这会导致非 Webkit 浏览器无法识别动画名称。尝试添加这些分号并报告结果。或者你可以完全删除那些具有 moz 前缀的动画行,因为它们是唯一缺少分号的行,而 Firefox 甚至不使用它们。只需使用 -webkit-animation 和 animation。


谢谢你的回答 - 我加了分号,但还是不行。还有其他想法吗?我先把moz-aimation的东西去掉了,但还是不行。 - Manuel Weitzel
就像我说的那样,没有使用带有moz前缀的动画行是无法运行的,而且在加上分号后也无效。但是“moz-linear-gradient”行是有效的,如果我删除这个moz-linear-gradient,它也不会起作用,因此看起来Firefox没有使用webkit,而是使用了moz前缀。 - Manuel Weitzel
Firefox在某些CSS规则上使用-moz前缀,但它只使用未加前缀的动画规则。无论如何,我进行了一些挖掘,这里说背景图片不能按照规范进行缓动处理,只有Webkit浏览器才具备该功能。你可以尝试他建议的方法,将所有这些图像堆叠在一起,并使用不透明度进行动画处理,或者你可能想要采用jQuery路线。 - Scott Blinch
这里有一个jsfiddle,它使用jquery来动画化背景图片。你需要进行一些重大调整才能使其适用于你的情况(它最初是用于淡入淡出图片,而不是立即切换图片),但如果你决定使用jquery,它可能是一个很好的起点。 - Scott Blinch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接