animation阶跃函数step详解

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{margin: 0; padding: 0;}
        .div-1{width: 200px; height: 20px; background-color: gray; position: relative;}
        .div-1::after{content: ''; background-color: red; height: 20px; position: absolute; top: 0; left: 0; animation: progress 10s ease 0s both;}
        @keyframes progress{
            0% {padding-right: 0%;}
            20% {padding-right: 50%;}
            40% {padding-right: 70%;}
            60% {padding-right: 85%;}
            80% {padding-right: 95%;}
            100% {padding-right: 100%;}
        }
    </style>
</head>
<body>
    <div class="div-1"></div>
</body>
</html>

这里,是使用::after伪类动态创建进度条红***域,并通过animation改变padding-right值来实现其效果,在animation中,ease表示动画从低速开始,然后加快,最后变慢的速度曲线,除了ease,还有诸如linear、ease-in、ease-out、ease-in-out和贝塞尔曲线等等,它们所表示的是在整个完整动画中的每两个相邻的关键帧之间的速度变化状态,在上面的例子中,则是0%-20%之间,20%-40%之间等等,并不要理解成整个动画的状态,当然,如果你定义的是0%-100%(或者from-to)则可以理解成表示整个动画过程,整个速度曲线是平滑过渡的,视觉上十分流畅

在animation-timing-function中,有个比较特殊的属性,steps,它表示一个阶跃函数,可以为step-start、step-end、steps(1, end)三种方式

其中,step-start等同于steps(1, start),step-end等同于steps(1, end),steps([num], [type])第一个参数表示阶跃的次数(动画分几步完成),第二个参数有start和end两个值,start表示动画从一开始就跳到100%直到周期结束,end表示保持0%状态直到周期结束

注意,这里的阶跃次数指的是每两个关键帧之间的次数,比如0%-20%之间,20%-40%之间等等,不是整个动画状态

上述例子中,把ease改为steps(2, end)可以发现,动画在0%-20%的动画周期中,分割成了两次跳跃,比如这里的20%结束状态是padding-right:50%,则第一次跳跃为padding-right:25%,这里的跳跃是没有任何过渡效果的,直接显示改变后的状态,因此,也叫作阶跃函数

主要可以运用在一些sprits动画中,通过阶跃函数改变其background-position值,实现连贯的动画效果

 

全部评论

相关推荐

有很多问题,求大佬们解答,谢谢大佬们:不知道现在该怎么投实习,该怎么准备内心很纠结学校课程和实习到底怎么选择,&nbsp;自己也不想课程学业这边出问题,&nbsp;是不是只能投暑期实习,具体时间该怎么安排前端面试也需要准备算法么,&nbsp;自己的算法能力很薄弱,&nbsp;面试题需要准备到什么程度?没有ai项目经验的话,我该如何去补充,如何去找好的ai项目
smile丶snow:1.简历尽量一页,比如教育经历那里,全日制,计算机学院这些可以去掉没啥用好浪费空间。 熟悉三件套就没必要写了吧。js基本上是这样写 * JavaScript核心:深入理解 JS 运行机制(事件循环 Event Loop、微任务/宏任务),熟练掌握 Promise/Async 异步编程 模型。 熟悉可以改成熟练掌握。组件库写一个ant感觉就行,多写了浪费空间。 旅游项目是不是jonas的natours啊,我之前简历也有这个。我之前是这样写的 全栈思维: 熟悉 Node.js/Express 后端架构,掌握 MongoDB 数据库设计与聚合查询 工程化我觉得还是少些吧,不写就问的少,如果你真的了解的话可以写。 1.实习的话推荐大厂官网和aoob上面投,我自己有写一个校招网站的小网站可以直达~github主页上面有,顺便求个关注( 2.大三下一般课程比较少了吧,如果学校比较严的话可以多沉淀一会,如果不太严可以请dai课然后去实习,尽量找个近一些的就行。暑期实习不是暑假才实习哦,基本是上3月底4月初发offer就可以过去了,然后大概暑假的时候走转正流程答辩。 3.大厂算法题+js手写体。hot100+常见的比如数组转树,Promise.all,deepClone,之类 js手写都不难其实。算法看自己能力吧,我其实算法能力也不行。 4.自己平时没有用AI Coding吗?自己想一下怎么让AI帮你更好的写代码~比如Skill的诞生,OpenSpec的诞生,不都是我们想让AI更好帮我们写代码吗。
我的实习日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务