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

基于javascript實現(xiàn)圖片懶加載

 更新時間:2016年01月05日 15:59:22   投稿:lijiao  
這篇文章主要介紹了javascript實現(xiàn)圖片懶加載的方法及思路,有時我們需要用懶加載,也就是延遲加載圖片的方式,來提高網(wǎng)站的親和力,需要的朋友可以參考下

一、定義

  圖片延遲加載也稱為懶加載,延遲加載圖片或符合某些條件時才加載某些圖片,通常用于圖片比較多的網(wǎng)頁??梢詼p少請求數(shù)或者延遲請求數(shù),優(yōu)化性能。

 二、呈現(xiàn)形式

【1】延時加載,使用setTimeout或setInterval進行加載延遲,如果用戶在加載前就離開,自然就不會進行加載。
【2】條件加載,符合某些條件或者觸發(fā)了某些條件才開始異步加載。
【3】可視區(qū)域加載,僅僅加載用戶可以看到的區(qū)域,這個主要監(jiān)控滾動條來實現(xiàn),一般距離用戶看到的底邊很近的時候開始加載,這樣能保證用戶下拉時圖片正好接上,不會有太長時間的停頓。

 三、基本步驟

【1】網(wǎng)頁中的圖片都設為同一張圖片
【2】給圖片增加data-original = "img/test.jpg"的屬性,保存圖片的真實地址
【3】當觸發(fā)某些條件時,自動改變該區(qū)域的圖片的src屬性為真實的地址 

四、應用

1、點擊按鈕顯示圖片

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
  margin: 0;
}
img{
  height: 100px;
  width: 100px;
}
</style>
</head>
<body>
<button>加載圖片</button>
<img src="#" alt="測試" data-original = "img/test.png">
<script>
var oBtn = document.getElementsByTagName('button')[0];
var oImg = document.images[0];  
oBtn.onclick = function(){
  oImg.src = "img/loading.gif";
  if(oImg.dataset){
    aftLoadImg(oImg,oImg.dataset.original);  
  }else{
    aftLoadImg(oImg,oImg.getAttribute("data-original"));
  }
}
function aftLoadImg(obj,url){
  var oImg = new Image();
  oImg.onload = function(){
    obj.src = oImg.src;
  }
  oImg.src = url;
}
</script>  
</body>
</html>


2、可視區(qū)顯示圖片

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
  margin: 0;
}
ul{
  margin: 0;
  padding: 0;
  list-style: none;
}
img{
  border: none;
  vertical-align: middle;
}
.in{
  border: 1px solid black;
  margin: 10px;
  text-align: center;
  height: 400px;
  width: 400px;
  float: left;
}
.in img{
  height: 400px;
  width: 400px;
}
</style>
</head>
<body>
<ul class="list">
  <li class="in"><img src="img/loading.gif" alt="測試" data-original = "img/img1.gif"></li>
  <li class="in"><img src="img/loading.gif" alt="測試" data-original = "img/img2.gif"></li>
  <li class="in"><img src="img/loading.gif" alt="測試" data-original = "img/img3.gif"></li>
  <li class="in"><img src="img/loading.gif" alt="測試" data-original = "img/img4.gif"></li>  
  <li class="in"><img src="img/loading.gif" alt="測試" data-original = "img/img1.gif"></li>
  <li class="in"><img src="img/loading.gif" alt="測試" data-original = "img/img2.gif"></li>
  <li class="in"><img src="img/loading.gif" alt="測試" data-original = "img/img3.gif"></li>
  <li class="in"><img src="img/loading.gif" alt="測試" data-original = "img/img4.gif"></li>              
</ul>

<script>
var oBtn = document.getElementsByTagName('button')[0];
var aImages = document.images;
loadImg(aImages);
window.onscroll = function(){
  loadImg(aImages);
};
function loadImg(arr){
  for( var i = 0,len = arr.length; i < len; i++){
    if(arr[i].getBoundingClientRect().top < document.documentElement.clientHeight && !arr[i].isLoad){
      arr[i].isLoad = true;
      arr[i].style.cssText = "transition: ''; opacity: 0;"
      if(arr[i].dataset){
        aftLoadImg(arr[i],arr[i].dataset.original);  
      }else{
        aftLoadImg(arr[i],arr[i].getAttribute("data-original"));
      }
      (function(i){
        setTimeout(function(){
          arr[i].style.cssText = "transition: 1s; opacity: 1;"
        },16)
      })(i);
    }
  }
}
function aftLoadImg(obj,url){
  var oImg = new Image();
  oImg.onload = function(){
    obj.src = oImg.src;
  }
  oImg.src = url;
}

</script>  
</body>
</html>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,順利實現(xiàn)javascript圖片懶加載。

相關(guān)文章

  • Bootstrap 附加導航(Affix)插件實例詳解

    Bootstrap 附加導航(Affix)插件實例詳解

    附加導航(Affix)插件允許某個 <div> 固定在頁面的某個位置。接下來通過本文給大家介紹Bootstrap 附加導航(Affix)插件實例詳解,感興趣的朋友一起看看吧
    2016-06-06
  • javascript 字符 Escape,encodeURI,encodeURIComponent

    javascript 字符 Escape,encodeURI,encodeURIComponent

    下面是對字符串編碼轉(zhuǎn)換功能函數(shù)大家,大家可以根據(jù)實際需要選擇使用。
    2009-07-07
  • uni-app中使用手機號一鍵登錄的詳細圖文教程

    uni-app中使用手機號一鍵登錄的詳細圖文教程

    最近剛接觸了uni-app,用于開發(fā)微信小程序,設計到了微信授權(quán)登錄,下面這篇文章主要給大家介紹了關(guān)于uni-app中使用手機號一鍵登錄的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • JS實現(xiàn)的表格行上下移動操作示例

    JS實現(xiàn)的表格行上下移動操作示例

    這篇文章主要介紹了JS實現(xiàn)的表格行上下移動操作,涉及javascript針對頁面元素節(jié)點與屬性的相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • layui實現(xiàn)數(shù)據(jù)表格點擊搜索功能

    layui實現(xiàn)數(shù)據(jù)表格點擊搜索功能

    這篇文章主要為大家詳細介紹了layui實現(xiàn)數(shù)據(jù)表格點擊搜索功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • thinkjs微信中控之微信鑒權(quán)登陸的實現(xiàn)代碼

    thinkjs微信中控之微信鑒權(quán)登陸的實現(xiàn)代碼

    這篇文章主要介紹了thinkjs微信中控之微信鑒權(quán)登陸的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 原生js的RSA和AES加密解密算法

    原生js的RSA和AES加密解密算法

    這篇文章主要為大家詳細介紹了原生js的RSA和AES加密解密算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 微信小程序?qū)崿F(xiàn)寫入讀取緩存詳解

    微信小程序?qū)崿F(xiàn)寫入讀取緩存詳解

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)寫入緩存與讀取緩存詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • JavaScript入門基礎(chǔ)

    JavaScript入門基礎(chǔ)

    在學習JavaScript之前,必須具備HTML和CSS知識,Javascript是一種解釋性的,基于對象的腳本語言(aninterpreted,object-basedscriptinglanguage)。這篇文章主要講解JavaScript入門基礎(chǔ),需要的朋友可以參考下
    2015-08-08
  • JS封裝的選項卡TAB切換效果示例

    JS封裝的選項卡TAB切換效果示例

    這篇文章主要介紹了JS封裝的選項卡TAB切換效果,結(jié)合實例形式分析了javascript響應鼠標事件動態(tài)操作頁面元素屬性實現(xiàn)tab切換的相關(guān)技巧,需要的朋友可以參考下
    2016-09-09

最新評論

广灵县| 任丘市| 五原县| 泰来县| 通江县| 涞源县| 淮北市| 紫金县| 鄯善县| 扎鲁特旗| 荥经县| 盐城市| 阿坝县| 玉门市| 祁门县| 普兰店市| 囊谦县| 静安区| 灵丘县| 西吉县| 庄浪县| 金沙县| 东乡县| 田阳县| 全椒县| 阿拉善右旗| 商都县| 安康市| 屏南县| 霍邱县| 陆良县| 新野县| 高邑县| 钟山县| 五寨县| 盐亭县| 汾阳市| 海晏县| 光山县| 正宁县| 沛县|