js實(shí)現(xiàn)圖片懶加載

圖片懶加載

現(xiàn)如今捞奕,網(wǎng)站載有的信息量越來越大牺堰,其中圖片占據(jù)著很大一部分,這樣一來可以使整個(gè)頁以面圖文結(jié)合的形式展現(xiàn)颅围,更加美觀萌焰。

然而問題來了,如果是一個(gè)圖片列表頁谷浅,雖然好看扒俯,但是相關(guān)圖片的加載要耗費(fèi)非常長(zhǎng)的時(shí)間,等待圖片一格一格的加載一疯,實(shí)在讓人抓狂撼玄,如何優(yōu)化此類頁面呢?

解決的方法有兩種(筆者自己總結(jié)墩邀,歡迎在文章評(píng)論中給我留言介紹其它方法):

1.利用ajax技術(shù)將此類頁面做成瀑布流
2.圖片懶加載

綜上所述掌猛,如果在沒有ajax支持的情況下,圖片懶加載是一個(gè)非常好的選擇眉睹。

原理:

頁面加載后只讓文檔可視區(qū)內(nèi)的圖片顯示荔茬,其它不顯示,隨著用戶對(duì)頁面的滾動(dòng)竹海,判斷其區(qū)域位置慕蔚,生成img標(biāo)簽,讓到可視區(qū)的圖片加載出來(正所謂響應(yīng)了黨的號(hào)召:讓一部分人先富起來斋配,從而帶動(dòng)其他人富起來孔飒,最終實(shí)現(xiàn)共同富裕)。

所用相關(guān)技術(shù):

給img的父級(jí)加屬性 (例如data-src)艰争,將圖片的地址賦值給他坏瞄,這樣就生成img標(biāo)簽后再把data-src的值賦給img的src(通過dataset.src或者getAttribute('src'),再賦值給img.setAttribute('src'))。

相關(guān)代碼

·css部分

        *{margin:0;padding:0;}
        ul{overflow:hidden;}
        li{list-style:none;width:10rem;height:12rem;border:1px solid #ccc;box-sizing:border-box;-webkit-box-sizing:border-box;float:left;overflow:hidden;position:relative;}
        li i{width:20px;height:20px;border-radius:20px;position:absolute;border:2px solid #6feb95;z-index:0;left:50%;top:50%;margin-top:-11px;margin-left:-11px;animation:move 1s infinite;-webkit-animation:move 1s infinite;}
        li i:before{position:absolute;width:5px;height:5px;border-radius:4px;content:'';box-shadow:0 0 10px #666;-webkit-box-shadow:0 0 10px #666;background:#fff;border:1px solid #fff;top:-3px;left:50%;margin-left:-3px;}
        img{vertical-align:middle;border-width:0;width:100%;position:relative;z-index:1;}
        @keyframes move{
            0%{
                transform:rotateZ(0);
            }
            100%{
                transform:rotateZ(360deg);
            }
        }
        @-webkit-keyframes move{
            0%{
                -webkit-transform:rotateZ(0);
            }
            100%{
                -webkit-transform:rotateZ(360deg);
            }
        }

這里用css3寫了一個(gè)可以循環(huán)轉(zhuǎn)動(dòng)的loading甩卓,相關(guān)的制作方法鸠匀,歡迎觀看我的另一篇文章
不用設(shè)計(jì),css制作各種loading……

·html部分

<ul>
        <li data-src="http://pic.58pic.com/58pic/17/18/97/01U58PIC4Xr_1024.jpg"><i></i></li>
        <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p01N203pHTU7/Wr5314kcLAtVCi.jpg!t"><i></i></li>
        <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
        <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p01a3SXHo2hZ/XYAC5TLk4uYWXn.jpg!t"><i></i></li>
        <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
        <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
        <li data-src="http://pic.58pic.com/58pic/17/18/97/01U58PIC4Xr_1024.jpg"><i></i></li>
        <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p015trgKM7vw/H0iyDPPneOVrA4.jpg!t"><i></i></li>
        <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
        <li data-src="http://imgsrc.baidu.com/baike/pic/item/2f9cbdcc5e0bcf5c00e9283b.jpg"><i></i></li>
        <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
        <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
        <li data-src="http://pic.58pic.com/58pic/17/18/97/01U58PIC4Xr_1024.jpg"><i></i></li>
        <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p015trgKM7vw/H0iyDPPneOVrA4.jpg!t"><i></i></li>
        <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
        <li data-src="http://imgsrc.baidu.com/baike/pic/item/2f9cbdcc5e0bcf5c00e9283b.jpg"><i></i></li>
        <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
        <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
        <li data-src="http://pic.58pic.com/58pic/17/18/97/01U58PIC4Xr_1024.jpg"><i></i></li>
        <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p015trgKM7vw/H0iyDPPneOVrA4.jpg!t"><i></i></li>
        <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
        <li data-src="http://imgsrc.baidu.com/baike/pic/item/2f9cbdcc5e0bcf5c00e9283b.jpg"><i></i></li>
        <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
        <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
        <li data-src="http://pic.58pic.com/58pic/17/18/97/01U58PIC4Xr_1024.jpg"><i></i></li>
        <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p015trgKM7vw/H0iyDPPneOVrA4.jpg!t"><i></i></li>
        <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
        <li data-src="http://imgsrc.baidu.com/baike/pic/item/2f9cbdcc5e0bcf5c00e9283b.jpg"><i></i></li>
        <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
        <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
        <li data-src="http://pic.58pic.com/58pic/17/18/97/01U58PIC4Xr_1024.jpg"><i></i></li>
        <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p015trgKM7vw/H0iyDPPneOVrA4.jpg!t"><i></i></li>
        <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
        <li data-src="http://imgsrc.baidu.com/baike/pic/item/2f9cbdcc5e0bcf5c00e9283b.jpg"><i></i></li>
        <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
        <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
    </ul>

·js部分

/* 獲取節(jié)點(diǎn) */    
var oUl = document.getElementsByTagName('ul')[0];
var aLi = oUl.getElementsByTagName('li');

/* 創(chuàng)建img標(biāo)簽函數(shù) */    
function createImg(obj){
    var src = '';
    if(obj.dataset.src){
        src = obj.dataset.src;
    }else{
        src = obj.getAttribute('data-src');
    }
    if(obj.children.length <= 1){
        var img = document.createElement('img');
        img.src = src;
        obj.appendChild(img);
    }
}

/* 計(jì)算節(jié)點(diǎn)到文檔頂部的距離 */    
function getTop(obj){
    var h = 0;
    while(obj){
        h += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return h;
}
    
/* 滾動(dòng)實(shí)時(shí)計(jì)算所到區(qū)域并進(jìn)行相關(guān)計(jì)算 */
window.onscroll = function(){
    var t = document.documentElement.clientHeight + (document.body.scrollTop || document.documentElement.scrollTop);
    for(var i=0;i<aLi.length;i++){
        if(getTop(aLi[i]) < t){  
            setTimeout('createImg(aLi['+i+'])',500)
        }
    } 
}

/* 頁面加載完便執(zhí)行一次滾動(dòng)函數(shù) */
window.onload = function(){
    window.onscroll();
}

demo在這,建議在手機(jī)端觀看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逾柿,一起剝皮案震驚了整個(gè)濱河市缀棍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鹿寻,老刑警劉巖睦柴,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诽凌,死亡現(xiàn)場(chǎng)離奇詭異毡熏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)侣诵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門痢法,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狱窘,“玉大人,你說我怎么就攤上這事财搁≌赫ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵尖奔,是天一觀的道長(zhǎng)搭儒。 經(jīng)常有香客問我,道長(zhǎng)提茁,這世上最難降的妖魔是什么淹禾? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮茴扁,結(jié)果婚禮上铃岔,老公的妹妹穿的比我還像新娘。我一直安慰自己峭火,他們只是感情好毁习,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卖丸,像睡著了一般纺且。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稍浆,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天隆檀,我揣著相機(jī)與錄音,去河邊找鬼粹湃。 笑死恐仑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的为鳄。 我是一名探鬼主播裳仆,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼孤钦!你這毒婦竟也來了歧斟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤偏形,失蹤者是張志新(化名)和其女友劉穎静袖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俊扭,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡队橙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捐康。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仇矾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出解总,到底是詐尸還是另有隱情贮匕,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布花枫,位于F島的核電站刻盐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏劳翰。R本人自食惡果不足惜隙疚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磕道。 院中可真熱鬧供屉,春花似錦、人聲如沸溺蕉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疯特。三九已至哗魂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漓雅,已是汗流浹背录别。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邻吞,地道東北人组题。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抱冷,于是被迫代替她去往敵國和親崔列。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 前言 圖片懶加載也是比較常見的一種性能優(yōu)化的方法旺遮,最近在用vue做一個(gè)新聞列表的客戶端時(shí)也用到了赵讯,這里就簡(jiǎn)單介紹下...
    ITgecko閱讀 1,320評(píng)論 0 10
  • 最近接的項(xiàng)目終于接近尾聲,這段時(shí)間一直沒有造輪子耿眉,在實(shí)現(xiàn)設(shè)計(jì)圖還原的途中边翼,發(fā)現(xiàn)還是有一些技術(shù)需要掌握,難者不會(huì)鸣剪,會(huì)...
    JacobMa1996閱讀 7,600評(píng)論 12 5
  • 原理 對(duì)于 標(biāo)簽组底,在初次加載時(shí)丈积,不把URI放在src屬性中,而是自定義一個(gè)屬性斤寇,比如data-src桶癣,然后僅當(dāng)圖片...
    元?dú)鉂M滿321閱讀 652評(píng)論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案拥褂? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,751評(píng)論 1 92
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品娘锁,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式饺鹃。簡(jiǎn)單...
    舟漁行舟閱讀 7,752評(píng)論 2 17