vue使用better-scroll

better-scroll是D8黃軼老師基于iscroll重寫的一個插件,在vue中使用這個插件能給App帶來流暢性,提高了用戶體驗。

封面.jpg

一、安裝

這個步驟非常重要,之前是通過npm install better-scroll --save 來安裝,這樣安裝的是最新版本。但是,實戰過程中發現了一個非常嚴重的bug,多次通過路由切換組件頁面滾動會無效,困擾了我很久很久。
于是,百度一下,發現根本沒有出現類似情況。
然后,猜測是版本問題而導致的,最后在package.json里手動安裝0.1.15版本,解決了這個問題。

//package.json
"dependencies": {
  "better-scroll": "0.1.15"
}
//終端
npm install

二、html結構

div.wrapper > div.content > ul > li

在這里,分成4層結構。最外層一定要設置寬度以及定位,外層高度要100%,只能滾動第一個li,因此我們把元素全放到li標簽里即可。子元素可以有多個同級,但是子元素高度一定要大于父元素,這個是產生滾動的必要條件。

.wrapper{
  width: 100%;
  position: absolute;
  top: 45px;
  bottom: 50px;  /*關鍵*/
  overflow: hidden;
  z-index: 1;
}

三、初始化

首先要引入組件,需要dom結構加載完成時才執行初始化($nextTick)。因此,需要用上鉤子函數created()或者mounted()。

<div class="wrapper" ref="wrapper">
  <div class="content">
    <ul>
      <li></li>
    </ul>
  </div>
</div>
import BScroll from 'better-scroll'
mounted() {
      this.$nextTick(() => {
        //$refs綁定元素
        if(!this.scroll){
            this.scroll = new BScroll(this.$refs.wrapper, {
            //開啟點擊事件 默認為false
            click:true
        })
        // console.log(this.scroll)
        }else if(!this.$refs.wrapper){
            return
        }
        else{
            this.scroll.refresh()
        }
      })
  }

四、優點

1.體驗像原生:滾動非常流暢,而且沒有滾動條。
2.記錄當前路由滾動位置:在vue中通過路由切換頁面時組件會自動滾動到頂部,需要監聽滾動行為才能讓滾動位置固定,better-scroll解決了這個問題。

五、最后

如果這篇文章幫助到了你,麻煩點個贊~

demo.gif
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容