为了账号安全,请及时绑定邮箱和手机立即绑定

CSS3新特性(03):Animation

标签:
CSS3

CSS3中动画涉及到三个属性,一个是Transform:变形;一个是Transition:过渡,一个是Animation:动画。其中Transform、Animation可以搭配着使用,实现复杂动画,Transition可以实现简单动画。

有时候,Transition过渡不能解决我们想要的动画效果,我们希望动画的过渡程度更加复杂有层次,这个时候就要用到Animation。

当然CSS3中的Animation与HTML5中的Canvas绘制动画又不同,Animation只应用在页面上已存在的DOM元素上,做出来的动画相比较Flash、JavaScript及jQuery制作出来的动画效果稍显粗糙些。

Animation有下面这些属性:

属性描述
animation简写属性,用于在一个属性中设置8个动画属性
animation-name规定需要绑定到选择器的keyframe名称
animation-duration规定完成动画所花费的时间,以秒或毫秒计。
animation-timing-function规定动画的速度曲线。跟transition一样。
animation-delay规定在动画开始之前的延迟。
animation-iteration-count规定动画应该播放的次数。默认1,也可以是infinite无限次
animation-direction规定是否应该轮流反向播放动画。值为nomal\reverse\alternate\alternate-reverse。意思分别是正方向\反方向\往返\反方向的往返。
animation-fill-mode规定动画开始的时候是否要保持开始的第一帧,结束是否保持最后一帧。其值为none\backwards\forwards\both。分别意思是不保持,开始保持,结束保持,和都保持。通常情况下是both设置。
animation-play-state规定动画暂停还是播放,值为paused\running。一般搭配鼠标hover时候使用,比如鼠标移上去就动了的效果,就设置running。

(1)语法

animation:none;animation:abc 2s ease 0s 1 nomal none running;animation:abc 2s;animation:abc 1s 2s both,abcd 2s both;

webp

其中abc就是keyframe名称。keyframe是什么呢?我们把他叫做“关键帧”,玩过flash的朋友可能对这东西不会陌生。前面我们在使用transition制作transition过渡效果时,就包括了初始属性和最终属性,一个开始执行动作时间和一个延续动作时间以及动作的变换速率。

如果我们要控制的更细一些,比如要第一个时间段执行什么动作,第二个时间段执行什么动作,换到flash中说,就是第一帧执行什么动作,第二帧执行什么动作,这样用Transition就很难实现了,此时我们也需要这样的一个“关键帧”来控制。CSS3的Animation就是由“keyframes”这个属性来实现这样的效果。

如何定义keyframe的名称呢?有两种写法:

@keyframes abc{      from{opacity:1;height:100px;}      to{opacity:0.5;height:200px;}
}
 
@keyframes abc{
    0%{opacity:1;height:100px;}
    50%{opacity:0.8;height:200px;}
   100%{opacity:0.5;height:300px;}
}

分别是定义开始的状态属性参数,定义中间的状态属性参数,和定义结束时候的状态属性参数。当然如果属性参数是一样的,我们可以组合起来写,看下面:

@keyframes flash{
0%,50%,100%{opacity:1;}
25%,75%{opacity:0;}
}

定义了keyframes名称用来干嘛呢,就是下面的用处了,把 "keyframes名称" 捆绑到元素中去,比如div。

div {animation:abc 0.5s both;animation:flash 0.5s both;animation:abc 0.5s both,flash 0.5s both;
}

Animation可以综合写一行,把所有的表格中的属性按照表格里上下的顺序写,也可以分开Animation的每个属性分开单独写。

(2)实例

webp

.tools_iicon:hover{animation:rotate360 2s;}
@keyframes rotate360{from{transform:rotate(0deg);}to{transform:rotate(360deg);}
}

后记:这是原文地址《CSS3新特性(03):Animation》,欢迎来我个人博客逛逛!



作者:荷小音
链接:https://www.jianshu.com/p/ba3e9b976097


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消