CSS3序列帧动画

本文详细介绍了CSS3的序列帧动画,包括animation属性的各个子属性,如animation-name、animation-timing-function等,并通过实例展示了如何使用steps()实现帧动画。还通过一个小女孩跑动的案例探讨了animation-direction、animation-play-state等属性的应用,帮助读者理解并掌握CSS3序列帧动画的实战技巧。
摘要由CSDN通过智能技术生成

注意:为代码看上去简洁,本文实例中都忽略了前缀,而在实际使用中需加上。

1. 前言

(1)背景

实践当中,很多复杂的动画,一般不要求我们用CSS3变形的方式画出来,而是采用一帧一帧连续播放静态的图片的方式形成动画。

(2)实例

例如让下面图片中的小女孩跑起来。
(图片出处:http://www.zcool.com.cn/work/ZMjE3OTQyMzY=.html,仅用于demo素材,不商用,如有侵权,请及时联系)

这里写图片描述

2. animation

(1) animation简介

内容参考 http://www.css88.com/book/css/properties/animation/index.htm

animation是个复合属性。检索或设置对象所应用的动画特效。如果提供多组属性值,以逗号进行分隔。

它有如下取值:

<' animation-name '>:检索或设置对象所应用的动画名称
<' animation-duration '>:检索或设置对象动画的持续时间
<' animation-timing-function '>:检索或设置对象动画的过渡类型
<' animation-delay '>:检索或设置对象动画延迟的时间
<' animation-iteration-count '>:检索或设置对象动画的循环次数
<' animation-direction '>:检索或设置对象动画在循环中是否反向运动
<' animation-fill-mode '>:检索或设置对象动画时间之外的状态
<' animation-play-state '>:检索或设置对象动画的状态。w3c正考虑是否将该属性移除,因为动画的状态可以通过其它的方式实现,比如重设样式

[1] animation-name

检索或设置对象所应用的动画名称,必须与规则@keyframes配合使用,因为动画名称由@keyframes定义

[2] animation-timing-function

linear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)
ease:平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)
ease-in:由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)
ease-out:由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)
ease-in-out:由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)
step-start:等同于 steps(1, start)
step-end:等同于 steps(1, end)
steps(<integer>[, [ start | end ] ]?):接受两个参数的步进函数。第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。
cubic-bezier(<number>, <number>, <number>, <number>):特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内

[3] animation-iteration-count

infinite: 无限循环
<number>: 指定对象动画的具体循环次数

[4] animation-direction

normal:正常方向
reverse:反方向运行
alternate:动画先正常运行再反方向运行,并持续交替运行
alternate-reverse:动画先反运行再正方向运行,并持续交替运行

[5] animation-fill-mode

即动画完成时,是显示动画开始的状态还是结束时的状态。

none:默认值。不设置对象动画之外的状态
forwards:设置对象状态为动画结束时的状态
backwards:设置对象状态为动画开始时的状态
both:设置对象状态为动画结束或开始的状态

这个地方需要特别注意的是,如果steps(1,end)这样的模式,按照下文所讲,100%处可以为空,不影响动画,但是如果animation-fill-mode设置为forwards时,动画完毕显示的是最后一帧就会出问题。这时需要设置最后两个区间为一样的效果。

[6] animation-play-state

running:运动
paused:暂停

(2) 帧动画

[1] 线性动画与帧动画对比

平时我们接触的是线性动画,例如:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset=
  • 14
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值