1. 程式人生 > >原生javascript圖片懶載入效果程式碼。

原生javascript圖片懶載入效果程式碼。

原理是先獲取頁面所需懶載入的所有圖片物件,然後分別計算圖片距離頂部的距離是否小於螢幕可見高度+頁面滾動高度,即元素是否從下滾動到眼球可見位置,如果小於,那麼將自定義的data-src屬性中的值(即圖片的URL地址賦值給src屬性,完成請求載入)。監聽頁面滾動事件即可!定義n 值儲存起來可以更好的記錄到滾動可見的圖片,避免重複迴圈,提高效能。

<!doctype html>

<html>

<head>

    <title>index</title>

    <meta charset="utf-8">

    <meta
name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" > <meta name="keywords" content="{$web['web_key']}"> <!--關鍵詞--> <meta name="description" content="{$web['web_description']}"> <!--網站描述--> </head> <body
>
<div style="width:100%;overflow:hidden;"> <!--容器標籤開始--> <!--header start--> <include file="common/header"/> <!--header end--> <!--mainBox start--> <div class="main"> <div class="article-list"> <div
class="container title">
<h5>註冊香港公司相關資料</h5> <!-- <a href="" class="more">檢視全部 >></a> --> </div> <div class="container list"> <foreach name="art" item="value"> <dl> <dt> <img src="" alt="" title="{$value['art_title']}" data-src=""> </dt> <dd class="title"> <a href=""><strong></strong></a> </dd> <dd class="detail"> {$value['art_intro']} </dd> <dd class="detail">{$value['art_addtime']|date="Y-m-d H:i:s",###}</dd> <dd class="consolution"> <!-- <a href="" target="_blank">立即諮詢>></a> --> <a href="" title="" target="_blank">瞭解更多>></a> </dd> </dl> </foreach> </div> </div> <!--footer start--> <include file="common/footer"/> <!--footer end--> </div> <!--mainBox end--> </div><!--容器標籤結束--> </body> <script> !function(){ //獲取元素距離頁面頂部的絕對距離 function getAbsPoint(e) { var x = e.offsetLeft; var y = e.offsetTop; while(e = e.offsetParent) //等同於while(e.offsetParent){e = e.offsetParent} { x += e.offsetLeft; y += e.offsetTop; } return {'x': x, 'y': y}; }; var imgs = document.getElementsByTagName("img"); var num = imgs.length; var n = 0; //儲存圖片載入到的位置,避免每次都從第一張圖片開始遍歷 lazyload(); //頁面載入完畢載入可是區域內的圖片 window.onscroll = lazyload; function lazyload() { //監聽頁面滾動事件 var seeHeight = document.documentElement.clientHeight; //可見區域高度 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //滾動條距離頂部高度 for (var i = n; i < num; i++) { //判斷圖片距離頁面頂部的位置是否小於螢幕可見高度+頁面滾動高度,即元素是否從下滾動到眼球可見位置 if (getAbsPoint(imgs[i]).y < seeHeight + scrollTop) { if (imgs[i].getAttribute("src") == "") { imgs[i].src = imgs[i].getAttribute("data-src"); } n = i + 1; } } } }(); </script> </html>