30行Javascript程式碼實現圖片懶載入
前言
頁面太多圖片?那麼請你花20分鐘去最佳化一下頁面的效能
講道理,當你為圖片的src賦值時,DOM節點渲染完畢時就會主動去請求src指向的資源,即使該圖片不在使用者的可視範圍。那麼,如果圖片太多,載入頁面的速度會就會變慢。
效果圖
讓我們看開啟chrome的debug看看network皮膚
原理
- 將資源路徑賦值到img標籤的data-xx屬性中,而不是src屬性
- 獲取img節點距離瀏覽器頂部的距離,如果小於或等於瀏覽器視窗的可視高度,那麼就將data-xx的值賦值到src裡去
用到的Web API
程式碼
html
// img-warpper * 5, 每張gif連結都不一樣
css
body {
text-align: center;
}
img {
width: 100%;
max-width: 300px;
height: 200px;
margin-bottom: 100px; // 為了方便看效果,將圖片儘可能的撐開
}
javascript
// 圖片懶載入類
class LazyLoad {
constructor(el) {
this.imglist = Array.from(document.querySelectorAll(el)); // 需使用懶載入的圖片集合
this.init(); // 初始化
}
// 判斷是否該圖片是否可以載入
canILoad() {
let imglist = this.imglist;
for (let i = imglist.length; i--;) {
// 縮寫,相當於if true
this.getBound(imglist[i]) && this.loadImage(imglist[i], i);
}
}
// 獲取圖片與視窗的資訊
getBound(el) {
let bound = el.getBoundingClientRect();
let clientHeight = window.innerHeight;
// 圖片距離頂部的距離 {
this.imglist.length && this.canILoad();
});
}
// 初始化
init() {
this.canILoad();
this.bindEvent();
}
}
// 例項化物件,引數則是需要使用懶載入的圖片類名
const lazy = new LazyLoad('.lazyload')
非同步載入的圖片怎麼使用
- 基本操作,非同步獲取圖片連結
- 動態插入節點
- 獲取這些新新增的節點
3.1 給新新增的節點做一些標記,如類名或者屬性 - lazy.imglist.push(Array.from(document.querySelectorAll(‘這些新的節點’)));
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2805151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 圖片懶載入實現
- 圖片懶載入js實現JS
- 實現圖片懶載入(throttle, debounce)
- [譯] 原生實現圖片懶載入
- React如何實現圖片懶載入React
- 實現圖片懶載入(Lazyload)
- 微信小程式--實現圖片懶載入(lazyload)微信小程式
- 滾動載入圖片(懶載入)實現原理
- 手把手實現圖片懶載入+封裝vue懶載入元件封裝Vue元件
- javascript圖片懶載入與預載入的分析JavaScript
- 圖片懶載入
- 實現圖片懶載入的三種方式
- 小說APP原始碼的圖片載入方式,懶載入和預載入的實現APP原始碼
- Vue實現一個圖片懶載入外掛Vue
- 圖片懶載入(IntersectionObserver)Server
- 圖片懶載入原理
- 圖片懶載入外掛實戰
- 圖片預載入和懶載入
- 手摸手-100行程式碼實現一個功能完善的圖片懶載入行程
- 一起來實現圖片滾動懶載入
- 原生JS實現最簡單的圖片懶載入JS
- 原生 JS 實現最簡單的圖片懶載入JS
- 圖片懶載入踩坑
- 圖片懶載入大白話
- javascript圖片預載入程式碼例項JavaScript
- JavaScript實現圖片的延遲載入JavaScript
- 小程式之圖片瀑布流(最全實現方式,額外加送懶載入)
- jQuery實現圖片預載入程式碼例項jQuery
- Js圖片懶載入(lazyload)JS
- jQuery實現的圖片預載入程式碼例項jQuery
- 小程式記憶體問題–圖片懶載入記憶體
- “懶”的妙用——淺析圖片懶載入技術
- 頁面圖片預載入與懶載入策略
- 圖片懶載入 與 下拉載入更新資料
- 前端優化之圖片懶載入前端優化
- 利用CSS、JavaScript及Ajax實現圖片預載入CSSJavaScript
- 效能更優越的小程式圖片懶載入方式
- 直播平臺搭建,vue中實現圖片懶載入的幾種方法Vue