使用 vue + better-scroll實現橫向滾動效果


 

1、安裝better-scroll插件:npm install better-scroll --save

2、在項目中引用better-scroll對象:import BScroll from 'better-scroll'

3、例如,看一段代碼:

 

1 <div class="person-wrap" ref="personWrap">
2   <ul class="person-list" ref="personTab">
3     <li class="person-item">1</li>
4     <li class="person-item">2</li>
5     <li class="person-item">3</li>
6     <li class="person-item">4</li>
7     <li class="person-item">5</li>
8   </ul>
9 </div>

 

 

 

  

  以上有三個點需要注意,第一個點是外部div是滾動的整個區域,需要通過ref獲取dom;
  第二點是ul元素包裹子元素li的父元素,它的寬度是動態的,根據N個子元素的寬度計算得來,因此也需要通過ref獲取dom;
  第三點是li元素在實際開發中是不確定的,它的個數以及寬度時刻影響着父元素的寬度。

4、最后,看一段核心代碼:
 1 import BScroll from "better-scroll";
 2 export default {
 3   name: "ReserveInfo",
 4   data() {
 5     return {};
 6   },
 7   created() {
 8     this.$nextTick(() => {
 9       this.personScroll();
10     });
11   },
12   methods: {
13     personScroll() {
14       // 默認有六個li子元素,每個子元素的寬度為120px
15       let width = 6 * 120;
16       this.$refs.personTab.style.width = width + "px";
17       // this.$nextTick 是一個異步函數,為了確保 DOM 已經渲染
18       this.$nextTick(() => {
19         if (!this.scroll) {
20           this.scroll = new BScroll(this.$refs.personWrap, {
21             startX: 0,
22             click: true,
23             scrollX: true,
24             // 忽略豎直方向的滾動
25             scrollY: false,
26             eventPassthrough: "vertical"
27           });
28         } else {
29           this.scroll.refresh();
30         }
31       });
32     }
33   }
34 }

 

 
        
在html中dom全部渲染完畢后,調用this.personScroll()方法,該方法首先為ul父元素的寬度動態賦值;
接着定義滾動區域對象,設置相關的屬性即可。

尾聲

通過better-scroll我們能輕松的實現橫向滾動或者縱向滾動,然而知道怎么用其實並沒有什么亂用,

我們需要明白的是其原理,最后的最后請各位看官移步到better-scroll庫設計者有話說,進一步探索better-scroll的奧妙所在。



[links]:https://www.imooc.com/article/272021

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM