通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript。
Transitions 、transforms和 Animations
Transitions特点:平滑的改变CSS的值
transforms特点:变换主要实现(拉伸,压缩,旋转,偏移)
Animations特点:适用于CSS2,CSS3
相同点:
都是随着时间改变元素的属性值。
不同点:
transition需要触发一个事件(hover事件或click事件等)才会随时间改变其css属性;
初始效果——最终的效果之间的变化;
animation在不需要触发任何事件的情况下也可以显式的随着时间变化来改变元素css的属性值,从而达到一种动画的效果,css3的animation就需要明确的动画属性值
初始效果———动画帧———动画帧————最终的效果
Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。
Chrome 和 Safari 需要前缀 -webkit-。
注释:Internet Explorer 9,以及更早的版本,不支持 @keyframe 规则或 animation 属性。
/* @keyframes */
@keyframes mymove{}
@-webket-keyframes mymove{}
/* animation */
animation{}
-webket-animation{}
动画是使元素从一种样式逐渐变化为另一种样式的效果。 您可以改变任意多的样式任意多的次数。 请用百分比来规定变化发生的时间,或用关键词
“from” 和 “to”,等同于 0% 和 100%。 0% 是动画的开始,100% 是动画的完成。
为了得到最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。
今天我们说一下动画属性Animation,单从Animation字面上的意思,我们就知道是“动画”的意思。
如需在 CSS3 中创建动画,我们需要先来学习 @keyframes 规则。
@keyframes 规则用于创建动画。在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。我们把他叫做“关键帧”,玩过flash的朋友可能对这个东西并不会陌生。下面我们就一起来看看这个“Keyframes”是什么东西。
关键帧属性 @keyframe
不同于过渡动画只能定义首尾两个状态,关键帧动画可以定义多个状态, 或者用关键帧的话来说,过渡动画只能定义第一帧和最后一帧这两个关键帧,
而关键帧动画则可以定义任意多的关键帧,因而能实现更复杂的动画效果。
语法:( 0% = from 100% = to )
@keyframes mymove{
from{初始状态属性}
to{结束状态属性}
}
@keyframes mymove{
0%{初始状态属性}
50%{中间再可以添加关键帧}
100%{结束状态属性}
}
实例:改变颜色
@keyframes myfirst
{
from {background: red;}
to {background: yellow;}
}
实例:改变背景色和位置
@keyframes myfirst
{
0% {background: red; left:0px; top:0px;}
25% {background: yellow; left:200px; top:0px;}
50% {background: blue; left:200px; top:200px;}
75% {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}
Animation 属性:
当您在 @keyframes 中创建动画时,请把它捆绑到某个选择器,否则不会产生动画效果。 通过规定至少以下两项 CSS3
动画属性,即可将动画绑定到选择器:
- 规定动画的名称
- 规定动画的时长
1、animation-name 动画名称(必要的)
必须与规则@keyframes配合使用,
@keyframes mymove{
from {background: red;}
to {background: yellow;}
}
div{animation-name:mymove;}
2、animation-duration持续时间(必要的)
animation-duration:3s;
3、animation-timing-function 过渡类型
属性值
animation-timing-function:linear;
4、animation-delay 延迟时间
animation-delay:0.5s;
5、animation-iteration-count 循环次数
属性值
animation-iteration-count:infine;
6、animation-direction 运动方向
属性值
animation-direction:normal;
7、animation-fill-mode 属性规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
属性值
animation-fill-mode:forwads;
8、animation-play-state 动画状态
属性值
div:hover{animation-play-state:paused;}
9、animation简写:
animation:动画名称 动画持续时间 过渡类型 延迟时间 循环 运动方向
( 2个时间:第一个时过渡时间 ;第二个时延迟时间 )
animation:mymove 2s linear 0.5s infine alternate;
官网地址:https://daneden.github.io/animate.css/
引入:<link rel="stylesheet" href="animate.min.css">
基本使用:
/* bounce 为选中的动画效果名称 */
<h1 class="animated infinite bounce">Exampleh1>
拓展:浏览器前缀
-ms- IE浏览器专属的CSS属性需添加-ms-前缀
-moz- 所有基于Gecko引擎的浏览器(如Firefox)专属的CSS属性需添加-moz-前缀
-o- Opera浏览器专属的CSS属性需添加-o-前缀
-webkit- 所有基于Webkit引擎的浏览器(如Chrome、Safari)专属的CSS需添加-webkit-前缀