var id = 0 function sc(time){ if(document.body.scrollTop > $('#xx').offsetTop) { requestAnimationFrame(sc) document.body.scrollTop -= 8 } else cancelAnimationFrame(id) } var $ = function(selecor){ return document.querySelector(selecor) } function start(){ id = requestAnimationFrame(sc) } start()
浏览器会基于当前页面是否可见、CPU的负荷情况等来自行决定最佳的帧速率,从而更合理地使用CPU.
效果就是动画更平滑,而不是很突然.
默认只调用一次,如果要连续的动画,要用递归的方式.