快速實(shí)現(xiàn)JS圖片懶加載(可視區(qū)域加載)示例代碼
js懶加載圖片
如何提高網(wǎng)頁加載速度?在網(wǎng)頁中有許多img標(biāo)簽,這些標(biāo)簽就是圖片,其屬性src則是指向服務(wù)器地址,當(dāng)瀏覽器從上往下讀取到src標(biāo)簽中的地址時(shí),瀏覽器就會開啟線程,加載這張圖片。而并不是等到整張頁面都解析完成才加載圖片。我們要做的就是加載用戶可視范圍內(nèi)的圖片。
js懶加載圖片的目的
1.網(wǎng)頁優(yōu)化,提高網(wǎng)頁加載速度
2.頁面優(yōu)化友好,提高SEO收錄與排名
3.提高用戶體驗(yàn),減少服務(wù)器壓力


實(shí)例代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圖片懶加載(可視區(qū)域加載)</title>
<style>
* {
padding: 0px;
margin: 0px;
}
html,
body {
width: 100%;
min-height: 100%;
}
#SB {
margin: 0;
padding: 0;
list-style: none;
}
#SB .in {
border: 1px solid red;
margin: 10px;
text-align: center;
height: 400px;
width: 400px;
float: left;
}
.in img {
border: none;
vertical-align: middle;
height: 400px;
width: 400px;
}
</style>
</head>
<body>
<ul id="SB">
<li class="in"><img src="" data-imgurl="img/1.jpg"></li>
<li class="in"><img src="" data-imgurl="img/2.jpg"></li>
<li class="in"><img src="" data-imgurl="img/3.jpg"></li>
<li class="in"><img src="" data-imgurl="img/4.jpg"></li>
<li class="in"><img src="" data-imgurl="img/5.jpg"></li>
<li class="in"><img src="" data-imgurl="img/6.jpg"></li>
<li class="in"><img src="" data-imgurl="img/7.jpg"></li>
<li class="in"><img src="" data-imgurl="img/8.jpg"></li>
<li class="in"><img src="" data-imgurl="img/9.jpg"></li>
<li class="in"><img src="" data-imgurl="img/10.jpg"></li>
<li class="in"><img src="" data-imgurl="img/11.jpg"></li>
<li class="in"><img src="" data-imgurl="img/12.jpg"></li>
<li class="in"><img src="" data-imgurl="img/13.jpg"></li>
<li class="in"><img src="" data-imgurl="img/14.jpg"></li>
<li class="in"><img src="" data-imgurl="img/15.jpg"></li>
<li class="in"><img src="" data-imgurl="img/16.jpg"></li>
<li class="in"><img src="" data-imgurl="img/1.jpg"></li>
<li class="in"><img src="" data-imgurl="img/2.jpg"></li>
<li class="in"><img src="" data-imgurl="img/3.jpg"></li>
<li class="in"><img src="" data-imgurl="img/4.jpg"></li>
<li class="in"><img src="" data-imgurl="img/5.jpg"></li>
<li class="in"><img src="" data-imgurl="img/6.jpg"></li>
<li class="in"><img src="" data-imgurl="img/7.jpg"></li>
<li class="in"><img src="" data-imgurl="img/8.jpg"></li>
<li class="in"><img src="" data-imgurl="img/9.jpg"></li>
<li class="in"><img src="" data-imgurl="img/10.jpg"></li>
<li class="in"><img src="" data-imgurl="img/11.jpg"></li>
<li class="in"><img src="" data-imgurl="img/12.jpg"></li>
<li class="in"><img src="" data-imgurl="img/13.jpg"></li>
<li class="in"><img src="" data-imgurl="img/14.jpg"></li>
<li class="in"><img src="" data-imgurl="img/15.jpg"></li>
<li class="in"><img src="" data-imgurl="img/16.jpg"></li>
<li class="in"><img src="" data-imgurl="img/1.jpg"></li>
<li class="in"><img src="" data-imgurl="img/2.jpg"></li>
<li class="in"><img src="" data-imgurl="img/3.jpg"></li>
<li class="in"><img src="" data-imgurl="img/4.jpg"></li>
<li class="in"><img src="" data-imgurl="img/5.jpg"></li>
<li class="in"><img src="" data-imgurl="img/6.jpg"></li>
<li class="in"><img src="" data-imgurl="img/7.jpg"></li>
<li class="in"><img src="" data-imgurl="img/8.jpg"></li>
<li class="in"><img src="" data-imgurl="img/9.jpg"></li>
<li class="in"><img src="" data-imgurl="img/10.jpg"></li>
<li class="in"><img src="" data-imgurl="img/11.jpg"></li>
<li class="in"><img src="" data-imgurl="img/12.jpg"></li>
<li class="in"><img src="" data-imgurl="img/13.jpg"></li>
<li class="in"><img src="" data-imgurl="img/14.jpg"></li>
<li class="in"><img src="" data-imgurl="img/15.jpg"></li>
<li class="in"><img src="" data-imgurl="img/16.jpg"></li>
</ul>
<script type="text/javascript">
var aImages = document.getElementById("SB").getElementsByTagName('img'); //獲取id為SB的文檔內(nèi)所有的圖片
loadImg(aImages);
window.onscroll = function() { //滾動(dòng)條滾動(dòng)觸發(fā)
loadImg(aImages);
};
//getBoundingClientRect 是圖片懶加載的核心
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; //圖片顯示標(biāo)志位
//arr[i].style.cssText = "opacity: 0;";
(function(i) {
setTimeout(function() {
if(arr[i].dataset) { //兼容不支持data的瀏覽器
aftLoadImg(arr[i], arr[i].dataset.imgurl);
} else {
aftLoadImg(arr[i], arr[i].getAttribute("data-imgurl"));
}
arr[i].style.cssText = "transition: 1s; opacity: 1;" //相當(dāng)于fadein
}, 500)
})(i);
}
}
}
function aftLoadImg(obj, url) {
var oImg = new Image();
oImg.onload = function() {
obj.src = oImg.src; //下載完成后將該圖片賦給目標(biāo)obj目標(biāo)對象
}
oImg.src = url; //oImg對象先下載該圖像
}
</script>
</body>
</html>
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
showModalDialog 和 showModelessDialog
showModalDialog 和 showModelessDialog...2007-01-01
詳解JavaScript中的before-after-hook鉤子函數(shù)
最近看別人的代碼,接觸到一個(gè)插件,before-after-hook,百度搜一圈也沒有看到什么地方有教程,本文就來簡單介紹一下這個(gè)插件的使用方法,需要的可以參考一下2022-12-12
微信小程序?qū)崿F(xiàn)歷史搜索功能的全過程(h5同理)
最近在使用微信小程序開發(fā)的時(shí)候遇到了一個(gè)需求,需要實(shí)現(xiàn)歷史搜索記錄的功能,所以下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)歷史搜索功能(h5同理)的相關(guān)資料,需要的朋友可以參考下2022-12-12
解決typescript項(xiàng)目報(bào)錯(cuò):找不到模塊“xxx”或其相應(yīng)的類型聲明問題
這篇文章主要介紹了解決typescript項(xiàng)目報(bào)錯(cuò):找不到模塊“xxx”或其相應(yīng)的類型聲明問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
addEventListener()與removeEventListener()解析
這篇文章主要為大家詳細(xì)介紹了addEventListener()與removeEventListener(),用于處理指定和刪除事件處理程序操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
使用JS實(shí)現(xiàn)圖片展示瀑布流效果(簡單實(shí)例)
下面小編就為大家?guī)硪黄褂肑S實(shí)現(xiàn)圖片展示瀑布流效果(簡單實(shí)例)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09

