iScroll
1路操、iScroll在每一個滑動區(qū)域都需要初始化疾渴,且在每一個頁面沒有數(shù)量限制。
2屯仗、使DOM盡可能的簡單搞坝,硬件的處理能力有限。
3魁袜、iScroll必須被應(yīng)用在滑動區(qū)域的wrapper元素上桩撮,只有第一個子元素會被滾動,其他的子元素會被忽略峰弹。
4店量、box-shadow,opacity鞠呈,text-shadow和alpha channels都是與硬件加速無法很好結(jié)合的屬性融师。用背景圖來代替陰影效果效果會更好。
5蚁吝、iScroll采用querySelector旱爆,因此只有第一個元素會被選中,如果想要選取多個對象窘茁,需要使用循環(huán)怀伦。
6、當(dāng)DOM準備就緒時庙曙,需要初始化iScroll空镜。最安全的選擇是在window onload事件上初始化它著摔。 DOMContentLoaded或內(nèi)聯(lián)初始化也很好但請記住這需要知道滾動區(qū)域的高度/寬度溶褪。如果圖像沒有明確的寬度/高度聲明券腔,則iScroll很可能最終會出現(xiàn)錯誤的滾動條大小亿笤。
7耍贾、給滑動的容器添加position: relative或者absolute蜀漆,通成荩可以解決錯誤計算wrapper大小的問題又官。
8左驾、如果DOM比較復(fù)雜镣隶,最好給iScroll初始化的onload事件添加延遲,100-200ms的延遲會讓瀏覽器得到休息诡右。
9安岂、iScroll可以在初始化階段通過第二個參數(shù)進行配置。
var myScroll = new IScroll('#wrapper', {
mouseWheel: true,
scrollbars: true
});
better-scroll
1帆吻、better-scroll 是一款重點解決移動端(已支持 PC)各種滾動場景需求的插件域那。它的核心是借鑒的 iScroll 的實現(xiàn),它的 API 設(shè)計基本兼容 iScroll猜煮,在 iScroll 的基礎(chǔ)上又擴展了一些 feature 以及做了一些性能優(yōu)化次员。better-scroll 是基于原生 JS 實現(xiàn)的败许,不依賴任何框架。
2淑蔚、滾動原理:
瀏覽器的滾動原理: 當(dāng)頁面內(nèi)容的高度超過視口高度的時候市殷,會出現(xiàn)縱向滾動條;當(dāng)頁面內(nèi)容的寬度超過視口寬度的時候刹衫,會出現(xiàn)橫向滾動條醋寝。也就是當(dāng)我們的視口展示不下內(nèi)容的時候,會通過滾動條的方式讓用戶滾動屏幕看到剩余的內(nèi)容带迟。
better-scroll 也是一樣的原理甥桂。wrapper(即父容器)會有固定的高度,content(即第一個子元素)邮旷,高度會隨著內(nèi)容的大小而撐高那么,當(dāng) content 的高度不超過父容器的高度蝇摸,是不能滾動的婶肩,而它一旦超過了父容器的高度,我們就可以滾動子元素了貌夕。