js手動實現簡易懶載入 LazyLoad

2021-08-21 20:38:55 字數 1518 閱讀 9200

在網頁載入中,對於一些存在很多image的網頁,一次載入所有,會造成效能浪費,優化的方法有很多,例如base64、雪碧圖等,懶載入也是比較常見的一種效能優化的方法

給頁面中img標籤設定自定義屬性data-original,用來存放真正的img源url,給所有img的src屬性設定為一張靜態或者不設定

監聽視窗滾動scroll事件,遍歷計算是否出現在瀏覽器可視視窗內

方法一

getbound(el)
方法二

getbound(el)
getboundingclientrect 

返回值是乙個 domrect 物件,這個物件是由該元素的getclientrects()domrect 物件包含了一組用於描述邊框的唯讀屬性——left、top、right和bottom,單位為畫素。除了 width 和 height 外的屬性都是相對於視口的左上角位置而言的。

及引用都來自getboundingclientrect

方法三(更新)

發現乙個瀏覽器的api,intersectionobserver api 使用教程

**暫未更新。。。

**基於react框架實現,使用方法二來判斷是否出現在可視區域

html

classname="lazyload"

// alt="哦豁"

data-original=""

//>

classname="lazyload"

// alt="哦豁"

data-original=""

//>

classname="lazyload"

// alt="哦豁"

data-original=""

//>

classname="lazyload"

// alt="哦豁"

data-original=""

//>

classname="lazyload"

// alt="哦豁"

data-original=""

//>

css

body 

img

.img-warpper

js

class lazyload 

init() )

} load()

getbound(el)

loadimg(el)

}

對於比較大的記載事件可能會長一些,可以使用靜態佔位

對於頻繁觸發的滾動事件,可以考慮函式節流和防抖,有空在分享

js實現懶載入

懶載入就是在可視區域內的影象進行載入,當下拉滾動後變載入當前可視區域的影象,該技術減緩了伺服器端的壓力,優化了使用者體驗功能。直接上 下面是我的布局 class chunji middle bar id src div1 div class chunji middle bar id src div2...

Scope 作用域 和 Lazy 懶載入

scope 調整作用域 和 lazy 懶載入 若沒有配置 lazy,或 lazy value false ioc容器啟動會呼叫方法建立物件放到ioc容器中。以後每次獲取就是直接從容器中拿。若配置了 lazy value true ioc容器啟動並不會去呼叫方法建立物件放在容器中。第一次獲取的時候才會...

JS基礎之手動實現簡易jQuery api

今天主要實現以下兩個api addclass 給指定標籤增加class settext 給指定標籤設定文字內容 textcontent 第一版用到命名空間,命名空間相當於給自己的庫乙個名字,當函式名稱衝突,不會會覆蓋掉之前的函式。var ffyjq 作用 獲取傳入的節點的兄弟節點 ffyjq.get...