學(xué)習(xí)使用jquery iScroll.js移動(dòng)端滾動(dòng)條插件
大家在日常工作中最常用的插件是什么,jQurey?Lazyload?但是這些都是在PC端,但是在移動(dòng)端最常用的插件莫過(guò)于iScroll了,iScroll到底是什么東西,應(yīng)該怎么用?iScroll是個(gè)很強(qiáng)大的插件,我也只是略懂皮毛,這里我們簡(jiǎn)單的介紹一下。
iScroll的產(chǎn)生:
iScroll的產(chǎn)生完全是因?yàn)橐苿?dòng)版webkit瀏覽器,例如在iPhone,Android 的移動(dòng)設(shè)備上。
iScroll的使用方法:
iScroll的原理是外層有一個(gè)溢出隱藏(overflow:hidden;)的DOM,然后這個(gè)區(qū)域內(nèi)的第一個(gè)DOM結(jié)構(gòu)會(huì)被實(shí)例化,其包裹的內(nèi)容可以縱向或者橫向的滾動(dòng),所以在使用iScroll的時(shí)候,滾動(dòng)元素要盡量的簡(jiǎn)單,減少DOM個(gè)數(shù),減少嵌套,因?yàn)镈OM結(jié)構(gòu)越是復(fù)雜iScroll運(yùn)行起來(lái)就越是吃力,有可能會(huì)造成某些節(jié)點(diǎn)顯示不正常的情況。 所以,推薦使用的DOM結(jié)構(gòu)如下:
<div id="wrapper">//overflow:hidden; <ul> //只有第一個(gè)DOM結(jié)構(gòu)(ul)被實(shí)例化,這個(gè)DOM可以縱向或者橫向的滾動(dòng), //多出的內(nèi)容會(huì)被wrapper的樣式hidden。 <li>1</li> <li>2</li> <li>3</li> </ul> </div>
注意:再次重申,只有wrapper里的第一個(gè)子元素(ul)才可以被實(shí)例化滾動(dòng),并且要結(jié)合外層的DOM(wrapper)才能實(shí)現(xiàn)滾動(dòng)。
如果 wrapper中有多個(gè)ul怎么辦?很簡(jiǎn)單,記住那句話(huà),只有wrapper里的第一個(gè)子元素(ul)才可以被實(shí)例化滾動(dòng):
<div id="wrapper">//overflow:hidden; <div id="first"> //只有第一個(gè)DOM結(jié)構(gòu)(ul)被實(shí)例化,這個(gè)DOM可以縱向或者橫向的滾動(dòng), //多出的內(nèi)容會(huì)被wrapper的樣式hidden <ul> <li>1</li> <li>2</li> <li>3</li> </ul> <ul> <li>4</li> <li>5</li> <li>6</li> </ul> </div> </div>
看到了吧,只有first會(huì)被實(shí)例化。 注意:這里第一個(gè)DOM結(jié)構(gòu)的ID(first)可以不寫(xiě),我只是為了方便大家識(shí)別才寫(xiě)了個(gè)ID,但是最外層的ID(wrapper)一定要寫(xiě),因?yàn)樵贘S實(shí)例化的時(shí)候需要填寫(xiě)這個(gè)ID:
var myScroll = new iScroll("wrapper");
iScroll應(yīng)該如何實(shí)例化:
既然說(shuō)道了實(shí)例化,我們應(yīng)該在什么時(shí)候?qū)嵗???jù)說(shuō)實(shí)例化的方法有很多,但是我沒(méi)用過(guò),我只說(shuō)一種:
(1)在HTML(uw3c.html)頁(yè)面底部(body之后html之前)加載iscroll.js與當(dāng)前頁(yè)面的uw3c.js,這樣能確保HTML的DOM結(jié)構(gòu)能加載出來(lái)。
(2)在JS插入頁(yè)面DOM結(jié)構(gòu)和數(shù)據(jù)之前實(shí)例化iScroll,也就是在JS的最開(kāi)始實(shí)例化,因?yàn)橹罂赡軙?huì)使用JS來(lái)插入DOM或者數(shù)據(jù),這樣以來(lái)能確保在插入數(shù)據(jù)之前iScroll已經(jīng)實(shí)例化了。
HTML://HTML結(jié)構(gòu)
<html > <body> ...code... </body> //插入iscroll.js文件 <script type="text/javascript" src="js/iscroll.js" > </script > //插入本頁(yè)面JS文件 <script type="text/javascript" src="js/uw3c.js" > </script > </html>
JS://JS文件內(nèi)容
var myscroll; function iscroll(data){ //實(shí)例化iScroll myscroll=new iScroll("wrapper"); pageData(data); } function pageData(obj){ $("body").html(obj); myscroll.refresh();//當(dāng)DOM結(jié)構(gòu)發(fā)生變化的時(shí)候,需要刷新iScroll } iscroll("<div>pagedata</div>");
iScroll中的參數(shù):
在實(shí)例化iScroll的時(shí)候,可以傳入兩個(gè)參數(shù),第一個(gè)參數(shù)是實(shí)例化的外層的DOM的ID,第二個(gè)參數(shù)是iScroll執(zhí)行方法的對(duì)象:
var myscroll=new iScroll("wrapper",{hScrollbar:false}); 或者 var opts = { vScroll:false,//禁止垂直滾動(dòng) snap:true,//執(zhí)行傳送帶效果 hScrollbar:false//隱藏水平方向上的滾動(dòng)條 }; var myscroll = new iScroll("wrapper",opts);
第二個(gè)參數(shù)內(nèi)容如下,這個(gè)參數(shù)會(huì)控制iScroll的效果:
hScroll false 禁止橫向滾動(dòng) true橫向滾動(dòng) 默認(rèn)為true vScroll false 禁止垂直滾動(dòng) true垂直滾動(dòng) 默認(rèn)為true hScrollbar false隱藏水平方向上的滾動(dòng)條 vScrollbar false 隱藏垂直方向上的滾動(dòng)條 fadeScrollbar false 指定在無(wú)漸隱效果時(shí)隱藏滾動(dòng)條 hideScrollbar 在沒(méi)有用戶(hù)交互時(shí)隱藏滾動(dòng)條 默認(rèn)為true bounce 啟用或禁用邊界的反彈,默認(rèn)為true momentum 啟用或禁用慣性,默認(rèn)為true,此參數(shù)在你想要保存資源的時(shí)候非常有用 lockDirection false取消拖動(dòng)方向的鎖定,true拖動(dòng)只能在一個(gè)方向上(up/down 或者left/right)
iScroll中的方法:
當(dāng)然在第二個(gè)參數(shù)中,也有一些方法可以執(zhí)行:
(1)scrollTo(x, y, time, relative)方法:傳入4個(gè)參數(shù):X軸滾動(dòng)距離,Y軸滾動(dòng)距離,效果時(shí)間,是否相對(duì)當(dāng)前位置。所以例如:
//在200毫秒的時(shí)間內(nèi),Y軸向上滾動(dòng)100像素; uw3c.scrollTo(0, -100, 200) //在200毫秒的時(shí)間內(nèi),相對(duì)于當(dāng)前位置,X軸向左滾動(dòng)100像素; uw3c.scrollTo(-100, 0, 200, true)
(2)refresh()方法:在DOM結(jié)構(gòu)發(fā)生改變之后,需要刷新iScroll,否則滾動(dòng)插件會(huì)實(shí)例化的不準(zhǔn)確:
uw3c.refresh();//刷新iScroll
(3)onPosChange,有沒(méi)有一個(gè)方法能返回位置的變化?你可以查詢(xún)一下自己所用的iScroll中有沒(méi)有onPosChange方法:
onPosChange:function(x,y){ if(y < -200){ //如果Y周向上滾動(dòng)200像素,$("#uw3c")就顯示,否則就隱藏。 $("#uw3c").show(); }else{ $("#uw3c").hide(); } }
(4)onScrollEnd:滾動(dòng)結(jié)束時(shí)執(zhí)行的事件,如果想在滾動(dòng)結(jié)束時(shí)出發(fā)摸個(gè)事件,這個(gè)方法就拍上用處了:
//滾動(dòng)結(jié)束后,執(zhí)行的方法,滾動(dòng)后會(huì)出現(xiàn)提示框alert("uw3c.com") onScrollEnd:function(){ alert("uw3c.com"); }
(5)onRefresh:在DOM結(jié)構(gòu)發(fā)生改變之后,需要刷新iScroll,否則滾動(dòng)插件會(huì)實(shí)例化的不準(zhǔn)確,onRefresh是刷新完iScroll會(huì)執(zhí)行的方法。
(6)onBeforeScrollStart:開(kāi)始滾動(dòng)前的時(shí)間回調(diào),默認(rèn)是阻止瀏覽器默認(rèn)行為 。
(7)onScrollStart:開(kāi)始滾動(dòng)的回調(diào)。
(8)onBeforeScrollMove:在內(nèi)容移動(dòng)前的回調(diào)。
(9)onScrollMove:內(nèi)容移動(dòng)的回調(diào)。
(10)onBeforeScrollEnd:在滾動(dòng)結(jié)束前的回調(diào)。
(11)onTouchEnd:手離開(kāi)屏幕后的回調(diào)。
(12)onDestroy:銷(xiāo)毀實(shí)例的回調(diào)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家熟練使用iScroll.js移動(dòng)端滾動(dòng)條插件有所幫助。
- javaScript實(shí)現(xiàn)滾動(dòng)條事件詳解
- 原生JS實(shí)現(xiàn)自定義滾動(dòng)條效果
- JS自定義滾動(dòng)條效果簡(jiǎn)單實(shí)現(xiàn)代碼
- JavaScript限定范圍拖拽及自定義滾動(dòng)條應(yīng)用(3)
- js滾動(dòng)條平滑移動(dòng)示例代碼
- js/jquery獲取瀏覽器窗口可視區(qū)域高度和寬度以及滾動(dòng)條高度實(shí)現(xiàn)代碼
- 判斷滾動(dòng)條到底部的JS代碼
- JS實(shí)現(xiàn)判斷滾動(dòng)條滾到頁(yè)面底部并執(zhí)行事件的方法
- js操作滾動(dòng)條事件實(shí)例
- javascript實(shí)現(xiàn)自定義滾動(dòng)條效果
相關(guān)文章
jquery實(shí)現(xiàn)的可隱藏重現(xiàn)的靠邊懸浮層實(shí)例代碼
本實(shí)例使用jquery操作div的CSS實(shí)現(xiàn)了可隱藏重現(xiàn)的靠邊懸浮層,具體實(shí)現(xiàn)代碼如下,感興趣的朋友可以參考下哈2013-05-05jQuery得到多個(gè)值只能用取Class ,不能用取ID的方法
下面小編就為大家?guī)?lái)一篇jQuery得到多個(gè)值只能用取Class ,不能用取ID的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12jQuery實(shí)現(xiàn)炫麗的3d旋轉(zhuǎn)星空效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)炫麗的3d旋轉(zhuǎn)星空效果,涉及jQuery數(shù)值運(yùn)算與頁(yè)面元素屬性動(dòng)態(tài)變換相關(guān)操作技巧,需要的朋友可以參考下2018-07-07jQuery新聞滾動(dòng)插件 jquery.roller.js
任務(wù)需要,就寫(xiě)了一個(gè)jQuery新聞滾動(dòng)插件jquery.roller.js,功能相對(duì)比較簡(jiǎn)單,可能往后會(huì)加入ajax一段時(shí)間輪詢(xún) 動(dòng)態(tài)加載的功能.下面直接給出源代碼,如果需要可以直接下載2011-06-06bootstrap中日歷范圍選擇插件daterangepicker的使用詳解
daterangepicker是bootstrap的一個(gè)日歷插件 主要用來(lái)選擇時(shí)間段的插件 這個(gè)插件很好用也很容易操作 。這篇文章主要介紹了bootstrap中日歷范圍選擇插件daterangepicker的使用詳解,需要的朋友可以參考下2018-04-04jQuery 圖片查看器插件 Viewer.js用法簡(jiǎn)單示例
這篇文章主要介紹了jQuery 圖片查看器插件 Viewer.js用法,結(jié)合簡(jiǎn)單示例形式分析了jQuery 圖片查看器插件 Viewer.js的基本功能、調(diào)用方法及后臺(tái)數(shù)據(jù)調(diào)用處理技巧,需要的朋友可以參考下2020-04-04jquery實(shí)現(xiàn)的導(dǎo)航固定效果
這篇文章主要介紹了jquery實(shí)現(xiàn)的導(dǎo)航固定效果,需要的朋友可以參考下2014-04-04