第39章 簡述圖片懶加載的實現(xiàn)原理

一枫匾、定義

當打開一個有很多圖片的頁面時架诞,先只加載頁面上看到的圖片,等滾動到頁面下面時干茉,再加載所需的圖片谴忧。這就是圖片懶加載。

二角虫、作用

減少或延遲請求數(shù)沾谓,緩解瀏覽器的壓力,增強用戶體驗上遥。

三搏屑、實現(xiàn)方式

  1. 設置圖片src屬性為同一張圖片,同時自定義一個data-src屬性來存儲圖片的真實地址
  2. 頁面初始化顯示的時候或者瀏覽器發(fā)生滾動的時候判斷圖片是否在視野中
  3. 當圖片在視野中時粉楚,通過js自動改變該區(qū)域的圖片的src屬性為真實地址
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
  
  <style>
    .container{
      max-width: 600px;
      margin: 0 auto;
    }
    .container::after{
      content: '';
      display: block;
      clear: both;
    }
    .container img{
      float: left;
      width: 50%;
    }
    h1{
      clear: both;
    } 
    /* 因為img都是浮動辣恋,如果不清除浮動,h1的值高度就相當于container里面最高的模软,不是實際的數(shù)值 */
  </style>
  
<body>
  <div class="container">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="1" data-src="http://cdn.jirengu.com/book.jirengu.com/img/1.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="2" data-src="http://cdn.jirengu.com/book.jirengu.com/img/2.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="3" data-src="http://cdn.jirengu.com/book.jirengu.com/img/3.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="4" data-src="http://cdn.jirengu.com/book.jirengu.com/img/4.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="5" data-src="http://cdn.jirengu.com/book.jirengu.com/img/5.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="6" data-src="http://cdn.jirengu.com/book.jirengu.com/img/6.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="7" data-src="http://cdn.jirengu.com/book.jirengu.com/img/7.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="8" data-src="http://cdn.jirengu.com/book.jirengu.com/img/8.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="9" data-src="http://cdn.jirengu.com/book.jirengu.com/img/9.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="10" data-src="http://cdn.jirengu.com/book.jirengu.com/img/10.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="11" data-src="http://cdn.jirengu.com/book.jirengu.com/img/11.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="12" data-src="http://cdn.jirengu.com/book.jirengu.com/img/12.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="13" data-src="http://cdn.jirengu.com/book.jirengu.com/img/13.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="14" data-src="http://cdn.jirengu.com/book.jirengu.com/img/14.jpg">
    <h1 id="target">hello</h1>
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="15" data-src="http://cdn.jirengu.com/book.jirengu.com/img/15.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="16" data-src="http://cdn.jirengu.com/book.jirengu.com/img/16.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="17" data-src="http://cdn.jirengu.com/book.jirengu.com/img/17.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="18" data-src="http://cdn.jirengu.com/book.jirengu.com/img/18.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="19" data-src="http://cdn.jirengu.com/book.jirengu.com/img/19.jpg">
    <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="20" data-src="http://cdn.jirengu.com/book.jirengu.com/img/20.jpg">    
  </div>
  
  <script>
    
    start()/* 一開始窗口沒有滾動伟骨,也需要觸發(fā)一次 */
    
    $(window).on('scroll', function(){
      start()
    })
    
    function start(){
       /*提高性能,不用每張圖片都檢查一遍燃异,加載了的圖片不檢測*/
      $('.container img').not('[data-isLoaded]').each(function(){
        var $node = $(this)
        if(isShow($node)){
          //沒必要為了為了效果減慢加載速度携狭,懶加載本來就是為了提高響應速度的
          //setTimeout(function(){
            loadImg($node)
          //},500)
        }
      })      
    }
    
    function isShow($node){
      return $node.offset().top <= $(window).height() + $(window).scrollTop()
    }
    
    function loadImg($img){
      $img.attr('src', $img.attr('data-src'))
      $img.attr('data-isLoaded', 1)
    }
    
  </script>
  
</body>
</html>

效果預覽

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市回俐,隨后出現(xiàn)的幾起案子逛腿,更是在濱河造成了極大的恐慌稀并,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件单默,死亡現(xiàn)場離奇詭異碘举,居然都是意外死亡,警方通過查閱死者的電腦和手機搁廓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門引颈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人境蜕,你說我怎么就攤上這事蝙场。” “怎么了粱年?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵售滤,是天一觀的道長。 經(jīng)常有香客問我逼泣,道長趴泌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任拉庶,我火速辦了婚禮,結果婚禮上秃励,老公的妹妹穿的比我還像新娘氏仗。我一直安慰自己,他們只是感情好夺鲜,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布皆尔。 她就那樣靜靜地躺著,像睡著了一般币励。 火紅的嫁衣襯著肌膚如雪慷蠕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天食呻,我揣著相機與錄音流炕,去河邊找鬼。 笑死仅胞,一個胖子當著我的面吹牛每辟,可吹牛的內容都是我干的。 我是一名探鬼主播干旧,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼渠欺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了椎眯?” 一聲冷哼從身側響起挠将,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胳岂,失蹤者是張志新(化名)和其女友劉穎舔稀,沒想到半個月后旦万,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體成艘,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡淆两,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年秋冰,在試婚紗的時候發(fā)現(xiàn)自己被綠了婶熬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖饺谬,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情族展,我是刑警寧澤拔鹰,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布列肢,位于F島的核電站,受9級特大地震影響锣尉,放射性物質發(fā)生泄漏决采。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一爱谁、第九天 我趴在偏房一處隱蔽的房頂上張望孝偎。 院中可真熱鬧,春花似錦寺旺、人聲如沸势决。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽走搁。三九已至迈窟,卻和暖如春菠隆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骇径。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工者春, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钱烟,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓读第,卻偏偏與公主長得像拥刻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吴汪,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案杆融? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,754評論 1 92
  • 一霜运、定義 當打開一個有很多圖片的頁面時淘捡,先只加載頁面上看到的圖片,等滾動到頁面下面時座韵,再加載所需的圖片踢京。這就是圖片...
    5吖閱讀 15,443評論 0 3
  • 對于一個有多個圖片的網(wǎng)站來說瓣距,訪問的時候不應該直接加載所有圖片,而是應該只講瀏覽器窗口內的圖片進行加載成黄。當滾動的時...
    DeeJay_Y閱讀 19,017評論 9 15
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5奋岁? 答:HTML5是最新的HTML標準荸百。 注意:講述HT...
    kismetajun閱讀 27,486評論 1 45
  • 特別聲明:此篇文章內容來源于@Jeremy Wagner的《Lazy Loading Images and Vid...
    Naeco閱讀 30,672評論 0 32