一次搞懂 CSS3 animation动画中forwards和both的区别

本文详细解释了CSS中animation-fill-mode属性的四种模式:none、forwards、backwards和both,通过实例展示了它们如何影响动画的起始和结束状态,尤其是在动画延迟执行的情况下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平时会用 animation 实现动画效果,之前一直没有留意 animation-fill-mode 中 forwards 和 both 动画的区别,今天自己动手实现了一下,终于搞懂了。
animation-fill-mode 属性可以接受 none | forwards | backwards | both 四个值中的一个,接下来分别简单介绍一下每个值的效果。

mode效果
none不改变默认行为
forwardsforwards当动画完成后,保持最后一帧的状态(也就是最后一个关键帧中定义的状态)
backwards在animation-delay指定动画延迟的一段时间内,元素保持为第一帧中的状态(也就是第一帧中所定义的状态)
both表示上面两者模式都被应用

在HTML中有如下代码:

<div class='circle'><div>

CSS属性:

.circle {
  width: 200px;
  height: 200px;
  border-radius: 50%;
  animation: move 3s linear 2s none;
}
@keyframes move {
  0% {
    transform: translateX(0);
    background: #000;
  }
  100% {
    transform: translateX(300px);
    background: red;
  }
}

最开始不设置 div 背景色,且延迟 1s 执行动画。将 animation 中 animation-fill-mode 属性分别设为 none | forwards | backwards | both ,可以得到如下效果:

mode效果
nonediv 最开始看不见,1s 后出现黑色圆形并向右移动300px,div颜色从黑色变成红色,之后又消失看不见
forwardsdiv 最开始看不见,1s 后出现黑色圆形并向右移动、颜色从黑色变成红色,之后停留在结束位置(最后一个关键帧中定义的状态)
backwardsdiv 最开始是黑色圆形(第一帧中所定义的状态),1s 后向右移动、颜色从黑色变成红色,之后消失看不见
bothdiv 最开始是黑色圆形(也就是第一帧中所定义的状态),1s 后向右移动、颜色从黑色变成红色,之后停留在结束位置(最后一个关键帧中定义的状态)

语言很苍白,所以新增了gif图
none:
在这里插入图片描述
forwards:
在这里插入图片描述
backwards:
在这里插入图片描述
both:
在这里插入图片描述

综上现象所述,如果动画无延迟,forwards 和 both 表现出来的效果是相同的;在有延迟的时候表现出来的效果才会不同,forwards 和 both 结束效果相同(停留在最后一个关键帧中定义的状态),开始时 both 会应用 backwards(第一帧定义的状态) 的效果。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值