jQuery页面滚动图片等元素动态加载实现
一、關(guān)于滾動顯屏加載
常常會有這樣子的頁面,內(nèi)容很豐富,頁面很長,圖片較多。比如說光棍節(jié)很瘋狂的淘寶商城頁面。
或者是前段時間寫血本買了個高檔耳機(jī)的京東商城頁面,或者是新浪微博之類。
這些頁面圖片數(shù)量多,而且比較大,少說百來K,多則上兆。要是頁面載入就一次性加載完畢。乖乖,估計(jì)黃花都變成黃花菜了。所以,我們得做點(diǎn)什么,避 免這種糟糕的狀況發(fā)生。目前很流行的做法就是滾動動態(tài)加載,顯示屏幕之外的圖片默認(rèn)是不加載的,隨著頁面的滾動,這個要顯示圖片的區(qū)域進(jìn)入了瀏覽器可是窗 口范圍,則觸發(fā)圖片的加載顯示。這種做法的好處是,一是頁面加載速度快(瀏覽器轉(zhuǎn)啊轉(zhuǎn)的圈圈或是進(jìn)度條很快就玩完了),二是節(jié)約了流量,因?yàn)椴豢赡苊總€用 戶瀏覽頁面時從頭滾到尾的。
貌似我上面提到的幾個站點(diǎn)就是采用的這種做法,例如,我以迅雷不及掩耳的速度從淘寶商城首頁截下來的已觸發(fā)滾動加載但是未加載完畢的圖片:
這是提高前端性能,優(yōu)化頁面加載速度很實(shí)用的做法。看上去這種技巧有些技術(shù)門檻,其實(shí)很簡單的。我們需要一個滾動事件,然后判斷元素是否在瀏覽器窗 口,然后,顯示圖片(或是其他元素)就可以啦。我在jQuery庫下寫了個實(shí)現(xiàn)此效果的插件,下面就將簡單展示講解此插件的使用以及滾動動態(tài)加載的實(shí)現(xiàn)。
二、jQuery滾動加載插件scrollLoading
雖然只有幾十行代碼,但是為了方便使用,我還是將其插件化了。插件名為jquery.scrollLoading.js,您可以狠狠地點(diǎn)擊這里下載(右鍵 – [目標(biāo)|鏈接]另存為),或是點(diǎn)擊這里下載mini壓縮版的。
demo
您可以狠狠地點(diǎn)擊這里:jQuery滾動加載圖片等demo,如果您的網(wǎng)速是在貧困線上掙扎,可以慢慢拖動滾動條,就可以很清楚的看到滾動加載的效果了;如果您的網(wǎng)速讓你引以為豪,哥,你需要很快的拖動滾動條才能瞥見效果。效果類似下面:
demo頁面中似乎有段破壞和諧的HTML片段,那是動態(tài)加載HTML后的效果,也就是說,此scrollLoading不僅可以用來滾動加載圖片,Ajax load頁面什么的也是可以的。
如果您看到下面的文字,可能是由于在其他網(wǎng)站或是RSS中閱讀本文,本文原地址:http://www.zhangxinxu.com/wordpress/?p=1259,本文作者:張鑫旭,來自張鑫旭-鑫空間-鑫生活,訪問原出處更多優(yōu)秀技術(shù)文章。三、scrollLoading使用
不管怎樣,首先調(diào)用jQuery庫文件,還有jquery.scrollLoading.js,您可以直接在頁面的某處添上如下的代碼:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> <script type="text/javascript" src="http://www.zhangxinxu.com/study/js/mini/jquery.scrollLoading-min.js"></script>此插件的方法名就是scrollLoading,所以,直接:包裝器.scrollLoading();就可以實(shí)現(xiàn)滾動加載效果了,簡單的吧。如下:
$(".scrollLoading").scrollLoading();表示所有class為scrollLoading的元素綁定了滾動加載的方法。
當(dāng)然,不可能真的就如此簡單,我們還需要做點(diǎn)小動作的。元素默認(rèn)是不加載的,那么真正的加載地址顯然要預(yù)先在元素上放置的,例如新浪微博默認(rèn)把頭像地址綁在了一個自定義的”dynamic-src”屬性上,見下圖:
在HTML5中,以data-開頭的自定義屬性都是合法的,且地址可以是圖片,頁面等。所以,我設(shè)定了綁定地址的自定義屬性為”data-url”,此屬性值設(shè)為真實(shí)的圖片(或頁面)地址就可以了。例如下面:
<div class="scrollLoading" data-url="loaded.html">加載中...</div>會在滾動時加載名為loaded.html的頁面,并自動替換里面的內(nèi)容。
對于常用的圖片,還有一點(diǎn)小問題,就是其默認(rèn)的src圖片地址。其src地址不能是真實(shí)的圖片地址(否則會直接一次性全部加載),也不能是空地址或是壞地址,否則IE瀏覽器下會出現(xiàn)很驚悚的紅叉叉。。我的做法是默認(rèn)鏈接的是一個1px * 1px的gif透明圖片(大小很小),同時可以透出后面加載中g(shù)if動畫圖片,當(dāng)滾動加載的時候直接把此gif圖片替換掉。于是,對于圖片,可能就有類似下面的代碼:
<img class="scrollLoading" data-url="http://image.zhangxinxu.com/image/study/head/s180/1.jpeg" src="http://www.zhangxinxu.com/study/image/pixel.gif" width="180" height="180" style="background:url(http://www.zhangxinxu.com/study/image/loading.gif) no-repeat center;" />四、scrollLoading可選參數(shù)
scrollLoading是個很簡單很小的插件(無注釋YUI compressor min版僅508B),所以參數(shù)也很少,就一個,見下表:
| attr | data-url | 獲取元素加載地址的屬性名 |
就這些了。此插件只適用于頁面默認(rèn)滾動條的動態(tài)加載。對于內(nèi)部div之類的滾動加載不支持。
轉(zhuǎn)載出處:http://www.zhangxinxu.com/wordpress/?p=1259
總結(jié)
以上是生活随笔為你收集整理的jQuery页面滚动图片等元素动态加载实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DVB相关
- 下一篇: BDD怎样帮助你解决沟通问题并增进协作