慕课网笔记--逐帧动画实现猎豹奔跑

https://www.cnblogs.com/sandraryan/

例子的笔记来自慕课网视频css动画部分

先解释一下:逐帧动画是特殊的关键帧动画

适用于无法进行补间计算的动画。 但是资源占用会比较多。

例子:

原始图片是这样的

现在把它做成一个动画

   <style>
    div{
        width: 100px;
        height: 100px;
        margin: 50px auto;
        border: 1px solid black;
        background-image: url("animal.png");
        background-repeat: no-repeat;
        
    }
    @keyframes run{
        0%{
            background-position: 0 0;
        }
        12.5%{
            background-position: -100px 0;
        }
        25%{
            background-position: -200px 0;
        }
        37.5%{
            background-position: -300px 0;
        }
        50%{
            background-position: 0 -100px;
        }
        62.5%{
            background-position: -100px -100px;
        }
        75%{
            background-position: -200px -100px;
        }
        87.5%{
            background-position: -300px -100px;
        }
        100%{
            background-position: 0 0;
        }
    }
    div:hover{
        animation: run 1s linear infinite;
        animation-timing-function: steps(1);
    }
    </style>
</head>
<body>
    <div></div>
</body>

解析一下步骤

首先,把图片作为该盒子的背景,并设置no-repeat。

其次,给不同的阶段设置不同的背景位置,设置animation属性。(个人觉得原理类似于雪碧图)

然后,你就会发现效果非常鬼畜。。。是因为每一帧之间仍旧是有补间的,要把这个去掉。

最后加上,animation-timing-function: steps(1);这个属性值为的是制定每个关键帧之间有几个画面,属性值设为1,就是两帧之间只有一个画面。

over

虽然我很菜,但是如果转载请注明原链接,不然我顺着网线过去打你。(●'◡'●)https://www.cnblogs.com/sandraryan/
原文地址:https://www.cnblogs.com/sandraryan/p/10725291.html