better-scroll無法滾動的問題。


better-scroll無法滾動的問題。
1
遇見better-scroll(以下簡稱:BS)無法滾動,可從兩方面去考慮。
一是層級關系出錯,二是計算高度出錯。
###1,層級關系
BS的基本結構是:一個wrapper層,一個content層。wrapper層是整個滾動頁面占據的顯示空間。content層則包含了全部的頁面內容。

<div class="wrapper">
  <div class="content">
    content...
  </div>
</div>

new BS('wrapper');
簡單點說,就是:wrapper占住位置,content在wrapper里面滾動。
自然,創建BS對象的時候傳入的dom也該是wrapper。同時,wrapper里面不能存在多級div,也就是說,所有內容都需要被包含在一個content中。

檢測此部分是否正確,只需要打開檢查工具,查看content上是否被附加了一些用於滾動的額外的style。

style="pointer-events: auto; transition-property: transform; transition-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1); transition-duration: 0ms; transform: translate(0px, 0px) translateZ(0px);"

###2,頁面高度計算
當層級關系檢查無誤但還是無法滾動,則建議打印BS對象查看一下。
關注兩個變量:hasVerticalScroll和scrollerHeight。
如果hasVerticalScroll為false,則一定時wrapper和content計算高度時出錯了。此時,對比下scrollerHeight和wrapperHeight,多半是前者小於等於后者。然后,手動修改hasVerticalScroll為true,會發現可以拖拽,但不是滾動。這是因為scrollerHeight計算錯誤。這就需要根據具體情況去查找原因了。

父級wrapper不能設height 100% , 否則scrollerHeight=wrapperHeight

高度計算出錯多半是因為dom沒更新完就初始化BS。(BS必須在dom完成之后被初始化)  $nextTick


免責聲明!

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



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