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