让一个动画一直执行的属性是_「Web前端开发进阶篇」CSS3 动画

点击上方“Web前端进阶指南”关注我呦

跟程序员小强一起学前端

57c9f08b6cc3b0c697e07f60a48276e6.png

上一篇我们讲了CSS3 2D/3D转化以及一些过渡的内容,主要说了使用2D/3D让元素改变形状、大小、位置的一些属性和方法,这一篇呢,我们主要来讲CSS3动画,这也是我们学习CSS3的主要目的,就是做动画。

CSS3动画是什么?

这个动画不是动画片啊,就跟上一篇说的CSS3过渡一个性质,都是从一种样式逐渐变化为另一种样式的效果,你可以改变任意多的样式任意多的次数。

用百分比来规定变化,或者用 “from” 和 “to” ,等同于0% 和 100%,%0是动画的开始,100%是动画的结束,一般建议用百分比表示。为了更好的兼容。

为了更好的理解,说大白话就是从0%到100%规定动画生成的过程,在这过程中,你可以编写动画执行的过程。

一般我们会取0%,50%,100%这三个百分比,规定从0%-50%执行某个动画,然后规定50%-100%执行某个动画,随后从头开始,就这样形成回路,完成了我们想要的动画,再细分一点,可以加上0%-25%,25%-50%,50%-75%,75%-100%。这几个过程。

说完了这些,我们先来看看示例,

23cc9539540f412285e34e62bc1976df.png

注意

这里呢,我们用 myfirst 来命名我们的动画,然后用 animation 属性来给 div 绑定动画名称,让div执行我们的动画。from——to,背景颜色由红色变成黄色,规定完成的动画是5秒,必须定义动画的名称和动画的持续时间。如果省略的持续时间,动画将无法运行,因为默认值是0。

提示

当在 @keyframes 创建动画,把它绑定到一个选择器,否则动画不会有任何效果。指定至少这两个CSS3的动画属性绑定向一个选择器:

  • 规定动画的名称
  • 规定动画的时长

我们再来看看用百分比规定动画:

1bdb482dd0808323923d83d7fb47058b.png

注意:这里我们使用了百分比来规定动画变化。

  • 0%-25%,背景颜色由红色变化为黄色,向左移动200px,向上不变
  • 25%-50%,背景颜色由黄色变化为蓝色,向左不变,向下移动200px
  • 50%-75%,背景颜色由蓝色变化为绿色,向左移动200px,向下移动不变
  • 75%-100%,背景绿色由蓝色变化为红色,向左移动不变,向上移动200px

这个就是一个正方形按一个矩形的轨迹跑了一圈。

686fc6ccfe8767093ed6ec428a9385fe.gif

剩下的也就没什么了,主要是一些CSS3 动画属性,我们就来看看:

1、@keyframes:规定动画。就是绑定在元素上的动画名称,用这个名称来规定动画。

2、animation:所有动画属性的简写属性,除了 animation-play-state 属性。

3、animation-name:规定 @keyframes 动画的名称。一般情况直接就简写了。

4、aniion-duration:规定动画完成一个周期所花费的秒或毫秒。默认是 0。

5、animon-timing-function:规定动画的速度曲线。默认是 "ease"。

这个属性有6个值:

  • linear:动画从头到尾的速度是相同的。
  • ease:默认。动画以低速开始,然后加快,在结束前变慢。
  • ease-in:动画以低速开始。
  • ease-out:动画以低速结束。
  • ease-in-out:动画以低速开始和结束。
  • cubic-bezier(n,n,n,n):在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

6、animation-fill-mode:规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。

这个属性也有6个值:

  • none:默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。
  • forwards:在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。
  • backwards:动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是 from 关键帧中的值(当 animation-direction 为 "normal" 或 "alternate" 时)或 to 关键帧中的值(当 animation-direction 为 "reverse" 或 "alternate-reverse" 时)。
  • both:动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。
  • initial:设置该属性为它的默认值
  • inherit:从父元素继承该属性。

7、animation-delay:规定动画何时开始。默认是 0。负值为跳过几秒后开始动画。

8、animation-iteration-count:规定动画被播放的次数。默认是 1。另外的值:infinite,指定动画应该播放无限次(永远)

9、animation-direction:规定动画是否在下一周期逆向地播放。默认是 "normal"。

这个属性也有6个值:

  • normal:默认值。动画按正常播放。
  • reverse:动画反向播放。
  • alternate:动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放。
  • lternate-reverse:动画在奇数次(1、3、5...)反向播放,在偶数次(2、4、6...)正向播放。
  • initial:设置该属性为它的默认值。
  • inherit:从父元素继承该属性。

10、animation-play-state:规定动画是否正在运行或暂停。默认是 "running"。属性值有两个:

  • paused:指定暂停动画
  • running:指定正在运行的动画

我们来看看将这些所有属性放在一起形成的动画:

f558176a55581005e25efb504678118a.png

动画如下:

ea0ac9a3bd1aa5d87076adced41844b4.gif

当然你看着代码很多,一旦简写也就那么点:

e48396fc56d42580acff4bbc5f44d89a.png

当然,我们能实现的不仅仅这单一元素的动画轨迹,只要你能熟悉的掌握CSS3动画,能实现很多的效果,我们来看看官方案例实现九大行星运动的轨迹动画。

2537261bbf9fc51fcc1461de7fe6f147.gif

看着挺炫的吧,所以说CSS3功能挺强大的,有时候能用CSS3完成的动画效果,我们绝不用js/jquery,其实挺简单的,无非就是给HTML元素绑定动画,然后给动画添加时间,运动的效果,就可以实现,最后检测一下兼容性就好了。

下一篇呢,应粉丝要求,我们先插一篇关于three.js的学习应用。

本文为‘Web前端进阶指南’原创,转载请说明出处,手动码字不易,喜欢的小伙伴们别忘了顺手点个赞加个关注哈,有什么不懂的下方留言评论或私信。谢谢大家哈!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值