Vue點擊按鈕回到頂部

1.在組件里進(jìn)行按鈕的樣式設(shè)置

 <!-- 點擊回到頂部 -->
   <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.監(jiān)聽當(dāng)前頁面滾動位置

mounted() {
    window.addEventListener("scroll", this.scrollToTop); //監(jiān)聽滾動條
},
destroyed() {
    window.removeEventListener("scroll", this.scrollToTop); //移除滾動條監(jiān)聽
  },

3.觸發(fā)滾動事件

 data() {
    return {
      topShow: false, //記錄當(dāng)前返回頂部標(biāo)志的可視狀態(tài)
      scrollTop: 0, //當(dāng)前滾動位置
    };
  },


methods: {
    // 監(jiān)聽到的滾動的距離
    scrollToTop() {
      this.scrollTop =
        window.scrollY ||
        window.pageYOffset ||
        document.documentElement.scrollTop ||
        document.body.scrollTop;
      // console.log(this.scrollTop);

      // 計算距離頂部的高度,當(dāng)高度大于300顯示回頂部圖標(biāo),小于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中設(shè)置,路由跳轉(zhuǎn)始終保持頂部顯示

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"
      });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容