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

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

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

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

實(shí)現(xiàn)圖片預(yù)加載可以使用css、JavaScript、Ajax三種方法。下面分別介紹這些方法的實(shí)現(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; }

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

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

使用CSS和JavaScript結(jié)合

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);

我們把圖片加載設(shè)置到頁面加載完成之后,所以不必?fù)?dān)心由于圖片和頁面同時加載而延長訪問時間。

如果JavaScript運(yùn)行失敗也不必?fù)?dān)心,僅僅是圖片預(yù)加載失敗而已,當(dāng)調(diào)用圖片時也能正常顯示。

使用JavaScript實(shí)現(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í)和方法一是一樣的原理 ,只不過沒有放在數(shù)組中實(shí)現(xiàn),而是分別去為 Image 對象的 src 負(fù)值。

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

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

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);
};

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

為了將其封裝起來,我們看看怎么使用原生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)建了三個元素來預(yù)加載了頁面上的三個文件。正如原文中所提到的,對于Ajax來說,這個方法不是那么好。預(yù)加載的文件內(nèi)容不應(yīng)該添加到正在加載的頁面中。

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

相關(guān)文章

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

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

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

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

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

    JavaScript數(shù)組操作總結(jié)

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

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

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

    Javascript delete 引用類型對象

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

    js繪制購物車拋物線動畫

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

    深入理解javascript中concat方法

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

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

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

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

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

    js中class的點(diǎn)擊事件沒有效果的解決方法

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

最新評論

南城县| 和政县| 平陆县| 武威市| 沧州市| 澳门| 崇明县| 衡山县| 冀州市| 宁陕县| 嵩明县| 岢岚县| 揭东县| 涟水县| 昌吉市| 松江区| 大庆市| 布拖县| 贵南县| 淮阳县| 自贡市| 富源县| 和静县| 垣曲县| 临西县| 四子王旗| 洞头县| 抚顺市| 河北省| 祁连县| 江安县| 定陶县| 梅河口市| 崇左市| 建始县| 漳平市| 交口县| 仁怀市| 嵊州市| 冀州市| 长泰县|