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

多个关键帧动画在safari中不工作

昝光临
2023-03-14

我正在工作的HTML5横幅有很多CSS3动画。为了制作可重用的关键帧动画,我在单个元素上使用了多个动画。除了Safari之外一切都很顺利。

CSS:

.text1 {
    -webkit-animation: fadeOutRight 1s 3s forwards;
    animation: fadeOutRight 1s 3s forwards;
}
.text2 {
    -webkit-animation: fadeInLeft 1s 4s both, fadeOutRight 1s 7s forwards;
    animation: fadeInLeft 1s 4s both, fadeOutRight 1s 7s forwards;
}
.text3 {
    -webkit-animation: fadeInLeft 1s 8s both;
    animation: fadeInLeft 1s 8s both;
}

/* fadeInLeft */
@-webkit-keyframes fadeInLeft {
    0% { -webkit-transform: translateX(-100px); opacity: 0; }
    100% { -webkit-transform: translateX(0px); opacity: 1; }
}
@keyframes fadeInLeft {
    0% { transform: translateX(-100px); opacity: 0; }
    100% { transform: translateX(0px); opacity: 1; }
}

/* fadeOutRight */
@-webkit-keyframes fadeOutRight {
    0% { -webkit-transform: translateX(0px); opacity: 1; }
    100% { -webkit-transform: translateX(100px); opacity: 0; }
}
@keyframes fadeOutRight {
    0% { transform: translateX(0px); opacity: 1; }
    100% { transform: translateX(100px); opacity: 0; }
}

jsfiddle链接

可行的解决方案:

  1. 用另一个/更多元素包装该元素&为每个元素添加单个动画。此解决方案需要为包装器元素设置额外的样式。
  2. 将多个动画合并为一个&此解决方案增加了关键帧规则的复杂性,并且对于复杂的动画不容易维护。
  3. 根据另一个stackOverflow后的公认答案-您不能对同一元素上的同一属性进行多次动画,最后一个将覆盖其他。只有在我的例子中,safari才是真的&第一个动画只运行,而不是第二个。如果我没有在多个动画中动画相同的属性,那么对于safari(jsfiddle)也是很好的。这个不适合我,因为我将需要在多个动画中动画相同的属性。

注:

虽然我在同一个元素上使用了多个动画,但我不是同时动画,每个动画之间有延迟。

问题:

是否可以在同一元素上使用多个CSS3动画而不考虑动画属性?

共有1个答案

拓拔骁
2023-03-14

出于某种原因,Safari没有通过描述动画的速记方法阅读,例如:

animation: test 1s 2s 3 alternate backwards

需要对其进行更详细的描述,并列出其单独的属性:

.class{
animation-name: bounce;
animation-duration: 4s;
animation-iteration-count: 10;
animation-direction: alternate;
animation-timing-function: ease-out;
animation-fill-mode: forwards;
animation-delay: 2s;
}
 类似资料:
  • 我做了一个动画为一些元素(图像和按钮)淡入淡出使用不透明度。除了Safari之外,它在所有浏览器上都能完美地工作。当我尝试在Safari中运行它时,我的所有元素都有100%的不透明度,没有任何动画可以看到… 来自button元素的示例: 以下是我的HTML: 和我的CSS:

  • 本文向大家介绍什么是关键帧动画?相关面试题,主要包含被问及什么是关键帧动画?时的应答技巧和注意事项,需要的朋友参考一下 表示关键状态的帧动画叫做关键帧动画。 所谓关键帧动画,就是给需要动画效果的属性,准备一组与时间相关的值,这些值都是在动画序列中比较关键的帧中提取出来的,而其他时间帧中的值,可以用这些关键值,采用特定的插值方法计算得到,从而达到比较流畅的动画效果。

  • 我有一个SVG线条动画绘制文本,但它似乎不能在Safari或Internet Explorer上工作。是不是我漏了什么? http://codepen.io/anon/pen/vygdzv CSS

  • 问题内容: 我有以下代码: 执行javascript函数后,动画会停止,但会突然停止。 我可以平稳地停止动画,以避免突然跳入,然后从停止的位置再次继续动画吗? 问题答案: 您不会喜欢这个答案,但现实是CSS3动画对于实现此目的并不是真正有用。为了完成这项工作,您需要在Javascript中复制很多CSS,这会破坏点(例如,在此密切相关的答案中,例如,[更改动画CSS3的速度?)。要真正使它平稳停止

  • 问题内容: 我有一段非常基本的HTML,其目的是使动画从变为不透明,从0变为1。 我使用的是Chrome浏览器,该浏览器使用前缀作为首选项,并进行了过渡设置以使动画成为可能。但是,它不起作用,只是在不褪色的情况下进行了更改。 我有一个JSFiddle 。 问题答案: 如果您正在使用,则应使用而不是。 请参见下面的代码段: 2016年更新的答案 为了反映当今的最佳做法,我将使用过渡而不是动画。这是更

  • 帧动画模块可以将一系列BK.TextureInfo对象进行播放,构成动画效果。 父类:BK.Sprite 构造函数 BK.AnimationSprite(textureInfoArray) 通过textureInfoArray数组创建一个帧动画对象 手Q版本:7.6.3 textureInfoArray: 参数名 类型 textureInfoArray Array BK.TextureInfo可以