js 滚动到指定位置(带step 速度)

function scroto(tray){
var timer=setTimeout(function(){
var curr_y=document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; // 获取原始滚动告诉
var step=40;
if(curr_y<tray){ // 目标距离大于 原始距离 向下滚动
var dist=Math.ceil((tray-curr_y)/step) //取每次滚动的距离
var next=curr_y+dist
if(next<tray){ // 如果小于 还要向下滚动
window.scrollTo(0,next)
scroto(tray) // 再次执行
}else{ // 如果距离大于 超过 直接跳到 目标距离
window.scrollTo(0,tray)
}

}else{
var dist=Math.floor((tray-curr_y)/step) //取每次滚动的距离
var next=curr_y+dist
if(next>tray){
window.scrollTo(0,next)
scroto(tray) // 再次执行
}else{
window.scrollTo(0,tray)
}
}

})
}
// 用法
 $(".a_clic").click(function () {
scroto($($(this).attr("href")).offset().top)
// $("html, body").animate({scrollTop: $($(this).attr("href")).offset().top -20+ "px"}, 500);

return false;//不要这句会有点卡顿

});
posted @ 2018-06-25 10:24  IT刘磊  阅读(747)  评论(0编辑  收藏  举报