CSS3中的Transition过度与Animation动画属性使用要点


Posted in HTML / CSS onMay 20, 2016

Transition(过度)
Transition允许CSS的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值,它的语法如下:

CSS Code复制内容到剪贴板
  1. transition: property duration timing-function delay;   
  2. /*  
  3. property:执行过渡的属性  
  4. duration:执行过渡的持续时间  
  5. timing-function:执行过渡的速率模式  
  6. delay:延时多久执行  
  7. */  

transition-property
可取值:

none
没有属性会获得过渡效果。
all
所有属性都将获得过渡效果。
property
定义应用过渡效果的 CSS 属性名称列表,列表以逗号分隔。

CSS Code复制内容到剪贴板
  1. div{   
  2. transition-property:width;   
  3. -moz-transition-property: width;/* Firefox 4 */  
  4. -webkit-transition-property:width/* Safari 和 Chrome */  
  5. -o-transition-property:width;    
  6. /* Opera */}  

transition-duration
参数为时间,单位为s(秒)或者ms(毫秒),默认就是0,回想一下如果只有transform属性,是不是变换啪地一下完成了。

CSS Code复制内容到剪贴板
  1. div{   
  2. transition-duration: 5s;   
  3. -moz-transition-duration: 5s; /* Firefox 4 */  
  4. -webkit-transition-duration: 5s; /* Safari 和 Chrome */  
  5. -o-transition-duration: 5s; /* Opera */}   

transition-timing-function

既然是动画,那么就有动画的运行速率,不同的速度会产生不同的结果,以下是可取值。

ease:(逐渐变慢)默认值,ease函数等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0).
linear:(匀速),linear 函数等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0).
ease-in:(加速),ease-in 函数等同于贝塞尔曲线(0.42, 0, 1.0, 1.0).
ease-out:(减速),ease-out 函数等同于贝塞尔曲线(0, 0, 0.58, 1.0).
ease-in-out:(加速然后减速),ease-in-out 函数等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)
CSS3中的Transition过度与Animation动画属性使用要点

transition-delay
参数为时间,单位为s(秒)或者ms(毫秒),默认就是0,也就是立即执行,如果在多个动画直接有先后顺序,那么它就会派上用场。

Animation(动画)
关键帧 Keyframe
实现自定义动画,通过对关键帧的设定来实现,也就是规定从起始点(0%)到终点(100%)之间的具体节点上的动画样式。就好比一个人起床,睁开眼睛(0%),站起来(10%),穿上衣(40%),穿裤子(80%),整理面容(100%),这样子把每个节点串起来便是动画了。

再说动画
动画,关键在于动字,那么对于页面上的元素来说,能发生变化的便是它的样式属性,比如用animation规定自定义动画,内容为font-size从18px,变为28px,这个便是动,加上其自身的属性(它可以规定动画持续时间,运动形式等等),便可以呈现动态的效果,而不是一瞬间的变化。

通常,transition要想实现动画通常需要由hover伪类来触发,否则在页面加载的时候它已经运动完毕,保持运动的末态,这并不是我们想要的。animation不一样,它拥有更多的表现形式,使其看起来像与生俱来,天生就会动一样。

语法

CSS Code复制内容到剪贴板
  1. .area{   
  2.      width50px;   
  3.      height50px;   
  4.      margin-left100px;   
  5.      backgroundblue;   
  6.      -webkit-animation-name:'demo';/*动画属性名,也就是我们前面keyframes定义的动画名*/  
  7.      -webkit-animation-duration: 10s;/*动画持续时间*/  
  8.      -webkit-animation-timing-function: ease-in-out; /*动画频率,和transition-timing-function是一样的*/  
  9.      -webkit-animation-delay: 2s;/*动画延迟时间*/  
  10.      -webkit-animation-iteration-count: infinite;/*定义循环资料,infinite为无限次*/  
  11.      -webkit-animation-direction: alternate;/*定义动画方式*/  
  12.   }  

实例和简写
需要注意的是最后一个属性,direction,我们可以这么想,A从甲地到了乙地这是一个动画,设置为normal时,第二次播放时便又是从头开始,显得很突兀,这个时候需要用alternate,使其看起来A在甲乙两地之间来回运动,代码如下:

CSS Code复制内容到剪贴板
  1. /*  
  2. 甲地和乙地这两个球都是absolutely定位方式,小球也是,只要控制left值即可  
  3. */  
  4. .circle{   
  5. //我给这个小球球增加了一个名为demo1的动画   
  6. //你看,它就自己动起来了,回想一下,使用transform的时候,是不是还得用hover去触发   
  7.  -webkit-animation: 'demo1' 2s linear infinite alternate;   
  8.     -o-animation: 'demo1' 2s linear infinite alternate;   
  9.     animation: 'demo1' 2s linear infinite alternate;   
  10. }   
  11. //定义动画部分   
  12. //我只写了-webkit,真实中加上@-0-,@-moz-,@keyframes   
  13. @-webkit-keyframes demo1 {   
  14.     from {    
  15.         left:200px;   
  16.         background-color: lightcoral;   
  17.      }   
  18.      50%{   
  19.          left:290px;   
  20.          background-color: lightblue ;   
  21.      }   
  22.   
  23.     to {    
  24.         left:380px;   
  25.         background-color: lightseagreen;   
  26.      }   
  27. }  

CSS3中的Transition过度与Animation动画属性使用要点

alternate方式,放完就倒着放一遍
CSS3中的Transition过度与Animation动画属性使用要点

normal方式,就是放完重头再放

HTML / CSS 相关文章推荐
css3实现波纹特效、H5实现动态波浪效果
Jan 31 HTML / CSS
利用CSS3的特性改变文本选中时的颜色
Sep 11 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
Jan 21 HTML / CSS
HTML5之SVG 2D入门10—滤镜的定义及使用
Jan 30 HTML / CSS
html5弹跳球示例代码
Jul 23 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
Aug 02 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
Nov 29 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
Sep 01 HTML / CSS
canvas 实现 github404动态效果的示例代码
Nov 15 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
Jan 29 HTML / CSS
Html5 video标签视频的最佳实践
Feb 26 HTML / CSS
CSS完成视差滚动效果
Apr 27 HTML / CSS
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
May 17 #HTML / CSS
CSS3中各种颜色属性的使用教程
May 17 #HTML / CSS
使用CSS3美化HTML表单的技巧演示
May 17 #HTML / CSS
利用CSS3的border-radius绘制太极及爱心图案示例
May 17 #HTML / CSS
CSS3的常见transformation图形变化用法小结
May 13 #HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
May 13 #HTML / CSS
几个CSS3的flex弹性盒模型布局的简单例子演示
May 12 #HTML / CSS
You might like
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
python利用不到一百行代码实现一个小siri
2017/03/02 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
python实现感知器
2017/12/19 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
解决Python中回文数和质数的问题
2019/11/24 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
2014年秋季新学期寄语
2014/08/02 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis