1. 程式人生 > >常見小效果之懶載入

常見小效果之懶載入

<!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>