成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 利用簡(jiǎn)潔的圖片預(yù)加載組件提升html5移動(dòng)頁面的用戶體驗(yàn)

利用簡(jiǎn)潔的圖片預(yù)加載組件提升html5移動(dòng)頁面的用戶體驗(yàn)

熱門標(biāo)簽:濟(jì)南辦理400電話 漳州人工外呼系統(tǒng)排名 農(nóng)村住宅地圖標(biāo)注 跟電銷機(jī)器人做同事 威海營(yíng)銷外呼系統(tǒng)招商 鄭州電銷外呼系統(tǒng)違法嗎 中紳電銷智能機(jī)器人 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)怎么安裝 ai電銷機(jī)器人連接網(wǎng)關(guān)

在做h5移動(dòng)頁面,相信大家一定碰到過頁面已經(jīng)打開,但是里面的圖片還未加載出來的情況,這種問題雖然不影響頁面的功能,但是不利于用戶體驗(yàn)。拋開網(wǎng)速的原因,解決這個(gè)問題有多方面的思路:最基本的,要從http請(qǐng)求合并,緩存管理,圖片壓縮等方面做性能優(yōu)化;另外就是可以對(duì)頁面里用到的所有圖片做預(yù)加載的處理,當(dāng)用戶打開頁面的時(shí)候不立即顯示第一屏,而是先顯示資源加載效果,等到加載完畢,再來顯示頁面的主內(nèi)容,這樣就能解決那個(gè)問題。雖然這種加載效果占用了用戶的瀏覽時(shí)間,但是我們可以把它做的好看有趣一點(diǎn),所以也不會(huì)影響用戶體驗(yàn)。本文實(shí)踐了這種想法,提供一個(gè)非常簡(jiǎn)潔的圖片預(yù)加載組件,實(shí)現(xiàn)簡(jiǎn)單,功能不弱,在做移動(dòng)頁面的時(shí)候應(yīng)該對(duì)你有參考價(jià)值。
效果:

1. 實(shí)現(xiàn)思路

html里面的img標(biāo)簽和css中background-imag等都會(huì)觸發(fā)瀏覽器去加載相關(guān)的圖片,但是如果這個(gè)圖片已經(jīng)加載過了的話,瀏覽器就會(huì)直接使用這張已經(jīng)加載好的圖片,從而能夠瞬間在頁面中渲染出來。通過javascript,創(chuàng)建Image對(duì)象,然后把這些對(duì)象的src屬性設(shè)置成要加載的圖片地址也能觸發(fā)瀏覽器加載圖片,利用這一點(diǎn)就能實(shí)現(xiàn)圖片預(yù)加載的功能:在頁面里首先把那些用到了相關(guān)的圖片的元素給藏掉,然后用js去加載圖片,等到所有圖片加載完畢再把藏掉的元素顯示即可。不過這僅僅是一個(gè)基本的實(shí)現(xiàn)思路,要完成一個(gè)功能較健壯的預(yù)加載組件,還有以下三個(gè)問題:
1)進(jìn)度問題
由于預(yù)加載的同時(shí),還得做一個(gè)預(yù)加載的效果,這就需要把加載的進(jìn)度實(shí)時(shí)通知到外部上下文才行。關(guān)于進(jìn)度有兩個(gè)實(shí)現(xiàn)方式,第一是已加載的數(shù)據(jù)大小/總的數(shù)據(jù)大小,第二是已加載的文件數(shù)/總的文件數(shù),在瀏覽器里面,采用第一種方式是不現(xiàn)實(shí)的,根本沒有原生的辦法可以做到,所以只能采用第二種。
2)圖片加載失敗的問題
比如說有4張圖片,已經(jīng)加載了50%,在加載第三張的時(shí)候出錯(cuò)了,該不該將進(jìn)度反饋成75%呢?答案是:應(yīng)該。如果不這么處理的話,進(jìn)度永遠(yuǎn)無法到100%,頁面主內(nèi)容就沒機(jī)會(huì)顯示了,雖然圖片加載有失敗的情況,但是跟加載器沒有關(guān)系,也許圖片本身就不存在呢?也就是說圖片加載失敗不應(yīng)該影響加載器的功能。
3)圖片加載超時(shí)的問題
圖片不能加載太久,否則用戶一直停留在加載效果上看不到主內(nèi)容,用戶的等待時(shí)間不可控制地延長(zhǎng),導(dǎo)致用戶體驗(yàn)下降,這樣就有悖加載器的初衷了。所以應(yīng)該給每個(gè)圖片設(shè)置一個(gè)加載的超時(shí)時(shí)間,如果在所有圖片的超時(shí)時(shí)間之后,還沒加載完,就應(yīng)該主動(dòng)放棄加載,通知外部上下文加載完畢,顯示主內(nèi)容。
綜合以上這些需求,本文提供的實(shí)現(xiàn)是:

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. (function () {    
  2. function isArray(obj) {    
  3. return Object.prototype.toString.call(obj) === '[object Array]';    
  4. }    
  5. /**   
  6. * @param imgList 要加載的圖片地址列表,['aa/asd.png','aa/xxx.png']   
  7. * @param callback 每成功加載一個(gè)圖片之后的回調(diào),并傳入“已加載的圖片總數(shù)/要加載的圖片總數(shù)”表示進(jìn)度   
  8. * @param timeout 每個(gè)圖片加載的超時(shí)時(shí)間,默認(rèn)為5s   
  9. */    
  10. var loader = function (imgList, callback, timeout) {    
  11. timeout = timeout || 5000;    
  12. imgList = isArray(imgList) && imgList || [];    
  13. callback = typeof(callback) === 'function' && callback;    
  14. var total = imgList.length,    
  15. loaded = 0,    
  16. imgages = [],    
  17. _on = function () {    
  18. loaded < total && (++loaded, callback && callback(loaded / total));    
  19. };    
  20. if (!total) {    
  21. return callback && callback(1);    
  22. }    
  23. for (var i = 0; i < total; i++) {    
  24. imgages[i] = new Image();    
  25. imgages[i].onload = imgages[i].onerror = _on;    
  26. imgages[i].src = imgList[i];    
  27. }    
  28. /**   
  29. * 如果timeout * total時(shí)間范圍內(nèi),仍有圖片未加載出來(判斷條件是loaded < total),通知外部環(huán)境所有圖片均已加載   
  30. * 目的是避免用戶等待時(shí)間過長(zhǎng)   
  31. */    
  32. setTimeout(function () {    
  33. loaded < total && (loaded = total, callback && callback(loaded / total));    
  34. }, timeout * total);    
  35. };    
  36. "function" === typeof define && define.cmd ? define(function () {    
  37. return loader    
  38. }) : window.imgLoader = loader;    
  39. })();   

使用方式(對(duì)應(yīng)代碼中的test.html):

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. <script src="../js/imgLoader.js"></script>    
  2. <script>    
  3. imgLoader(['../img/page1.jpg', '../img/page2.jpg', '../img/page3.jpg'], function(percentage){    
  4. console.log(percentage)    
  5. });    
  6. </script>   

運(yùn)行結(jié)果:


2. demo說明
本文開篇給出的效果,對(duì)應(yīng)的頁面是index.html,關(guān)于這個(gè)效果還有兩個(gè)問題需要說明:
1)它用了之前這篇博客Hammer.js+輪播原理實(shí)現(xiàn)簡(jiǎn)潔的滑屏功能介紹的滑屏思路,并把它的一些邏輯包裝在了swipe.js,對(duì)外提供了一個(gè)全局變量Swipe,這個(gè)模塊有一個(gè)init的方法,以便外部通過調(diào)用Swipe.init()就能初始化滑屏相關(guān)的功能,原來沒有提供這個(gè)init方法,在js加載完畢就會(huì)初始化滑屏功能,有了這個(gè)init方法就可以把滑屏的邏輯延遲到加載完畢的時(shí)候去初始化。index.html一共引用了5個(gè)js:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. <script src="js/zepto.js"></script>    
  2. <script src="js/transition.js"></script>    
  3. <script src="js/hammer.js"></script>    
  4. <script src="js/imgLoader.js"></script>    
  5. <script src="js/swipe.js"></script>   

其中imgLoader.js就是前面介紹圖片加載器的實(shí)現(xiàn),前三個(gè)js都是為最后一個(gè)swipe.js服務(wù)的,感興趣的可以繼續(xù)我的博客利用輪播原理結(jié)合hammer.js實(shí)現(xiàn)簡(jiǎn)潔的滑屏功能了解相關(guān)內(nèi)容。不過滑屏不是本文的重點(diǎn),不了解swipe.js不會(huì)影響理解本文的內(nèi)容~
2)雖然我在demo中用到了3張比較大的圖片,但是由于在本地環(huán)境,加載速度還是非常快,所以一開始的時(shí)候,很難看到預(yù)加載的效果,最后只能想辦法在每個(gè)進(jìn)度回調(diào)之前做一下延遲,這才可以看到前面gif圖片一開始的那個(gè)loading效果,實(shí)現(xiàn)方式是:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. //模擬加載慢的效果    
  2. var callbacks = [];    
  3. imgLoader(['img/page1.jpg', 'img/page2.jpg', 'img/page3.jpg'], function (percentage) {    
  4. var i = callbacks.length;    
  5. callbacks.push(function(){    
  6. setTimeout(function(){    
  7. var percentT = percentage * 100;    
  8. $('#loader__info').html('Loading ' + (parseInt(percentT)) + '%');    
  9. $('#loader__progress')[0].style.width = percentT + '%';    
  10. if (percentage == 1) {    
  11. setTimeout(function(){    
  12. $('#loader').remove();    
  13. Swipe.init();    
  14. }, 600);    
  15. }    
  16. callbacks[i + 1] && callbacks[i + 1]();    
  17. },600);    
  18. });    
  19. if(percentage == 1) {    
  20. callbacks[0]();    
  21. }    
  22. });   

在真實(shí)環(huán)境,最好還是不要刻意去加這種延遲,沒必要為了讓用戶看到一個(gè)好看有趣的加載效果,就浪費(fèi)它不必要的等待時(shí)間,所以真實(shí)環(huán)境還是應(yīng)該用下面的代碼:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. imgLoader(['img/page1.jpg', 'img/page2.jpg', 'img/page3.jpg'], function (percentage) {    
  2. var percentT = percentage * 100;    
  3. $('#loader__info').html('Loading ' + (parseInt(percentT)) + '%');    
  4. $('#loader__progress')[0].style.width = percentT + '%';    
  5. if (percentage == 1) {    
  6. $('#loader').remove();    
  7. Swipe.init();    
  8. }    
  9. });   

3. 注意事項(xiàng)
預(yù)加載是一種比較常見的實(shí)現(xiàn)效果,但是在使用的時(shí)候,有些問題需要注意:
1)什么時(shí)候用
頁面大的時(shí)候用,一般頁面大小超過3M就該考慮使用;頁面內(nèi)包含數(shù)據(jù)量比較大的圖片,在手機(jī)端測(cè)試能夠明顯看到加載緩慢的時(shí)候,可以考慮使用。
2)盡量使用sprite圖片
3)加載效果實(shí)現(xiàn)的時(shí)候,盡量不用圖片,即使要用也應(yīng)該用很小的圖片,否則加載效果卡在那就沒有意義了。
4. 總結(jié)
本文主要介紹了一個(gè)簡(jiǎn)單的圖片預(yù)加載器,可應(yīng)用于h5移動(dòng)頁面的開發(fā)當(dāng)中,在它的思路之下,如果有必要的話,還可以對(duì)它進(jìn)行一些改造,用它來加載其它類型的資源,比如音頻或者視頻文件,畢竟這些類型的DOM對(duì)象也都有提供類似Image對(duì)象的屬性和回調(diào)。與預(yù)加載的方式相反的,還有一種圖片懶加載的技術(shù),現(xiàn)在網(wǎng)上已經(jīng)有比較好用的jquery插件了,不過還是很值的去深入了解下它的思路跟實(shí)現(xiàn)要點(diǎn),等我有時(shí)間去研究研究。同時(shí)感謝大家一直以來對(duì)腳本之家網(wǎng)站的支持!

標(biāo)簽:甘南 惠州 紅河 文山 萍鄉(xiāng) 蘇州 營(yíng)口 咸陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《利用簡(jiǎn)潔的圖片預(yù)加載組件提升html5移動(dòng)頁面的用戶體驗(yàn)》,本文關(guān)鍵詞  利用,簡(jiǎn)潔,的,圖片,預(yù),加載,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用簡(jiǎn)潔的圖片預(yù)加載組件提升html5移動(dòng)頁面的用戶體驗(yàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于利用簡(jiǎn)潔的圖片預(yù)加載組件提升html5移動(dòng)頁面的用戶體驗(yàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日本一本高清视频| 色天使在线观看| 久草视频在线免费看| 天堂中文在线网| 在线免费观看日本一区| 波多野结衣av在线| 午夜精品久久久久久久99热影院| 亚洲日本丝袜连裤袜办公室| av影片免费在线观看| 国产一区二区在线视频| 91精品久久久久久久久青青| 少妇熟女视频一区二区三区| 精品一区二区三区视频在线观看| 欧美aaa一级| 男人av资源站| 国产一区二区三区四| 国产成人超碰人人澡人人澡| 欧洲亚洲精品久久久久| 成人动漫在线视频| 神马香蕉久久| 免费在线观看的毛片| 国内精品久久久久久影院8f| 日韩精品免费一区二区三区| 欧美77777免费视频| 亚洲国产精品久久人人爱| bdsm在线观看播放视频| 国产一区二区电影| 杨幂一区欧美专区| 秋霞欧美在线观看| 亚洲成年人网站在线观看| 91麻豆国产视频| 一区二区冒白浆视频| 国产精品丝袜久久久久久不卡| 国产又粗又猛又爽又黄的| 日韩av电影免费在线| 国产在线成人精品午夜| 成全电影播放在线观看国语| 中文字幕国产亚洲| 日韩国产精品久久久| 日韩成人精品视频在线观看| 黄页网站在线观看免费| 国产 日韩 欧美大片| 国产欧美日韩专区发布| 久久亚洲综合色一区二区三区| 国产免费亚洲高清| 美女扒开腿让男人桶爽久久软| 欧美国产精品日韩| 亚洲成a人在线观看| 999久久久久久久久6666| 国产天堂av在线| 在线播放日韩专区| 亚洲国产日日夜夜| 免费看三级黄色片| 日韩欧美亚洲国产| a篇片在线观看网站| 99精品久久只有精品| 国产经典第一页| 成人疯狂猛交xxx| 97在线视频免费| 亚洲男人天堂网| 国产黄色免费| 九一国产精品视频| 国产伦精品一区| 成人网址在线观看| 精品69视频一区二区三区| 欧美片一区二区三区| 狂野欧美性猛交xxxx巴西| 美国一级黄色录像| 亚洲va中文在线播放免费| 精品伦理一区二区三区| 国产系列在线观看| 亚洲一区久久久| 国产福利片一区二区| 欧美性色aⅴ视频一区日韩精品| 日本最新一区二区三区视频观看| 白白色亚洲国产精品| 亚洲欧美日韩久久久久久| 黑巨茎大战欧洲金发美女| 亚洲国产精彩中文乱码av在线播放| 亚洲人精品午夜射精日韩| 久久99国内| av三级影院| 成人18网站| 国产精品18久久久久久vr| 少妇人妻好深好紧精品无码| 国产手机视频在线| 亚洲一本大道| 国产高清精品软男同| 国产精品男女视频| 91国产精品91| 国产精品美女诱惑| 天堂综合在线播放| 欧美精品第1页| 国产精品免费一区二区三区四区| 亚洲五月婷婷| 日本视频中文字幕一区二区三区| 国产免费麻豆视频| 91视频成人| 亚洲a在线视频| 三级av在线免费观看| 一区二区三区欧美成人| avtt香蕉久久| 国产欧美日韩精品一区二区免费| 国产69精品久久久久9| 欧美激情一区二区在线| 国产一区二区导航在线播放| 永久免费无码av网站在线观看| 在线观看污污网站| 中文字幕中文字幕在线一区| 羞羞色午夜精品一区二区三区| 伊人在我在线看导航| 中文字幕成人| 亚洲黄色av片| 特黄aaaaaaaaa真人毛片| 亚洲精选在线观看| 日本少妇在线观看| 久久超碰97人人做人人爱| 国产精华7777777| 999一区二区三区| 日韩激情视频网站| 一区二区三区午夜| 天天伊人狠狠| 蜜桃网站成人| 色呦哟—国产精品| 亚洲精品乱码久久久久久9色| 亚洲免费成人在线| 国产精品国产自产拍高清av王其| 成人做爰视频网站| 不卡免费追剧大全电视剧网站| 日韩一区av在线| 78精品国产综合久久香蕉| 亚洲色图100p| 中文字幕亚洲精品乱码| 99在线精品视频在线观看| 在线一级观看| 黄色av网站免费在线观看| 鲁丝一区二区三区免费| 亚洲天堂av在线播放| 91传媒理伦片在线观看| 亚洲 欧美 日韩 在线| 精品国产无码在线| 亚洲精品乱码久久久久久久| 欧美日本另类xxx乱大交| 日本一区二区免费高清视频| 国产精品无码乱伦| 97视频在线免费观看| 国产精品中文字幕日韩精品| 日本大胆欧美人术艺术动态| 三上悠亚免费在线观看| 亚洲一区二区三区精品中文字幕| 日本亚洲欧美三级| 亚洲国产成人精品女人久久久| 久久精品午夜一区二区福利| www.av黄色| 欧美性色aⅴ视频一区日韩精品| 最新中文字幕av专区| 国产精品免费看片| 国产精品日本一区二区三区在线| 亚洲h动漫在线| 香蕉视频官网在线观看日本一区二区| 国产成人3p视频免费观看| 日日噜噜噜噜夜夜爽亚洲精品| 久久久国产精品麻豆| 精品日产卡一卡二卡麻豆| 91精品二区| 小明精品国产一区二区三区| 欧美最猛性xxxxx喷水| av综合网址| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 成人高清免费观看mv| 国产三级按摩推拿按摩| 99精品在免费线中文字幕网站一区| 久久av资源网站| 91精品国产成人观看| 日本一区二区综合亚洲| 亚洲大胆人体在线| 人人精品亚洲| 国产福利91精品| 激情偷乱视频一区二区三区| 久久精品亚洲欧美日韩精品中文字幕| 欧美一区二区视频在线观看2022| 亚洲成年人网站在线观看| 国产精品久久久久91| 色大18成网站www在线观看| 久久久亚洲国产| 九九热精品国产| 少妇人妻大乳在线视频| 日本特黄一级片| 国产高清999| 91社区在线观看播放| 韩国视频一区二区三区| 性欧美欧美巨大69| 先锋影音男人资源网| 欧美日韩一区自拍| 91国拍精品国产粉嫩亚洲一区| 亚洲福利一区二区三区| 亚洲欧洲韩国日本视频| 欧美高清xxxxxkkkkk| 欧美专区一区二区三区| 26uuu色噜噜精品一区二区| 久久精品国产一区二区| 九色精品美女在线| 婷婷亚洲婷婷综合色香五月| 亚洲av网址在线| 欧美一区二区三区艳史| 717成人午夜免费福利电影| 在线视频中文字幕第一页| www亚洲精品| 国产午夜精品美女毛片视频| 亚洲欧美强伦一区二区| 亚洲精品v天堂中文字幕| 国产女王在线**视频| 亚洲国产又黄又爽女人高潮的| 又黄又爽无遮挡| 亚洲网站视频在线观看| 色综合久久88色综合天天提莫| 日韩av中文字幕一区二区| 成人午夜激情免费视频| 亚洲国产成人在线观看| 91在线一区二区| 美女18一级毛片一品久道久久综合| 久久一卡二卡| 7777精品伊人久久久大香线蕉最新版| 久久er99热精品一区二区三区| 久久香蕉国产线看观看99| 国产激情无套内精对白视频| jizzjizz国产精品喷水| 亚洲系列第一页| www.国产一区| 亚洲资源在线看| 国产欧美日韩三区| 成人在线免费看视频| 国产suv一区二区三区88区| 乱人伦中文视频在线| 一区二区中文字幕| 5g影院5g电影天天爽快| 久久久综合久久| 露出调教综合另类| 国产天堂资源| 黑人40厘米全进去| 日韩精品亚洲精品| 免费av播放| 色多多国产成人永久免费网站| 一本一道久久a久久精品综合蜜臀| free性欧美| 五月天婷婷激情网| 精品盗摄一区二区三区| av日韩中文| 精人妻一区二区三区| 91国内精品白嫩初高生| 日本中文字幕在线播放| 久久亚洲国产成人精品无码区| 99精品一区二区三区| 黄毛片在线观看| 精品久久久久久无| 亚洲欧美另类日本| 波多野结衣亚洲一区二区| av不卡免费电影| 人妻av无码专区| 天天躁日日躁狠狠躁欧美巨大小说| 开心久久婷婷综合中文字幕| 中文字幕佐山爱一区二区免费| 亚洲免费成人av电影| 国产精品久久久久久久久鸭| 国产日韩精品久久久| 国产成人精品免高潮在线观看| 亚洲一区999| 久久久人成影片免费观看| 国产一区二区在线网站| 蘑菇福利视频一区播放| 国产老女人乱淫免费| 欧美性极品xxxx娇小| 日本午夜视频| 五月天av在线| 久久久久成人片免费观看蜜芽| 亚洲女同精品视频| 亚州男人的天堂| 欧洲伦理片一区 二区 三区| 欧美一区二区三区电影| 先锋av在线资源| 国产黄色网址在线观看| 婷婷综合久久| 日韩精品免费一区二区三区| 成熟人妻av无码专区| 美国一级片在线免费观看视频| 57pao国产成永久免费视频| 91免费在线视频观看| 日韩亚洲不卡在线| 影音先锋成人资源网站| 国产97人人超碰caoprom| 精品成人无码久久久久久| 秋霞欧美视频| 欧美性视频在线| 国产精品自产拍在线观看2019| 欧美日韩精品在线播放| 91亚洲精品久久久蜜桃| 四虎免费在线视频| 91香蕉一区二区三区在线观看| 中文字幕被公侵犯的漂亮人妻| 国产精品亚洲专一区二区三区| 国产精品高清在线观看| 99精品人妻少妇一区二区| 国产aⅴ精品一区二区三区色成熟| 亚洲视频 欧美视频| 国产尤物一区二区三区| 五月天婷婷综合社区| 精品黄色免费中文电影在线播放| 97精品一区二区三区| 成熟人妻av无码专区| 一级做a爱片久久毛片| 高清视频在线观看一区| 成人av网站免费观看| 国产成人一区二区三区小说| 一区二区三区视频在线| 日欧美一区二区| √资源天堂中文在线| ckplayer中文字幕| 成人ar影院免费观看视频| 日韩专区欧美专区| 136福利第一导航国产在线| 久久在线免费| 欧美精品在线一区二区三区| 日韩欧美123区| 青青草97国产精品麻豆| 日本三级日本三级日本三级极| 成人午夜激情影院| 91精品久久久久久综合五月天| 国产一区二区在线影院|