requestAnimationFrame实现动画

本文介绍了如何利用JavaScript的requestAnimationFrame方法,实现在浏览器中每帧动态增加div元素宽度,直到达到100px,展示了从0到100px的动画过程和requestAnimationFrame的时间间隔记录。
摘要由CSDN通过智能技术生成

实现浏览器在每一帧中,将页面div元素的宽度变长1px,直到宽度达到100px后停止。

我们采用requestAnimationFrame来实现这个功能,关键代码如下:

<div id="div" className={"progress-bar "} style={{ backgroundColor: 'pink' }}>
</div>
<button id="start">开始动画</button >



<script>


    const btn = document.getElementById('start');
    const div = document.getElementById('div');
    let start = 0;
    const allInterval = [];
    const progress = () => {
      div.style.width = div.offsetWidth + 1 + 'px'
      div.innerHTML = (div.offsetWidth) + '%'
      if (div.offsetWidth < 100) {
        const current = Date.now()
        allInterval.push(current - start)
        start = current
        requestAnimationFrame(progress)
      } else {
        console.log(allInterval) // 打印requestAnimationFrame的全部时间间隔
      }
    }
    btn.addEventListener('click', () => {
      div.style.width = 0
      const currrent = Date.now()
      start = currrent
      requestAnimationFrame(progress)
      console.log(allInterval)
    })


</script>

最终的效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值