CSS3动画属性,这么简单

CSS3动画属性

简单来说:动画就是把一帧一帧的画面连接起来。,以一定的速度连续播放时,视觉差看不出来,这就是动画。

知道了动画的概念,那就明白了怎么去实现,我们就要把每一帧的画面长什么样子画出来,然后以一定的速度连接起来就行了。

🤣那么有人就会问和过渡有什么区别呢?

区别在于:

  • transition需要触发一个事件才会随着时间改变其CSS属性;animation在不需要触发任何,事件的情况下,也可以显式的随时间变化来改变元素CSS属性,达到一种动画的效果。
  • 过渡只有两帧,开始和结束,其余都是靠补间动画实现的。 而动画可以设置任意多帧。

动画的使用

@keyframes规则

@keyframes 规则中指定了 CSS 样式,动画将在特定时间逐渐从开始样式、经过中间的帧数样式、到最后的样式。

要使动画生效,必须将动画绑定到某个元素。使用关键词 “from” 和 “to”,等同于 0% 和 100%。

定义一个动画,

@keyframes 动画名称 {
    0% {
        //样式
        width: 200px;
    }
    50%{
         width: 300px;
    }
    100% {
        width: 200px;
    }
}
div { 
animation: 动画名称 5s;  //将该动画使用到div上,动画时长5s
}

动画属性

  • 💠 animation-name :规定 @keyframes 动画的名称。

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

  • 💠 animation-delay :规定动画何时开始,也可以说是延迟开始。默认是 0。

  • 💠animation-iteration-count :规定动画被播放的次数。默认是 1。

  • 💠 animation-direction :指定是向前播放、向后播放还是交替播放动画。默认是 “normal”。

    • 🔘 normal - 动画正常播放(向前)。默认值
    • 🔘reverse - 动画以反方向播放(向后)
    • 🔘alternate - 动画先向前播放,然后向后
    • 🔘alternate-reverse - 动画先向后播放,然后向前
  • 💠 animation-timing-function :规定动画的速度曲线。默认是 “ease”。

    -🔘 cubic-bezier(n, n, n, n) :在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。

    • 🔘 ease : 前面慢,中间快,后面慢

    • 🔘linear :匀速运动

    • 🔘 ease-in :慢速开始

    • 🔘 ease-out :慢速结束

    • 🔘 ease-in-out :以慢速开始和结束的过渡效果

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

    • 🔘 none - 默认值。动画在执行之前或之后不会对元素应用任何样式。
    • 🔘forwards - 元素将保留由最后一个关键帧设置的样式值(依赖 animation-direction 和 animation-iteration-count)。
    • 🔘 backwards - 元素将获取由第一个关键帧设置的样式值(取决于 animation-direction),并在动画延迟期间保留该值。
    • 🔘 both - 动画会同时遵循向前和向后的规则,从而在两个方向上扩展动画属性。
  • animation-play-state :规定动画是否正在运行或暂停。默认是 “running”。

  • 💠 animation :前面所有的属性的合写

动画的属性很多,但是我们常用的都是使用animation合写形式。动画能实现的东西很多很多。

实例

实现一个跑步的动画。随便从网上找一张连贯动作的图,我找的是这个,做到后面才发现图尽量找每一帧大小一样,动作幅度不是很多,帧数越多,分解的越多,动画的效果越好。

在这里插入图片描述

我们的实现思路就是,让一个动作看做一帧,一帧一帧的往方框移动,只要衔接的流畅,和你的图片帧数多,效果就很好。

在这里插入图片描述

效果:我把握的不是很好。

在这里插入图片描述

代码:

<body>
    <div class="main">
        <img src="./pace.png">
    </div>

</body>
<style>
    .main {
        width: 240px;
        height: 460px;
        border: 1px solid red;
        overflow: hidden;
        position: relative;
    }

    img {
        position: absolute;
        top: 0;
        animation: name 1.2s steps(10) infinite;
    }

    @keyframes name {
        from {
            left: 0;
        }
        to {
            left: -950px;
        }
    }
</style>

😉😉😉😉😉😉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值