animation-timing-function:steps的坑

animation-timing-function:steps的坑

animation-timing-function:steps(n,[start | end])。
传入一到两个参数,第一个参数把一个关键帧周期分成n等分,然后一个关键帧周期里的动画就会平均的运行。第二个参数start表示从动画的开头运行,相反,end(默认)就表示从动画的结尾开始运行。

	#box{
	  position:relative;
	  width:600px;
	  height:600px;
	  border:1px solid;
	}
	.inner{
	  width:100px;
	  height:100px;
	  background:red;
	  position:absolute;
	  margin:auto;
	  top:0;
	  left:0;
	  right:0;
	  bottom:0;
	  animation-name:ani;
	  animation-duration:4s;
	  animation-timing-function:steps(5);
	  animation-fill-mode:both;
	}
	@keyframes ani{
		0%{
		  transform:translateX(-250PX);
		}
		50%{
		  transform:translateX(0PX);
		}
		100%{
		  transform:translateX(250PX);
		}
	}

HTM代码:

   <div id="box">
	<div class="inner"></div>
   </div>

页面效果:
在这里插入图片描述
可以看见0%-50%这个关键帧周期执行了5步,50%-100%这个关键帧周期也执行了5步。

另外:start表示看不到第一帧,end表示看不到最后一帧。

	.inner{
	  width:100px;
	  height:100px;
	  background:red;
	  position:absolute;
	  margin:auto;
	  top:0;
	  left:0;
	  right:0;
	  bottom:0;
	  animation-name:ani;
	  animation-duration:5s;
	  animation-timing-function:steps(5,end);
	  animation-iteration-count:3;
	  animation-direction: alternate;
	}
	@keyframes ani{
		0%{
		  transform:translateX(-250PX);
		}
		100%{
		  transform:translateX(250PX);
		}
	}

页面效果:
在这里插入图片描述
可以看见第一次移动的时候没有碰到右边的边框,并且当时停留的时间2倍,整个动画完了才碰到右边的边框,因为steps里的第二个参数是end,说明在动画执行的时候,看不到最后一帧,即:transform:translateX(250PX)。
将end换成start:
页面效果:
在这里插入图片描述
执行第二次的时候反应出来的问题跟end时候一样,这个时候看不到的是第一帧,即:transform:translateX(-250PX)。

总结:

当animation-iteration-count只有一次的时候,设置animation-timing-function:steps(n,[start | end])是正常的;
当animation-iteration-count多次的时候,设置animation-timing-function:steps的start(动画播放期间的0%);end(动画播放期间的100%)会看不见,并且停留时间为2倍,只有动画执行完毕或者开始执行前(例如延迟)才会执行第一帧或者最后一帧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值