1.3.1 Animation 属性介绍1)animation-name:名称
none
:无动画(默认
)
String
:动画名称
Time
:秒或毫秒(默认0
)
ease
:逐渐变慢,等同于cubic-bezier(.25,.1,.25,1)
(默认
)
linear
:匀速,等同于cubic-bezier(0,0,1,1)
ease-in
:加速,等同于cubic-bezier(.42,0,1,1)
ease-out
:减速,等同于cubic-bezier(0,0,.58,1)
ease-in-out
:先加速后减速,等同于cubic-bezier(.42,0,.58,1)
cubic-bezier
:贝塞尔曲线,(x1,y1,x2,y2)
四个值指定于曲线上的点P1
和P2
,所有值需在[0,1]
区域内
steps([,[start|end]]?)
:把动画平均划分成n等分
, 直到平均走完该动画
step-start
:等同于steps(1,start)
,把动画分成一步,动画执行时以左侧端点0%
为开始
step-end
:等同于steps(1,end)
,把动画分成一步,动画执行时以右侧端点100%
为开始
Time
:秒或毫秒(默认0
)
Number
:数值(默认1
)
infinite
:无限次
normal
:正常播放(默认
)
alternate
:轮流反向播放 , 奇数次数正常播放,偶数次数反向播放
running
:正在播放(默认
)
paused
:暂停播放
none
:不改变默认行为(默认
)
backwards
:在时延所指定时间内或在动画开始前应用开始属性(在第一个关键帧中定义
)
forwards
:在动画结束后保持最后一个属性(在最后一个关键帧中定义
)
both
:向前和向后填充模式都被应用
animation
和@keyframes
声明 。逐帧动画的声明较为简单 , 使用一张逐帧长图然后配合animation-timing-function: steps()
来完成 。逐帧动画的声明步骤一般如下:
- 准备一张
逐帧长图
,该图像包含动画效果的每一帧且每帧宽高必须一致
- 在
steps()
里声明逐帧长图及其展示方式
- 在指定节点中声明
animation
调用动画
- 在
@keyframes
里声明动画名称和动画每个关键帧的状态
- 在指定节点中声明
animation
调用动画
@keyframes animation-name {from {}to {}}/* 或 */@keyframes animation-name {p1 {}p2 {}p3 {}}
关键帧的取值必须是 from
、 to
或Percentage
。from
可用0%
代替 , to
可用 100%
代替,若开始或结束的关键帧无对应的状态,可不用声明 from
或to
。0%
的%
不能省略,否则关键帧解析会失败 。通过animation-fill-mode
属性设置动画结束后的样式 。1.3.2 Animation 动画实践1)自动打字器
很多在线编辑器网站都有一些自动打字的效果,例如CodePen 。很多同学都以为是JS实现的效果,其实查看
Chrome Devtools
发现是纯CSS实现的 。观察多几次自动打字器,可发现其存在以下特点 。- 字体都是等宽字体,等宽字体可保证每次打字时光标的移动距离都是一致的
- 打字器的宽度由最初的
0px
逐渐增加内容后变成最终固定字数的宽度,宽度以等宽字体的个数为准
- 光标随着每打一个字就闪烁一次,打字速度均匀 , 打字完毕再次重复打字
推荐阅读
- 为什么CSS中的calc函数可能会不生效?
- day03-CSS
- 二 Three光线检测-实现摄像机向鼠标点击位置滑动动画
- React动画实现方案之 Framer Motion,让你的页面“自己”动起来
- CSS 渐变锯齿消失术
- 前端开发日常——CSS动画无限轮播
- Vue3 JS 与 SCSS 变量相互使用
- 超强的纯 CSS 鼠标点击拖拽效果
- 迪士尼所有卡通人物 迪士尼所有人物大全
- 前端三件套 HTML+CSS+JS基础知识内容笔记