CSS中的步进函数

CSS的动画过程中可以使用贝塞尔曲线等函数指定缓动的动画动作,还可以指定过渡中的每一步骤的状态,这种应用场景通常在创建定格动画的时候,比如一个DOM元素需要展示不同的图组动画,那么前端可以将多个动画图组存放到一个文件夹中,然后通过设置定位,让元素每次显示其中的一个图像。
我们可以尝试在网上找一个动画组的图片。


image.png
  • 使用步进函数:
  <div class="stepImg">
  </div>

  .stepImg {
    width: 120px;
    height: 140px;
    margin: auto;
    transition: background-position 2s steps(6, start);
    background: url(steps.png) no-repeat -288px 0;
    cursor: pointer;
  }
  .stepImg:hover {
    background-position: 0 0;
  }
步进函数.gif

如果只使用background-position属性来实现背景动画,如果使用线性或缓动过渡,那么背景图片只会滑动,无法构成动画,因此,我们使用steps()步进函数通过将动画组图片拆解为多个步骤下发出去来完成过渡。

这里的steps(6, start)函数指的是“把过渡过程切分为6个不同的步骤,在每一次开始时改变属性”。加上开始的状态,就这样创建了7个帧。
一般steps(6)会在每一步结束时改变属性,但也可以通过传入start或者end作为第二个参数进行说明来明确的指定。

同时需要对步进函数进行声明的是:在完成过渡后,指令结束也就是指鼠标移开的话,过渡则会反向发生,反转的动画仍有6个步骤,这几个步骤不会与原来的背景位置吻合,也就是说当鼠标移开时,会产生动画错乱。
因此后面几种过渡技术可以相对的避免这种情况发生:

  • 1、使用不同的正向和反向过渡技术
  • 2、“粘着”过渡
  • 3、延迟过渡
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • css3动画 过渡:transition 2D 转换 transform 3D 转换 transform 动画:a...
    刘松阳阅读 4,110评论 0 0
  • 一般情况下CSS属性的变化是瞬时变化的,但是CSS过渡可以控制变化效果,让变化平滑发生。 但是并不是所有的CSS属...
    chen_cheng阅读 1,592评论 0 1
  • 看到一个喜欢的动画,存下来了,对照着做出来一个demo,记录笔记 动手前先复习相关概念 Transform 简单来...
    Ekolia阅读 3,647评论 2 3
  • transitiontransition-property 过渡属性transition-duration 过渡持...
    Rella7阅读 3,157评论 0 0
  • 方块“Z”字形运动 要求:5s钟循环五次;每次的执行时间为2s;每一次执行到底部后反方向执行;最后停留在最后一帧 ...
    栀子花wish阅读 4,678评论 0 0