css3动画

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

相比较我们昨天介绍的过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。

1. 动画的制作步骤

制作动画一共有两步:
第一步:先定义动画,设置关键帧
第二步:再使用(调用)动画

1.1 用keyframes 定义动画(类似定义类选择器)

@keyframes 动画名称 {
    0%{
         width:100px;
    } 
    100%{
         width:200px;
    }
}

上面的代码就是一个定义动画,设置关键帧的简单例子,一共设置了两个关键帧。

动画序列:

①0% 是动画的开始,100% 是动画的完成。这样的规则就是动画序列。

②在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果
③动画是使元素从一种样式逐渐变化为另一种样式的效果。您可以改变任意多的样式任意多的次数。比如:

@keyframes 动画名称 {
    0%{
         transform:translate(0,0);
    } 
    25%{
         transform:translate(800px,0);
    } 
    50%{
         transform:translate(800px,500px);
    } 
    75%{
         transform:translate(0,500px);
    } 
    100%{
         transform:translate(0,0);
    }
}


用百分比来规定变化发生的时间,或用关键词 "from" 和 "to",等同于 0% 和 100%。

1.2 元素使用动画 (调用关键帧)

div {
   width: 200px;
   height: 200px;
   background-color: aqua;
   margin: 100px auto;
   /* 调用动画 */
    animation-name: 动画名称;  /* 名称必须和@keyframes设置的名字一致 */
   animation-duration: 持续时间;
 }

使用动画,需要借助animation相关属性,上面例子使用的animation-name、animation-duration属性,是调用动画必不可少的两个属性(必写的)。

2. 动画常用属性

①@keyframs    用来规定动画;

②animation      用于所有动画属性的简写属性

animation-name      指的是由@keyframes创建的动画名称(必须的)

animation-duration    指的是动画完成一个周期所需要花费的时间,单位为秒(必须的)

⑤animation-timing-function     指的是动画的速度曲线(l默认是ease)

⑥animation-delay      表示动画何时开始(延迟的时间),默认是0

⑦animation-iteration-count    表示动画的播放次数, 默认值为1, 特殊值为infinite(无限循环),也可以是其他具体播放次数,那么直接写上数字即可,不要加单位

⑧animation-direction   表示动画是否在下一周期逆向播放,默认是“normal”,“alternate”表示逆播放。

⑨animation-play-state   表示鼠标移入动画的状态,paused表示鼠标移入,动画暂停 ,默认值为running

⑩animation- fill-mode   表示动画结束后状态, 默认值是backwards ,会返回原来的位置;forward 表示会停在结束的位置

3. 动画简写属性

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

3.1 语法:

animation:animation-name animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction fill-mode;

具体例子:
animation: move 5s linear 2s infinite alternate forward;

3.2 注意点

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

4. 总结

制作基本的动画,其实不难,只要按照①先定义动画,设置关键帧;②再使用(调用)动画,这两步来制作即可,但是需要注意的是,在制作前,首先要先考虑好动画实现的逻辑,即到底需要几个关键帧,以及每个关键帧里面的css样式如何,只要考虑清楚这个,实现动画就不是难事了。

比如,要想让一个盒子实现从左上走到右上,再到右下,然后到左下,最后回到起点位置,那么很明显这里需要5个关键帧,然后因为是盒子进行移动,所以使用translate属性来改变盒子具体的位置,设置好关键帧后,然后调用对应动画即可实现,具体代码如下

<style> 
/* 第一步:定义动画,设置关键帧 */
    @keyframes move {
        0% {
            transform: translate(0,0);
        }
        25% {
            transform: translate(1200px,0);
        }
        50% {
            transform: translate(1200px,600px);
        }
        75% {
            transform: translate(0,600px);
        }
        100% {
            transform: translate(0,0);
        }
    }
    div {
        width: 100px;
        height: 100px;
        background-color: pink;
/* 第二步:调用动画 */
        animation: move 4s linear;   /* 并不是所有属性都需要写上,根据要求写对应属性即可 */
    }
</style>
</head>
<body>
    <div></div>
</body>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值