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;//不要这句会有点卡顿

});

转载于:https://www.cnblogs.com/itliulei/p/9223132.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值