国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 詳解三種Javascript圖片預加載的方法

詳解三種Javascript圖片預加載的方法

2022-01-04 21:55鋒享前端 js教程

預加載圖片是提高用戶體驗的一個很好方法。圖片預先加載到瀏覽器中,訪問者便可順利地在你的網站上沖浪,并享受到極快的加載速度。

預加載圖片是提高用戶體驗的一個很好方法。圖片預先加載到瀏覽器中,訪問者便可順利地在你的網站上沖浪,并享受到極快的加載速度。

詳解三種Javascript圖片預加載的方法

這對圖片畫廊及圖片占據很大比例的網站來說十分有利,它保證了圖片快速、無縫地發布,也可幫助用戶在瀏覽你網站內容時獲得更好的用戶體驗。本文將分享三個不同的預加載技術,來增強網站的性能與可用性。

方法一:用css和JavaScript實現預加載

實現預加載圖片有很多方法,包括使用css、JavaScript及兩者的各種組合。這些技術可根據不同設計場景設計出相應的解決方案,十分高效。

單純使用CSS,可容易、高效地預加載圖片,代碼如下:

  1. #preload-01 { background: url(http://domain.tld/image-01.png) no-repeat -9999px -9999px; }   
  2. #preload-02 { background: url(http://domain.tld/image-02.png) no-repeat -9999px -9999px; }   
  3. #preload-03 { background: url(http://domain.tld/image-03.png) no-repeat -9999px -9999px; } 

將這三個ID選擇器應用到(X)html元素中,我們便可通過CSS的background屬性將圖片預加載到屏幕外的背景上。

只要這些圖片的路徑保持不變,當它們在Web頁面的其他地方被調用時,瀏覽器就會在渲染過程中使用預加載(緩存)的圖片。簡單、高效,不需要任何JavaScript。

該方法雖然高效,但仍有改進余地。使用該法加載的圖片會同頁面的其他內容一起加載,增加了頁面的整體加載時間。

為了解決這個問題,我們增加了一些JavaScript代碼,來推遲預加載的時間,直到頁面加載完畢。代碼如下:

  1. function preloader() {   
  2.     if (document.getElementById) {   
  3.         document.getElementById("preload-01").style.background = "url(http://domain.tld/image-01.png) no-repeat -9999px -9999px";   
  4.         document.getElementById("preload-02").style.background = "url(http://domain.tld/image-02.png) no-repeat -9999px -9999px";   
  5.         document.getElementById("preload-03").style.background = "url(http://domain.tld/image-03.png) no-repeat -9999px -9999px";   
  6.     }   
  7. }   
  8. function addLoadEvent(func) {   
  9.     var oldonload = window.onload;   
  10.     if (typeof window.onload != 'function') {   
  11.         window.onload = func;   
  12.     } else {   
  13.         window.onload = function() {   
  14.             if (oldonload) {   
  15.                 oldonload();   
  16.             }   
  17.             func();   
  18.         }   
  19.     }   
  20. }   
  21. addLoadEvent(preloader); 

在該腳本的第一部分,我們獲取使用類選擇器的元素,并為其設置了background屬性,以預加載不同的圖片。

該腳本的第二部分,我們使用addLoadEvent()函數來延遲preloader()函數的加載時間,直到頁面加載完畢。

如果JavaScript無法在用戶的瀏覽器中正常運行,會發生什么?很簡單,圖片不會被預加載,當頁面調用圖片時,正常顯示即可。

方法二:僅使用JavaScript實現預加載

上述方法有時確實很高效,但我們逐漸發現它在實際實現過程中會耗費太多時間。相反,我更喜歡使用純JavaScript來實現圖片的預加載。

下面將提供兩種這樣的預加載方法,它們可以很漂亮地工作于所有現代瀏覽器之上。

JavaScript代碼段1

只需簡單編輯、加載所需要圖片的路徑與名稱即可,很容易實現:

  1. <div class="hidden">   
  2.     <script type="text/javascript">   
  3.            var images = new Array()   
  4.             function preload() {   
  5.                 for (i = 0; i < preload.arguments.length; i++) {   
  6.                     images[i] = new Image()   
  7.                     images[i].src = preload.arguments[i]   
  8.                 }   
  9.             }   
  10.             preload(   
  11.                 "http://domain.tld/gallery/image-001.jpg",   
  12.                 "http://domain.tld/gallery/image-002.jpg",   
  13.                 "http://domain.tld/gallery/image-003.jpg"   
  14.             )   
  15. </script>  
  16. </div> 

該方法尤其適用預加載大量的圖片。我的畫廊網站使用該技術,預加載圖片數量達50多張。將該腳本應用到登錄頁面,只要用戶輸入登錄帳號,大部分畫廊圖片將被預加載。

JavaScript代碼段2

該方法與上面的方法類似,也可以預加載任意數量的圖片。將下面的腳本添加入任何Web頁中,根據程序指令進行編輯即可。

  1. <div class="hidden">   
  2.     <script type="text/javascript">   
  3.             if (document.images) {   
  4.                 img1 = new Image();   
  5.                 img2 = new Image();   
  6.                 img3 = new Image();   
  7.                 img1.src = "http://domain.tld/path/to/image-001.gif";   
  8.                 img2.src = "http://domain.tld/path/to/image-002.gif";   
  9.                 img3.src = "http://domain.tld/path/to/image-003.gif";   
  10.             }     
  11. </script>   
  12. </div> 

正如所看見,每加載一個圖片都需要創建一個變量,如“img1 = new Image();”,及圖片源地址聲明,如“img3.src = “../path/to/image-003.gif”;”。參考該模式,你可根據需要加載任意多的圖片。

我們又對該方法進行了改進。將該腳本封裝入一個函數中,并使用 addLoadEvent(),延遲預加載時間,直到頁面加載完畢。

  1. function preloader() {   
  2.     if (document.images) {   
  3.         var img1 = new Image();   
  4.         var img2 = new Image();   
  5.         var img3 = new Image();   
  6.         img1.src = "http://domain.tld/path/to/image-001.gif";   
  7.         img2.src = "http://domain.tld/path/to/image-002.gif";   
  8.         img3.src = "http://domain.tld/path/to/image-003.gif";   
  9.     }   
  10. }   
  11. function addLoadEvent(func) {   
  12.     var oldonload = window.onload;   
  13.     if (typeof window.onload != 'function') {   
  14.         window.onload = func;   
  15.     } else {   
  16.         window.onload = function() {   
  17.             if (oldonload) {   
  18.                 oldonload();   
  19.             }   
  20.             func();   
  21.         }   
  22.     }   
  23. }   
  24. addLoadEvent(preloader); 

方法三:使用Ajax實現預加載

上面所給出的方法似乎不夠酷,那現在來看一個使用Ajax實現圖片預加載的方法。該方法利用DOM,不僅僅預加載圖片,還會預加載CSS、JavaScript等相關的東西。使用Ajax,比直接使用JavaScript,優越之處在于JavaScript和CSS的加載不會影響到當前頁面。該方法簡潔、高效。

  1. window.onload = function() {   
  2.     setTimeout(function() {   
  3.         // XHR to request a js and a CSS   
  4.         var xhr = new XMLHttpRequest();   
  5.         xhr.open('GET''http://domain.tld/preload.js');   
  6.         xhr.send('');   
  7.         xhr = new XMLHttpRequest();   
  8.         xhr.open('GET''http://domain.tld/preload.css');   
  9.         xhr.send('');   
  10.         // preload image   
  11.         new Image().src = "http://domain.tld/preload.png";   
  12.     }, 1000);   
  13. }; 

上面代碼預加載了“preload.js”、“preload.css”和“preload.png”。1000毫秒的超時是為了防止腳本掛起,而導致正常頁面出現功能問題。

下面,我們看看如何用JavaScript來實現該加載過程:

  1. window.onload = function() {   
  2.     setTimeout(function() {   
  3.         // reference to <head>   
  4.         var head = document.getElementsByTagName('head')[0];   
  5.         // a new CSS   
  6.         var css = document.createElement('link');   
  7.         css.type = "text/css";   
  8.         css.rel  = "stylesheet";   
  9.         css.href = "http://domain.tld/preload.css";   
  10.         // a new JS   
  11.         var js  = document.createElement("script");   
  12.         js.type = "text/javascript";   
  13.         js.src  = "http://domain.tld/preload.js";   
  14.         // preload JS and CSS   
  15.         head.appendChild(css);   
  16.         head.appendChild(js);   
  17.         // preload image   
  18.         new Image().src = "http://domain.tld/preload.png";   
  19.     }, 1000);  
  20. }; 

這里,我們通過DOM創建三個元素來實現三個文件的預加載。正如上面提到的那樣,使用Ajax,加載文件不會應用到加載頁面上。從這點上看,Ajax方法優越于JavaScript。

原文鏈接:https://www.toutiao.com/a7049158122333602335/

延伸 · 閱讀

精彩推薦
  • js教程如何在JavaScript中正確處理變量

    如何在JavaScript中正確處理變量

    這篇文章主要介紹了如何在JavaScript中正確處理變量,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下...

    瘋狂的技術宅10682021-12-20
  • js教程js中延遲加載和預加載的具體使用

    js中延遲加載和預加載的具體使用

    這篇文章主要介紹了js中延遲加載和預加載的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    Yushia5852021-12-31
  • js教程微信小程序選擇圖片控件

    微信小程序選擇圖片控件

    這篇文章主要為大家詳細介紹了微信小程序選擇圖片控件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    小雅雅家的小凱凱吖9682022-01-04
  • js教程JS中箭頭函數與this的寫法和理解

    JS中箭頭函數與this的寫法和理解

    這篇文章主要給大家介紹了關于JS中箭頭函數與this的寫法和理解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需...

    limingru10402021-12-31
  • js教程mustache.js實現首頁元件動態渲染的示例代碼

    mustache.js實現首頁元件動態渲染的示例代碼

    這篇文章主要介紹了mustache.js實現首頁元件動態渲染的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可...

    code2roc4222021-12-21
  • js教程微信小程序 接入騰訊地圖的兩種寫法

    微信小程序 接入騰訊地圖的兩種寫法

    這篇文章主要介紹了微信小程序 接入騰訊地圖的兩種寫法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參...

    木早長泉8722021-12-30
  • js教程基于JavaScript實現輪播圖效果

    基于JavaScript實現輪播圖效果

    這篇文章主要為大家詳細介紹了基于JavaScript實現輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    努力學習中.....5542021-12-24
  • js教程JavaScript 中的六種循環方法

    JavaScript 中的六種循環方法

    這篇文章主要介紹了JavaScript 中的六種循環方法,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下...

    Saku8552021-12-27
主站蜘蛛池模板: 久久久久久久一区 | 成年人综合网 | 欧美日韩精品一区二区三区 | 欧美高清一区 | 美女视频黄8频a美女大全 | 国产精品久久一区 | 国产艹 | 毛片网站大全 | 日本一区二区免费在线播放 | 一级毛片免费播放 | 国产一级黄色大片 | 男女做爰猛烈叫床无遮挡 | 黄色免费网| 久久亚洲国产 | 日韩欧美一级 | 日韩精品一区二区三区中文 | 男女涩涩| 国产视频1区 | 国产亚洲精品精品国产亚洲综合 | 日韩美女国产精品 | 精品久久久久久久久久久久久久久久久久久 | 日韩高清一区二区 | 日韩电影网站 | 亚洲成人av| 日韩精品在线观 | 精品久久久久久久久久 | 91国内精品久久 | 看毛片网站 | 亚洲午夜成激人情在线影院 | 可以免费看黄色的网站 | 一级毛片在线免费看 | 精品香蕉视频 | 日韩欧美国产一区二区 | 天堂资源在线 | 中文字幕成人网 | 日本不卡在线观看 | 日韩精品一区二区三区中文字幕 | av大全在线观看 | 国内精品一区二区三区 | 插插射啊爱视频日a级 | 亚洲性网 |