常見小效果之懶載入
阿新 • • 發佈:2019-02-18
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<style type="text/css">
*{padding : 0;margin: 0;}
ul,li{list-style: none;}
img{width: 100%;height: 160px;/* 以下樣式是為了做漸變效果 */opacity: 0;transition: opacity 2s;}
img[src]{opacity: 1;}
</style>
</head>
<body>
<ul>
<li>![](img/home/home2.jpg)</li>
<li>![](img/home/home3.jpg)</li>
<li>![](img/home/home4.jpg)</li>
<li>![](img/home/home5.jpg)</li>
<li>![](img/home/home6.jpg)</li>
<li>![](img/home/home2.jpg)</li>
<li>![](img/home/home3.jpg)</li >
<li>![](img/home/home4.jpg)</li>
<li>![](img/home/home5.jpg)</li>
<li>![](img/home/home6.jpg)</li>
<li>![](img/home/home2.jpg)</li>
<li>![](img/home/home3.jpg)</li>
<li>![](img/home/home4.jpg)</li>
<li>![](img/home/home5.jpg)</li>
<li>![](img/home/home6.jpg)</li>
<li>![](img/home/home2.jpg)</li>
<li>![](img/home/home3.jpg)</li>
<li>![](img/home/home4.jpg)</li>
<li>![](img/home/home5.jpg)</li>
<li>![](img/home/home6.jpg)</li>
<li>![](img/home/home2.jpg)</li>
<li>![](img/home/home3.jpg)</li>
<li>![](img/home/home4.jpg)</li>
<li>![](img/home/home5.jpg)</li>
<li>![](img/home/home6.jpg)</li>
<li>![](img/home/home2.jpg)</li>
<li>![](img/home/home3.jpg)</li>
<li>![](img/home/home4.jpg)</li>
<li>![](img/home/home5.jpg)</li>
<li>![](img/home/home6.jpg)</li>
</ul>
<script type="text/javascript">
/*
* 圖片懶載入的思路
* 1、提前給所有圖片設定寬和高用來佔位
* 2、不設定圖片的src屬性,而是自定義一個data-src屬性來儲存圖片的路徑
* 3、判斷當前螢幕的位置(圖片的top值和螢幕底部的值),來進行是否顯示
* 圖片,如果需要顯示的話,把data-src的值給src
*/
var imgs = document.querySelectorAll("img"); //獲取所有圖片
window.onscroll = lazyloadFn;//設定滾動事件
var sh = window.innerHeight; //螢幕的高度
console.log(sh);
lazyloadFn(); //剛進來需要先呼叫下
function lazyloadFn () {//圖片懶載入的方法
var st = document.body.scrollTop;//獲取滾動的距離
var sn = sh + st;//計算滾動中的底部的值
for (var i = 0; i < imgs.length; i++) { //迴圈所有的圖片
if (imgs[i].offsetTop <= sn) {
imgs[i].src = imgs[i].getAttribute("data-src");
}
}
}
</script>
</body>
</html>