irpas技术客

CSS的动画特效(animation)_lichen_css动画animation

网络投稿 6365

今天来讲一下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 表示设置为结束或者开始时候的状态。一般都是回到默认状态。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #css动画animation