Vue点击按钮回到顶部

1.在组件里进行按钮的样式设置

 <!-- 点击回到顶部 -->
   <div class="backTop" v-if="topShow" @click="backTop">
       <van-icon name="back-top" />
        <p>TOP</p>
    </div>
.backTop {
  width: 30px;
  height: 40px;
  text-align: center;
  color: #087aff;
  position: fixed;
  right: 10px;
  bottom: 130px;
  background-color: #fff;
  /deep/ .van-icon {
    font-size: 20px;
  }
  p {
    margin: 0 0;
    font-size: 12px;
  }
}

2.监听当前页面滚动位置

mounted() {
    window.addEventListener("scroll", this.scrollToTop); //监听滚动条
},
destroyed() {
    window.removeEventListener("scroll", this.scrollToTop); //移除滚动条监听
  },

3.触发滚动事件

 data() {
    return {
      topShow: false, //记录当前返回顶部标志的可视状态
      scrollTop: 0, //当前滚动位置
    };
  },


methods: {
    // 监听到的滚动的距离
    scrollToTop() {
      this.scrollTop =
        window.scrollY ||
        window.pageYOffset ||
        document.documentElement.scrollTop ||
        document.body.scrollTop;
      // console.log(this.scrollTop);

      // 计算距离顶部的高度,当高度大于300显示回顶部图标,小于300则隐藏
      if (this.scrollTop > 300) {
        this.topShow = true;
      } else {
        this.topShow = false;
      }
    },
    // 点击回到顶部方法,加计时器是为了过渡顺滑
    backTop() {
      // console.log(1);
      let timer = setInterval(() => {
        let ispeed = Math.floor(-this.scrollTop / 5);
        document.documentElement.scrollTop = document.body.scrollTop =
          this.scrollTop + ispeed;
        if (this.scrollTop === 0) {
          clearInterval(timer);
        }
      }, 16);
      // 直接上移至顶部
      // document.documentElement.scrollTop = document.body.scrollTop = 0;
    },
}

tip:main.js中设置,路由跳转始终保持顶部显示

import router from './router'//引入路由
 
router.afterEach((to,from,next) => {
  window.scrollTo(0,0); //切换路由之后滚动条始终在最顶部
})

有个更好用的方法

    // 控制条移动到需要修改的位置
    let finScroll = (Number(inputData.page) - 1) * this.pageHeight + Number(inputData.oneY) - 80;

    // 需要控制的滚动条盒子
    let div = document.getElementsByClassName("previewContract")[0];

    div.scroll({
      left: 0,
      top: finScroll,
      behavior: "smooth"
      });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容