仿寫支付寶更多頁面中的滾動導(dǎo)航效果:
? ?工具:jquery、iscroll-probe.js
? ? iscroll介紹:
iScroll是一個高性能,資源占用少,無依賴,多平臺的javascript滾動插件。
它可以在桌面,移動設(shè)備和智能電視平臺上工作。它一直在大力優(yōu)化性能和文件大小以便在新舊設(shè)備上提供最順暢的體驗。
iScroll不僅僅是 滾動。它可以處理任何需要與用戶進(jìn)行移動交互的元素。在你的項目中包含僅僅4kb大小的iScroll,你的項目便擁有了滾動,縮放,平移,無限滾動,視差滾動,旋轉(zhuǎn)功能。給它一個掃帚它甚至能幫你打掃辦公室。
即使平臺本身提供的滾動已經(jīng)很不錯,iScroll可以在此基礎(chǔ)上提供更多不可思議的功能。具體來說:
細(xì)粒度控制滾動位置,甚至在滾動過程中。你總是可以獲取和設(shè)置滾動器的x,y坐標(biāo)。
動畫可以使用用戶自定義的擦出功能(反彈'bounce',彈性'elastic',回退'back',...)。
你可以很容易的掛靠大量的自定義事件(onBeforeScrollStart, *
開箱即用的多平臺支持。從很老的安卓設(shè)備到最新的iPhone,從Chrome瀏覽器到IE瀏覽器。
關(guān)于版本:
iscroll.js,這個版本是常規(guī)應(yīng)用的腳本。它包含大多數(shù)常用的功能,有很高的性能和很小的體積。
iscroll-lite.js,精簡版本。它不支持快速跳躍,滾動條,鼠標(biāo)滾輪,快捷鍵綁定。但如果你所需要的是滾動(特別是在移動平臺)?iScroll 精簡版?是又小又快的解決方案。
iscroll-probe.js,探查當(dāng)前滾動位置是一個要求很高的任務(wù),這就是為什么我決定建立一個專門的版本。如果你需要知道滾動位置在任何給定的時間,這是iScroll給你的。(我正在做更多的測試,這可能最終在常規(guī)iscroll.js腳本,請留意)。
iscroll-zoom.js,在標(biāo)準(zhǔn)滾動功能上增加縮放功能。
iscroll-infinite.js,可以做無限緩存的滾動。處理很長的列表的元素為移動設(shè)備并非易事。?iScroll infinite版本使用緩存機(jī)制,允許你滾動一個潛在的無限數(shù)量的元素
我使用的是iscroll-probe.js版本,之所以使用這個版本是因為該例子中需要用到監(jiān)聽滾動的事件
onScroll事件
The?scroll?event is available on?iScroll probe edition?only (iscroll-probe.js). The probe behavior can be altered through the?probeType?option.?scroll事件在iScroll probe edition版本中有效(僅包含在iscroll-probe.js腳本文件中)??梢酝ㄟ^改變probeType選項值來改變scroll事件的觸發(fā)時機(jī)。
options.probeType
這個屬性是調(diào)節(jié)在scroll事件觸發(fā)中探針的活躍度或者頻率。有效值有:1,?2,?3。數(shù)值越高表示更活躍的探測。探針活躍度越高對CPU的影響就越大。
probeType: 1?對性能沒有影響。scroll事件只有在滾動條不繁忙的時候觸發(fā)。?probeType: 2?除了在勢能和反彈范圍內(nèi),將在scroll事件周期內(nèi)一直執(zhí)行。這類似于原生的onScroll事件。
probeType: 3?像素級的觸發(fā)scroll事件。注意,此時滾動只關(guān)注requestAnimationFrame(即:useTransition:false).
注意iscroll在4.0和5.0版本在實例化的時候是4.0是new iScroll而5.0是new IScroll
使用iscroll時一定注意html的布局,以及對應(yīng)元素的定位,否則很容易導(dǎo)致滾動區(qū)域無法滾動的情況,具體代碼請參考:https://github.com/2276692243/iscrollNav
demo鏈接點這里:https://2276692243.github.io/iscrollNav/index.html
(上班時間,文章寫的倉促,請包涵,如發(fā)現(xiàn)問題還請指正)