css3的帧动画
概述
前几天刚好看到一个用了CSS3帧动画的页面,对它非常感兴趣,就研究了一下,记录在下面,供以后开发时参考,相信对其他人也有用。
PS:以后别人问我用过什么CSS3属性的时候,我也可以不用说常见的animation,transform这些了,我可以说帧动画这个高大上的术语了哈哈。
本篇文章参考了:CSS3 animation的steps方式过渡,CSS遮罩mask。
帧动画
帧动画其实就是CSS3中animation中的steps。它能够把静态图片处理为动态图片。原理是不断地切换图片,从而让图片“动”起来。
下面我通过2个示例来进行说明。
兔斯基
你可以从我的博客左上方的公告下面那个会动的兔斯基看到这个示例。(暂不支持移动端)(这个兔斯基不是gif!!!)
它的代码如下:
/* 兔斯基帧动画 */
@-webkit-keyframes rabbit {
0% {background-position:0px -0%;}
100% {background-position:0px -400%;}
}
@keyframes rabbit {
0% {background-position:0px -0%;}
100% {background-position:0px -400%;}
}
div.myRabbit {
height:35px;width:32px;
-webkit-animation:rabbit 400ms steps(4) infinite;
animation:rabbit 400ms steps(4) infinite;
background:url(http://images.cnblogs.com/cnblogs_com/yangzhou33/1158868/o_%e5%85%94%e6%96%af%e5%9f%ba%e6%8f%89%e8%84%b8.png);
}
其中rabbit是一个动画,整个过程和一般的animation定义动画没什么区别,除了animation里面用了一个steps(4),它的意思是把动画0%-100%这个过程分为4段来播放。
有以下三点需要说明:
- 本来这个用steps(4)的地方是用linear的,linear表示整个动画过程是平滑的,而用steps(4)表示整个动画过程分为4帧,不是平滑的。
- steps(4)还可以接受第二个参数,值是step-start或step-end,前者表示第一帧是从
0px -0%开始的,然后逐渐递增;后者表示第一帧是从0px -100%开始的,然后逐渐递增。详细的可以参考:深入理解CSS3 Animation 帧动画。 - steps(4)是对每一段动画而言的,如果有一个2段的动画,那么每一段将会分为4帧。于是我们可以把上面的代码改为如下。(这个时候就是steps(2)了)
/* 兔斯基帧动画 */
@-webkit-keyframes rabbit {
0% {background-position:0px -0%;}
50% {background-position:0px -200%;}
100% {background-position:0px -400%;}
}
@keyframes rabbit {
0% {background-position:0px -0%;}
50% {background-position:0px -200%;}
100% {background-position:0px -400%;}
}
div.myRabbit {
height:35px;width:32px;
-webkit-animation:rabbit 400ms steps(2) infinite;
animation:rabbit 400ms steps(2) infinite;
background:url(http://images.cnblogs.com/cnblogs_com/yangzhou33/1158868/o_%e5%85%94%e6%96%af%e5%9f%ba%e6%8f%89%e8%84%b8.png);
}
泼墨效果
每次打开我的博客或者打开我的博客的文章都会有一个“泼墨”的效果(暂不支持移动端),这里也用到了帧动画,代码如下。
/* 泼墨帧动画 */
@-webkit-keyframes masky {
0% {
mask-position: 0 0;
-webkit-mask-position: 0 0;
}
100% {
mask-position: 100% 0;
-webkit-mask-position: 100% 0;
}
}
@keyframes masky {
0% {
mask-position: 0 0;
-webkit-mask-position: 0 0;
}
100% {
mask-position: 100% 0;
-webkit-mask-position: 100% 0;
}
}
div#home{
-webkit-mask: url(http://images.cnblogs.com/cnblogs_com/yangzhou33/1158868/o_masky.png);
mask: url(http://images.cnblogs.com/cnblogs_com/yangzhou33/1158868/o_masky.png);
-webkit-mask-size: 4000% 100%;
mask-size: 4000% 100%;
-webkit-animation:masky 1s steps(39) forwards;
animation:masky 1s steps(39) forwards;
}
原理和兔斯基大致相同。但有几点需要说明:
- 里面用到了mask属性,这个是css3的遮罩属性。
- css3的遮罩属性mask必须写在整个包含块里面,比如我就写在了home里面。不能建立一个position为absolute/fixed的遮罩层来专门放它!
css3的帧动画的更多相关文章
- css3逐帧动画
写css3动画的时候,我们经常用到animation来实现,默认情况下,animation是属于连贯性的ease动画.我们熟悉的animation动画有ease.ease-in.ease-out.li ...
- 深入理解CSS3 Animation 帧动画
CSS3我在5年之前就有用了,包括公司项目都一直在很前沿的技术. 最近在写慕课网的七夕主题,用了大量的CSS3动画,但是真的沉淀下来仔细的去深入CSS3动画的各个属性发现还是很深的,这里就写下关于帧动 ...
- 深入理解CSS3 Animation 帧动画 ( steps )
作者:Aaron的博客 网址:http://www.cnblogs.com/aaronjs/p/4642015.html --------------------------------------- ...
- 深入理解CSS3 Animation 帧动画(转)
CSS3我在5年之前就有用了,包括公司项目都一直在很前沿的技术. 最近在写慕课网的七夕主题,用了大量的CSS3动画,但是真的沉淀下来仔细的去深入CSS3动画的各个属性发现还是很深的,这里就写下关于帧动 ...
- CSS3 Animation 帧动画 steps()
@keyframes fn{ 0%{} 100%{} } CSS3的Animation有八个属性 animation-name :动画名 fn animation-duration:时间 1s ani ...
- css3 animation实现逐帧动画
css3里面的animation属性非常强大,但是自己用的比较少,最近有次面试就刚好被问到了,趁现在有时间就对animation做一个小总结.同时实现一个逐帧动画的demo作为练习 animation ...
- css3-逐帧动画
time,这里有两个时间,前面一个是规定完成这个动画所需要的时间,全称叫animation-duration,第二个time为动画延迟开始播放的时间,全称叫animation-delay,这两个数值可 ...
- CSS3的自定义动画帧
CSS3新增的动画帧非常绚丽,可以简单实现一些动画效果,目前除IE外各大主流浏览器都支持 本文演示三个:transform: scale3d(x, y, z)-缩放;.transform: trans ...
- css3 实现逐帧动画
css3 实现逐帧动画 实现逐帧动画需要使用到的是Animation动画,该CSS3的Animation有八个属性:分别是如下:1: animation-name2: animation-durati ...
随机推荐
- Everything的简单使用
1.Everythings下载地址: http://www.voidtools.com/ 下载完后直接解压,运行everything.exe即可打开使用: 2.基本设置 (1)去除不需要搜索的文件夹: ...
- C# 编码标准(一)
一直想写一个自己用的代码标准,经过一段时间的优秀开源源码的观察和看其他人写的标准,感觉好的代码给人感觉就是舒服,也非常重要.所以把它们记录归纳总结,以备以后忘记,另外平时写代码的时候可以拿来参考下.下 ...
- Redis集群的主从切换研究
目录 目录 1 1. 前言 1 2. slave发起选举 2 3. master响应选举 5 4. 选举示例 5 5. 哈希槽传播方式 6 6. 一次主从切换记录1 6 6.1. 相关参数 6 6.2 ...
- Linux磁盘满问题分析
线上一台Linux服务器最近经常磁盘根分区满告警,但不是普通的日志文件或数据文件过多过大,现象如下: 1)执行“df -h”查看各分区空间的使用情况[root@XEN64 /]# df -hFiles ...
- 在64位win10下安装32位oracle
乱试,居然搞定了. 1 下载个32位的驱动包,解压拷贝到C:\Windows\SysWOW64 其实这样就能用了:)不过如果人家只提供一个tsname的文件给你,或某些程序跑配置的,读取的配置是一个t ...
- 基于脚本的nodemanager管理器
Step 6: Configure Node Manager on the Managed Servers虚拟机环境: 管理服务器IP:192.168.227.10 AdminServer 受管服务 ...
- 20155326刘美岑2016-2017-2《Java程序设计》第一周学习总结
20155326刘美岑 2006-2007-2 <Java程序设计>第1周学习总结 教材学习内容总结 在老师的要求下我看了这门课的考察方式.这门课和以前上的课有些差别,成绩是由平时一点一点 ...
- QT7有用的尝试总结(1)
1,系统配置 1. 把系统相关的一些目录配置 写到qt.conf文件里,详细情况情参考QSettings里的qt.conf部分 You can use the qt.conf file to over ...
- codeforces891a
A. Pride time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...
- oracle数据库 ORA-01017的解决办法
alter user 用户名 identified by 新密码: