requestAnimationFrame

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.

效果就是动画更平滑,而不是很突然.

默认只调用一次,如果要连续的动画,要用递归的方式.

原文地址:https://www.cnblogs.com/xuezizhenchengxuyuan/p/6827780.html