最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用CSS、JavaScript及Ajax實現(xiàn)圖片預加載的方法

 更新時間:2016年11月29日 09:26:57   投稿:mrr  
預加載圖片是提高用戶體驗的一個很好方法,實現(xiàn)圖片預加載可以使用css、JavaScript、Ajax三種方法。下面逐一給大家介紹利用CSS、JavaScript及Ajax實現(xiàn)圖片預加載的方法,需要的朋友參考下吧

預加載圖片是提高用戶體驗的一個很好方法。圖片預先加載到瀏覽器中,訪問者便可順利地在你的網站上沖浪,并享受到極快的加載速度。這對圖片畫廊及圖片占據(jù)很大比例的網站來說十分有利,它保證了圖片快速、無縫地發(fā)布,也可幫助用戶在瀏覽你網站內容時獲得更好的用戶體驗。本文將分享三個不同的預加載技術,來增強網站的性能與可用性。

實現(xiàn)圖片預加載可以使用css、JavaScript、Ajax三種方法。下面分別介紹這些方法的實現(xiàn)。

使用CSS

單純的使用css可以將圖片加載到頁面元素的背景上,這種方法簡單、高效:

#div1{background:url(http://ww1.sinaimg.cn/large/006y8mN6gw1fa7kaed2hpj30sg0l9q54.jpg) no-repeat -9999px-9999px; }
#div2{background:url(http://ww4.sinaimg.cn/large/006y8mN6gw1fa5obmqrmvj305k05k3yh.jpg) no-repeat -9999px-9999px; }

在其他地方調用時,只要路徑一致,瀏覽器就會在渲染過程中使用預加載(緩存)的圖片。簡單、高效,不需要任何JavaScript。

弊端:使用這種方法,圖片會隨著頁面加載同時加載,延長頁面加載的時間,使用JavaScript輔助完成會更高效。

使用CSS和JavaScript結合

functionpreload(){
if(document.getElementById) {
document.getElementById("div1").style.background ="url(http://ww1.sinaimg.cn/large/006y8mN6gw1fa7kaed2hpj30sg0l9q54.jpg) no-repeat -9999px -9999px";
document.getElementById("div2").style.background ="url(http://ww4.sinaimg.cn/large/006y8mN6gw1fa5obmqrmvj305k05k3yh.jpg) no-repeat -9999px -9999px";
} 
}
functionaddLoadEvent(func){
varoldonload =window.onload;
if(typeofwindow.onload !='function') {
window.onload = func;
} else{
window.onload =function(){
if(oldonload) {
oldonload(); 
} 
func(); 
} 
} 
}
addLoadEvent(preload);

我們把圖片加載設置到頁面加載完成之后,所以不必擔心由于圖片和頁面同時加載而延長訪問時間。

如果JavaScript運行失敗也不必擔心,僅僅是圖片預加載失敗而已,當調用圖片時也能正常顯示。

使用JavaScript實現(xiàn)

方法一

varimages =newArray()
functionpreload(){
for(i =0; i < preload.arguments.length; i++) {
images[i] = newImage()
images[i].src = preload.arguments[i] 
} 
}
preload( 
"http://ww4.sinaimg.cn/large/006y8mN6gw1fa5obmqrmvj305k05k3yh.jpg",
"http://ww1.sinaimg.cn/large/006y8mN6gw1fa7kaed2hpj30sg0l9q54.jpg"
)

方法二

這種方法其實和方法一是一樣的原理 ,只不過沒有放在數(shù)組中實現(xiàn),而是分別去為 Image 對象的 src 負值。

if(document.images) {
img1 = newImage();
img2 = newImage();
img3 = newImage();
img1.src = "http://ww4.sinaimg.cn/large/006y8mN6gw1fa5obmqrmvj305k05k3yh.jpg";
img2.src = "http://ww4.sinaimg.cn/large/006y8mN6gw1fa5obmqrmvj305k05k3yh.jpg";
}

使用Ajax

假設上面的所有方法都不夠酷炫,那么,還有一種方法,就是使用Ajax來實現(xiàn)圖片的預加載。使用DOM來實現(xiàn)預加載,可以加載包括圖片,CSS,JavaScript的其他任何東西。相對于直接使用JavaScript,使用Ajax的好處就是CSS和JavaScript可以在他們的內容不影響當前頁面的情況下被預加載。對于圖片來說這確實不是一個問題,盡管如此,這個方法依然很簡潔高效:

window.onload =function(){
setTimeout(function(){
// XHR to request a JS and a CSS
varxhr =newXMLHttpRequest();
xhr.open('GET','http://domain.tld/preload.js');
xhr.send('');
xhr = newXMLHttpRequest();
xhr.open('GET','http://domain.tld/preload.css');
xhr.send('');
// preload image
newImage().src ="http://domain.tld/preload.png";
}, 1000);
};

就像這樣,這段代碼會預加載三個文件:preload.js,preload.css,preload.png。設置1秒的延時主要是防止加載JavaScript文件而導致正常頁面的功能性問題。

為了將其封裝起來,我們看看怎么使用原生JavaScript來寫這一段代碼:

window.onload =function(){
setTimeout(function(){
// reference to <head>
varhead =document.getElementsByTagName('head')[0];
// a new CSS
varcss =document.createElement('link');
css.type = 'text/css';
css.rel = 'stylesheet';
css.;
// a new JS
varjs =document.createElement('script');
js.type = 'text/javascript';
js.src = 'http://domain.tld/preload.js';
// preload JS and CSS
head.appendChild(css);
head.appendChild(js);
// preload image
newImage().src ='http://domain.tld/preload.png';
}, 1000);
};

在這里,我們通過DOM創(chuàng)建了三個元素來預加載了頁面上的三個文件。正如原文中所提到的,對于Ajax來說,這個方法不是那么好。預加載的文件內容不應該添加到正在加載的頁面中。

以上所述是小編給大家介紹的利用CSS、JavaScript及Ajax實現(xiàn)圖片預加載的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • JS實現(xiàn)中國公民身份證號碼有效性驗證

    JS實現(xiàn)中國公民身份證號碼有效性驗證

    這篇文章主要介紹了JS實現(xiàn)中國公民身份證號碼有效性驗證,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • JS代碼實現(xiàn)電腦配置檢測功能

    JS代碼實現(xiàn)電腦配置檢測功能

    這篇文章主要介紹了JS代碼實現(xiàn)電腦配置檢測功能,需要的朋友可以參考下
    2018-03-03
  • JavaScript數(shù)組操作總結

    JavaScript數(shù)組操作總結

    JavaScript中的Array對象與其他編程語言中的數(shù)組一樣,是一組數(shù)據(jù)的集合。在JavaScript中,數(shù)組里面的數(shù)據(jù)可以是不同類型的,并具有用于執(zhí)行數(shù)組常見操作的方法,本文整理了一些常用的,需要的可以參考一下
    2022-10-10
  • wavesurfer.js繪制音頻波形圖的實現(xiàn)

    wavesurfer.js繪制音頻波形圖的實現(xiàn)

    這篇文章主要介紹了wavesurfer.js繪制音頻波形圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Javascript delete 引用類型對象

    Javascript delete 引用類型對象

    很少使用javascript的delete,最近因為一個小bug發(fā)現(xiàn)刪除引用類型對象的時候有一點不同
    2013-11-11
  • js繪制購物車拋物線動畫

    js繪制購物車拋物線動畫

    這篇文章主要為大家詳細介紹了js繪制購物車拋物線動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 深入理解javascript中concat方法

    深入理解javascript中concat方法

    本文主要介紹了javascript中concat方法,主要分為2小節(jié)內容:1.concat方法的基礎介紹;2.從實例中感受concat方法。需要的朋友一起來看下吧
    2016-12-12
  • js實現(xiàn)抽獎功能

    js實現(xiàn)抽獎功能

    這篇文章主要為大家詳細介紹了js實現(xiàn)抽獎功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • JS實現(xiàn)盒子跟著鼠標移動及鍵盤方向鍵控制盒子移動效果示例

    JS實現(xiàn)盒子跟著鼠標移動及鍵盤方向鍵控制盒子移動效果示例

    這篇文章主要介紹了JS實現(xiàn)盒子跟著鼠標移動及鍵盤方向鍵控制盒子移動效果,涉及javascript事件響應及頁面元素屬性動態(tài)操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-01-01
  • js中class的點擊事件沒有效果的解決方法

    js中class的點擊事件沒有效果的解決方法

    下面小編就為大家?guī)硪黄猨s中class的點擊事件沒有效果的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10

最新評論

永春县| 文山县| 太谷县| 稻城县| 九江市| 阿拉善盟| 永胜县| 锡林浩特市| 永和县| 疏附县| 泰安市| 灵山县| 图片| 临桂县| 潼南县| 馆陶县| 江门市| 桂林市| 佛冈县| 大关县| 偏关县| 龙游县| 长宁区| 巴彦淖尔市| 禄丰县| 友谊县| 渭南市| 徐闻县| 江城| 武宣县| 永春县| 台南市| 卓尼县| 松阳县| 石河子市| 岗巴县| 临潭县| 论坛| 于都县| 黎城县| 寿光市|