简单的页面内滑动跳转实现方法

具体实现原理

  • 获取当前视口顶端距离页面顶端的距离 window.scrollY 记录此处,设置为滑动起始位置。
  • 获取要跳转到元素的的top值 目标元素.offsetTop。
  • 目标元素.offsetTop - window.scrollY 为移动的距离。
  • 开启定时器将整个过程分成若干次,到达动画滑动的效果。

具体实例

let oNava = document.querySelectorAll("nav>ul.navlist>li>a");
        for(let i=0;i<oNava.length;i++){
            oNava[i].onclick=function(event){
                //阻止a标签默认刷新页面事件
                event.preventDefault();
                //目标位置
                let toNavaEleTop = document.querySelector(event.currentTarget.getAttribute("href")).offsetTop;
                let targetTop = toNavaEleTop - 120;  //u优化视觉效果;
                // 获取当面视口的顶端距离页面顶端Top值
                let currentTop = window.scrollY;
                let num = 25; //分25次完成
                let time = 500 / num;  //设置总时间为50 ms,每次时间为time
                let v = (targetTop - currentTop) / num; //每次移动路程
                let i = 0;
                console.log(currentTop)
                let timer = setInterval(()=>{
                    if(i>num){
                       window.clearInterval(timer)
                       return
                    }
                    i++
                    window.scrollTo(0,currentTop+v*i)
                },time)
             }
        }
复制代码

以上为一种简单的实现方法(待补充其他改进方法)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值