CSS的动画特效(animation)
今天来讲一下css中很实用的一个效果-动画(animation)。动画就是使元素从一种样式逐渐变化为另一种样式的效果。我们可以改变任意多的样式任意多的次数(很官方的回答)。为了方便大家和我自己理解这个概念,我们可以想像一下准备拍电影的时候,我们需要一个电影名吧,需要设置电影的时间吧。而且拍电影就是一帧一帧,叫做关键帧。所以我们设置动画的时候要讲清楚电影名(animation-name),电影时长(
今天来讲一下css中很实用的一个效果-动画(animation)。
动画就是使元素从一种样式逐渐变化为另一种样式的效果。我们可以改变任意多的样式任意多的次数(很官方的回答)。
为了方便大家和我自己理解这个概念,我们可以想像一下准备拍电影的时候,我们需要一个电影名吧,需要设置电影的时间吧。而且拍电影就是一帧一帧,叫做关键帧。所以我们设置动画的时候要讲清楚电影名(animation-name),电影时长(animation-duration),电影啥时候开始(animation-delay),播放或者暂停(animation-play-state)。关键帧(@keyframes)就是拍好了供我们调用,所以电影名就是要使用到关键帧。接下来细细讲解每个部分的具体内容:
@keyframes
通过 @keyframes 规则,我们可以创建动画。
创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式。在动画过程中我们能够多次改变这套 CSS 样式。以百分比来规定改变发生的时间,或者通过关键词 “from” 和 “to”,等价于 0% 和 100%。
0% 是动画的开始时间,100% 动画的结束时间。为了获得最佳的浏览器支持,我们应该始终定义 0% 和 100% 选择器。这里面0%就是一帧,50%是一帧,100%也是一帧。
最后,请使用动画属性来控制动画的外观,同时将动画与选择器绑定
animationname 必需。定义动画的名称
keyframes-selector 必需。动画时长的百分比
合法的值:
0-100%
from(与 0% 相同)
to(与 100% 相同)
css-styles 必需。一个或多个合法的 CSS 样式属性
举个栗子:
@keyframes name
{
0% {top:0px; left:0px; background:red;}
25% {top:0px; left:100px; background:blue;}
50% {top:100px; left:100px; background:yellow;}
75% {top:100px; left:0px; background:green;}
100% {top:0px; left:0px; background:red;}
}
animation
animation 属性是一个简写属性,用于设置六个动画属性:
1. animation-name 规定需要绑定到选择器的 keyframe 名称
2. animation-duration 规定完成动画所花费的时间,以秒或毫秒计
3. animation-timing-function 规定动画的速度曲线
4. animation-delay 规定在动画开始之前的延迟
5. animation-iteration-count 规定动画应该播放的次数
6. animation-direction 规定是否应该轮流反向播放动画
1.animation-name 就是需要绑定的@keyframe的名称了。
2.animation-timing-function就是规定动画的速度曲线。默认是 “ease”。
linear 动画从头到尾的速度是相同的
ease 默认。动画以低速开始,然后加快,在结束前变慢
ease-in 动画以低速开始
ease-out 动画以低速结束
ease-in-out 动画以低速开始和结束
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中自己的值
3.animation-iteration-count 默认为1次,可以填写数字,nfinite 规定动画应该无限次播放。
- animation-direction 属性定义是否应该轮流反向播放动画。如果 animation-direction 值是 “alternate”,则动画会在奇数次数(1、3、5 等等)正常播放,而在偶数次数(2、4、6 等等)向后播放。如果把动画设置为只播放一次,则该属性没有效果。
5.animation-duration和animation-delay分别是动画的持续时间和延时播放
animation-play-state和animation-fill-mode
1.animation-play-state属性规定动画正在运行还是暂停。只有两个属性可以设置:
- paused 规定动画已暂停
- running 规定动画正在播放
2.animation-fill-mode属性规定动画在播放之前或之后,其动画效果是否可见。其属性值是由逗号分隔的一个或多个填充模式关键词。
- none 不改变默认行为
- forwards 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)
- backwards 在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)
- both 向前和向后填充模式都被应用
不好理解对不对,往下看就好理解了!
动画分为 初始状态 等待期 动画执行期 完成期 四个阶段:
初始状态,就是没有触发动画效果时,你元素原本应该有的状态
等待期,就是 animation-delay 设置的延迟期间
动画执行期,指的是 delay 结束瞬间开始执行动画,一直持续到最后一帧
完成状态,执行完最后一帧时,元素处于的状态
none 表示 等待期和完成期,元素样式都为初始状态样式,不受动画定义(@keyframes)的影响
both 表示 等待期样式为第一帧样式,完成期保持最后一帧样式
backwards 表示等待期为第一帧样式,完成期跳转为初始样式
forwards 表示等待期保持初始样式,完成期间保持最后一帧样式
通俗的讲就是动画结束之后保持什么状态:
none 表示不设置结束之后的状态,默认情况下回到跟初始状态一样。
forwards 表示将动画元素设置为整个动画结束时的状态。
backwards 明确设置动画结束之后回到初始状态。
both 表示设置为结束或者开始时候的状态。一般都是回到默认状态。
更多推荐
所有评论(0)