记录-一个栗子让你彻底弄懂CSS3补间动画和逐帧动画
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助
CSS3提供了Animation关键帧动画,我们在工作中比较常用。但在写CSS动画的时候,其实Animation能实现两种动画模式:
补间动画
设置关键帧的初始状态,然后在另一个关键帧改变这个状态,比如大小、颜色、位置、透明度等,电脑将自动根据二者之间帧的值创建的动画。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box{
width:120px;
height:63px;
background-color: antiquewhite;
/* animation: an1 2s linear 1; */
/* 关键帧动画名称 */
animation-name: an1;
/* 一个动画周期的时长 */
animation-duration:2s;
/* 关键帧的 缓动函数 关键就在这里. 我们常用的有linear匀速 ease-in慢速开始 */
animation-timing-function: linear;
/* 动画执行次数 */
animation-iteration-count: 1;
}
@keyframes an1{
/* 这里定义了三个关键帧. */
/* 第1帧和第2帧之间的中间效果由电脑计算后自动补全. */
/* 第2帧和第3帧之间的中间效果由电脑计算后自动补全. */
/* 这就是一个补间动画 */
0%{
transform: translateX(0px);
}
50%{
transform: translateX(100px);
}
100%{
transform: translateX(500px);
}
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
执行效果:
逐帧动画
逐帧动画没有补间效果的,它不是电脑根据初始和结束状态的差异自动生成中间的过渡帧,而是每一帧都是关键帧,需要自己定义每一帧的状态。在Animation动画里面通过设置 animation-timing-function:step(number)来实现的。
比如下图(178 x 1122)里面有6只乌龟,实际上一只乌龟的游泳动作帧.。每张图连起来播放就是一只游泳的乌龟:
如果用补间动画通过改变图片的位置实现就是下面的效果:
用逐帧动画实现代码效果如下:
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.tortoise{
width:178px;
height:187px;
background: url(./t.png) no-repeat;
/* animation: an1 2s linear 1; */
/* 关键帧动画名称 */
animation-name: ani2;
/* 一个动画周期的时长 */
animation-duration:2s;
/* 关键帧的 缓动函数 关键就在这里.*/
/* 这里用step(6) 表示动画不是连续执行,而是间断地分成6段显示 因为我们的乌龟是6个动作.
如果是其它动画以此类推,分为几段关键帧显示.
*/
animation-timing-function: steps(6);
/* 动画执行次数 */
animation-iteration-count: 1;
}
@keyframes ani2{
/* 背景图片的Y轴位置变化.*/
0%{
background-position:0px 0px;
}
100%{
background-position:0px -1122px;
}
}
</style>
</head>
<body>
<div class="tortoise"></div>
</body>
</html>
本文转载于:
https://juejin.cn/post/7218090232188698681
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

记录-一个栗子让你彻底弄懂CSS3补间动画和逐帧动画的更多相关文章
- 使用node.js开发一个生成逐帧动画小工具
在实际工作中我们已经下下来不下于一万个npm包了,像我们熟悉的 vue-cli,react-native-cli 等,只需要输入简单的命令 vue init webpack project,即可快速帮 ...
- 彻底弄懂css3的flex弹性盒模型
由于在日常工作中使用css或者bootstrap的栅格系统已经能很好的满足业务需求,所以一直以来对css3的弹性布局不是很感冒. 近日有幸在一篇文章中领略了flex的魅力--简洁优雅.随试之. /*容 ...
- Android中实现一个简单的逐帧动画(附代码下载)
场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 ...
- 一个栗子上手CSS3动画
最近杂七杂八的事情很多,很多知识都没来得及总结,是时候总结总结,开启新的篇章- 本篇文章不一一列举CSS3动画的属性,若需要了解API,可前往MDN 在开始栗子前,我们先补补基础知识. css3动画分 ...
- Android Studio精彩案例(六)《使用一个Demo涵盖补间动画所有知识》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 元旦假期里,闲的无事,看到美团加载数据的动画,就突想写个Demo把动画知识集成一下.后来想了想,还是直接用一个Demo来把所有动画知识 ...
- SQL Server-聚焦NOLOCK、UPDLOCK、HOLDLOCK、READPAST你弄懂多少?(三十四)
前言 时间流逝比较快,博主也在快马加鞭学习SQL Server,下班回来再晚也不忘记更新下博客,时间挤挤总会有的,现在的努力求的是未来所谓的安稳,每学一门为的是深度而不是广度,求的是知识自成体系而不是 ...
- 彻底弄懂 Unicode 编码
彻底弄懂 Unicode 编码 今天,在学习 Node.js 中的 Buffer 对象时,注意到它的 alloc 和 from 方法会默认用 UTF-8 编码,在数组中每位对应 1 字节的十六进制数. ...
- [转帖]彻底弄懂UTF-8、Unicode、宽字符、locale
彻底弄懂UTF-8.Unicode.宽字符.locale linux后端开发 已关注 彻底弄懂UTF-.Unicode.宽字符.locale unicode 是字符集 utf-8是编码格式.. ...
- 一篇文章让你彻底弄懂SSL/TLS协议
目录 SSL/TLS的应用 TLS协议的架构 握手协议 主密码和预备主密码 TLS记录协议 一篇文章让你彻底弄懂SSL/TLS协议 SSL/TLS是一种密码通信框架,他是世界上使用最广泛的密码通信方法 ...
- 一文带你弄懂 JVM 三色标记算法!
大家好,我是树哥. 最近和一个朋友聊天,他问了我 JVM 的三色标记算法.我脑袋一愣发现竟然完全不知道!于是我带着疑问去网上看了几天的资料,终于搞清楚啥事三色标记算法,它是用来干嘛的,以及它和 CMS ...
随机推荐
- 了解一下基本的http代理配置
我们首先用一个简单例子了解一下基本的http代理配置 worker_processes 1; #nginx worker 数量 error_log logs/error.log; #指定错误日志文件路 ...
- JS script脚本async和defer的区别
壹 ❀ 引 我在 google recaptcha 谷歌人机身份验证使用教程 一文中有引用这样一段外部资源代码,如下: <script src="https://www.google. ...
- 如何用低代码实现批量导出PDF?
前言 事情是这样的,熟悉我们的朋友都知道,我司有一个为广大开发者朋友们提供学习帮助的地方,叫做新手训练营,具体的内容就是会针对初次接触葡萄城产品和技术的用户,通过 2-3 天的集中学习,采用直播授课的 ...
- CF1833G Ksyusha and Chinchilla
题目链接 题解 知识点:贪心,树形dp. 当 \(3 \not \mid n\) 时,显然无解. 考虑一种贪心策略,从叶子节点往上只,要以当前节点为根的子树大小能被 \(3\) 整除,就立刻切除这棵子 ...
- NC16666 [NOIP2006]开心的金明
题目链接 题目 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只 ...
- 【Unity3D】人机交互Input
1 前言 Input 是 Unity3D 中用于人机交互的工具类,用户可以调用其 GetKey.GetMousePosition.GetMouseButton.GetAxis.GetButton ...
- Swoole从入门到入土(25)——多进程[进程间无锁计数器]
Atomic 是 Swoole 底层提供的原子计数操作类,可以方便整数的无锁原子增减.原子计数器有如下特点: - 使用共享内存,可以在不同的进程之间操作计数 - 基于 gcc/clang 提供的 CP ...
- Java控制语句
1.介绍 从本质上讲,程序是一系列指令.控制结构是可以改变我们如何执行这些指令的代码块. 在本教程中,我们将探讨Java中的控制结构. 有三种控制结构: 条件分支,用于在两条或多条路径之间进行选择.J ...
- Golang gRPC学习(05): retry重试
什么是重试 如果服务出现了错误,主要是网络,服务器出现了短暂异常的时候,该怎么办? 我们都会人工或者自动的重新连接服务试试,看服务是否恢复可用了. 这种重新进行连接服务的一种方式就是重试.如果是在微服 ...
- 协程与yield表达式
在函数内,yield语句可以作为表达式使用,出现在赋值运算符的右边,例如: def receiver(): print("Ready to receive") while True ...
