requestanimationframe 无限循环

  1. 简介

requestAnimationFrame()函数就是针对动画效果的API,你可以把它用在DOM上的风格变化或画布动画或WebGL中

  1. 优点

浏览器可以优化并行的动画动作,更合理的重新排列动作序列,并把能够合并的动作放在一个渲染周期内完成,从而呈现出更流畅的动画效果。通过requestAnimationFrame(),JS动画能够和CSS动画/变换或SVG SMIL动画同步发生。另外,如果在一个浏览器标签页里运行一个动画,当这个标签页不可见时,浏览器会暂停它,这会减少CPU,内存的压力。

  1. 与setTimeOut区别

    1)setTimeout 属于 JS 引擎,存在事件轮询,存在事件队列。
    requestAnimationFrame 属于 GUI 引擎,发生在渲 染过程的中重绘重排部分,与电脑分辨路保持一致。

    2)当页面被隐藏或最小化时,定时器 setTimeout 仍在后台执行动画任 务。
    当页面处于未激活的状态下,该页面的屏幕刷新任 务会被系统暂停,requestAnimationFrame 也会停止。

    3)利用 setTimeout,这种定时机制去做动画,模拟固定时间刷新页面。
    requestAnimationFrame 由浏览器专门为动画提供 的 API,在运行时浏览器会自动优化方法的调用,在特定性环境下可以有效节省了 CPU 开销。

  2. 代码实现

const autoMove=(flag)=>{
	let dom = document.getElementById('div')
	const step=()=>{
		dom.scrollLeft = dom.scrollLeft +100
		if(flag){
			window.requestAnimationFrame(step)
		}
	}
		window.requestAnimationFrame(step)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现一排图片的无限循环,可以使用CSS和JavaScript来实现。 首先,需要一个外层容器来包裹图片,可以使用一个 `<div>` 元素作为容器,并设置适当的宽度和高度。 然后,在CSS中设置容器的样式,将其设置为相对定位 (`position: relative;`),并设置溢出隐藏 (`overflow: hidden;`),以确保图片在容器范围内显示。 接下来,在容器内部创建一个内层容器,使用 `<div>` 元素,并设置其样式为绝对定位 (`position: absolute;`)。这个内层容器将用于存放图片。 使用JavaScript,可以动态地将多个图片元素添加到内层容器中。可以使用 `createElement` 方法创建 `<img>` 元素,并设置其 `src` 属性为图片的路径。然后,将这些图片元素添加到内层容器中。 为了实现无限循环,需要计算并设置内层容器的宽度,确保所有图片元素在水平方向上能够排成一行。可以使用 `offsetWidth` 和 `clientWidth` 属性来计算宽度,并设置内层容器的 `width` 属性。 接下来,需要使用动画或计时器功能,通过改变内层容器的 `left` 属性值,使图片元素在容器内水平滚动。可以使用 `setInterval` 或 `requestAnimationFrame` 方法来实现定时器功能,并在每个时间间隔内更新 `left` 属性值。 当滚动到最后一个图片时,需要将内层容器的 `left` 属性重置为0,实现无限循环效果。 综上所述,通过使用HTML、CSS和JavaScript的组合,可以实现一排图片的无限循环效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值