动画(CSS3) animation

时间:2022-07-26
本文章向大家介绍动画(CSS3) animation,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

动画是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。

动画序列

  • 0%是动画的开始,100%是动画的完成。这样的规则就是动画序列。
  • 在@keyframes中规定某项css样式,就能创建由当前样式逐渐改变为新样式的动画效果
  • 动画是使元素从一种样式逐渐变化为另一种样式的效果,可以改变任意多的样式任意多的次数。
  • 用百分比来规定变化发生的时间,或用关键词"form"和"to",等同于0%和100%。

动画基本使用

  1. 先定义动画
  2. 再调用动画

动画简写格式:

animation:动画名称 动画时间 运动曲线  何时开始  播放次数  是否反方向 动画起始或结束方向;

属性

描述

@keyframes

规定动画。

animation

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

animation-name

规定@keyframes动画的名称。(必须的)

animation-duration

规定动画完成一个周期所花费的秒或毫秒,默认是0。(必须的)

animation-timing-function

规定动画的速度曲线,默认是“ease”。

animation-delay

规定动画何时开始,默认是0。

animation-iteration-count

规定动画被播放的次数,默认是1,还有infinite

animation-direction

规定动画是否在下一周期逆向播放,默认是“normal“,alternate逆播放

animation-play-state

规定动画是否正在运行或暂停。默认是"running",还有"paused"。

animation-fill-mode

规定动画结束后状态,保持forwards回到起始backwards

  • 简写属性里面不包含 animation-play-state
  • 暂停动画:animation-play-state: puased; 经常和鼠标经过等其他配合使用
  • 想要动画走回来 ,而不是直接跳回来:animation-direction : alternate
  • 盒子动画结束后,停在结束位置: animation-fill-mode : forwards

速度曲线细节

 animation-timing-function:规定动画的速度曲线,默认是“ease”

描述

linear

动画从头到尾的速度是相同的。匀速

ease

默认。动画以低速开始,然后加快,在结束前变慢。

ease-in

动画以低速开始。

ease-out

动画以低速结束。

ease-in-out

动画以低速开始和结束。

steps()

指定了时间函数中的间隔数量(步长)

 关于几个值,除了名字,动画时间,延时有严格顺序要求,其它随意

@keyframes 动画名称 { from{ 开始位置 } 0% to{ 结束 } 100% }

animation-iteration-count:infinite; 无限循环播放 animation-play-state:paused; 暂停动画

 小熊案例:

 div {

            position: absolute;

            width: 200px;

            height: 100px;

            background: url(images/bear.png) no-repeat;

            /* animation:动画名称 动画时间 运动曲线  何时开始  播放次数  是否反方向; */

            /* 元素可添加多个动画,用逗号分隔 */

            /* steps(步数),动画分几步完成 */

            animation: run 0.5s steps(8) infinite, move 3s linear forwards;

        }

        @keyframes run {

            0% {

                background-position: 0 0;

            }

            100% {

                background-position: -1600px 0;

            }

        }

        @keyframes move {

            0% {

                left: 0;

            }

            100% {

                left: 50%;

                transform: translateX(-50%);

            }

        }