js实现回到顶部效果。点击回到顶部 , 滚轮向下滚动中断回到顶部 , 停在当前位置

子曰:温故而知新,可以为师矣

<style>
      .topBtn {
        width: 50px;
        height: 90px;
        position: fixed;
        bottom: 50px;
        right: 50px;
        background-color: palegreen;
      }
      .contain {
        width: 400px;
        height: 800px;
        background-color: orange;
        border: 1px solid #ccc;
      }
    </style>
    <div class="topBtn"></div>
    <div class="contain"></div>
    <div class="contain"></div>
    <div class="contain"></div>
    <div class="contain"></div>
    <div class="contain"></div>
    <div class="contain"></div>
<script>
      const topBtn = document.querySelector('.topBtn');
      topBtn.onclick = function () {
        if (getScroll()) {
          setScroll();
        }
      };
      // 获取当前位置到顶部的距离
      function getScroll() {
        return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
      }

      // 监测鼠标滚轮状态,tag为true时为滚轮向下滚动,中断回到顶部
      let tag = false;
      document.addEventListener('wheel', moveWheel, false);
      function moveWheel(e) {
        let timerWheel = null;
        e = window.event;
        if (e.wheelDelta < 0) {
          console.log('鼠标滚轮向下滚动');
          tag = true;
        }
        // 滚轮停止不动200ms后tag为false,变回默认状态
        clearTimeout(timerWheel);
        timerWheel = setTimeout(() => {
          tag = false;
        }, 200);
      }

      // 回到顶部
      function setScroll() {
        let timer = setInterval(() => {
          let base = getScroll();
          console.log(tag);
          if (base <= 1 || tag) {
            // 当滚轮往下滚动时tag为true,停止到达顶部
            clearInterval(timer);
          }
          document.documentElement.scrollTop = base - Math.pow(base, 3 / 5); // 速度可自己调整
        }, 20);
      }
    </script>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值