真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JS如何實(shí)現(xiàn)非首屏圖片延遲加載-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)JS如何實(shí)現(xiàn)非首屏圖片延遲加載,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),石城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:石城等地區(qū)。石城做網(wǎng)站價(jià)格咨詢:18982081108

js的作用是什么

1、能夠嵌入動態(tài)文本于HTML頁面。2、對瀏覽器事件做出響應(yīng)。3、讀寫HTML元素。4、在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù)。5、檢測訪客的瀏覽器信息。6、控制cookies,包括創(chuàng)建和修改等。7、基于Node.js技術(shù)進(jìn)行服務(wù)器端編程。

目標(biāo)

減少資源加載可以明顯的優(yōu)化頁面加載的速度,所以可以減少頁面載入時(shí)立即下載的圖片的數(shù)量,以提高頁面加載速度,其他的圖片在需要的時(shí)候再進(jìn)行加載。

思路

想要實(shí)現(xiàn)以上的目標(biāo),有幾個(gè)地方需要思考。

1、如何判斷哪些圖片需要立即加載,哪些可以晚些再加載?

2、如何控制圖片在指定的時(shí)候加載?

對于第一個(gè)問題,頁面打開就會被用戶看到的圖片肯定需要立即加載,其他的可以延后。即在視窗中的圖片需要立即加載。那么如何判斷圖片是否在視窗內(nèi)呢?getBoundingClientRect可以返回元素的大小及其相對于視口的位置(詳細(xì)說明)

 JS如何實(shí)現(xiàn)非首屏圖片延遲加載

可以通過圖中top和right的值判斷圖片是否在視窗中。

對于第二個(gè)問題,先不給img指定src,而是將圖片鏈接地址存放再元素的data-src屬性(自定義)中,需要加載的時(shí)候再賦值給src,才會開始下載圖片。

實(shí)現(xiàn)

思路有了,我們開始實(shí)現(xiàn)。用以下HTML進(jìn)行測試

 
 

圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

   

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

   

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

   

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

   

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

   

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

測試性配文,測試圖片懶加載

 

html中鏈接都來自百度圖片,可在network中觀察是否加載,這里忽略樣式。按照之前的思路,有以下代碼

//所有的圖片
 var imgs = document.querySelectorAll('.lazy-img');
 //首屏圖片加載
 lazyLoad(imgs)
 //剩余圖片加載---監(jiān)聽滾動事件
 window.addEventListener('scroll',function(){
 //滾動事件觸發(fā)太頻繁了,所以加上節(jié)流
 throttle(lazyLoad(imgs),200,500)
 })
 }

下面就是如何實(shí)現(xiàn)lazyLoad

function lazyLoad(imgs,offset){
 offset = offset || 100;
 if (!imgs || imgs.length < 1) {
 console.log('imgs為空');
 return ;
 }
 [].slice.call(imgs).forEach(function(element,index){
 //元素的DomRect
 var rect = element.getBoundingClientRect()
 //出現(xiàn)在視窗中
 if (rect.top <= window.innerHeight + offset && rect.right > 0) {
 element.setAttribute('src',element.getAttribute('data-src'))
 }
 })
}

通過window.innerHeight獲取到視窗的高度,當(dāng)元素距離視窗上邊沿為offset時(shí),加載圖片;其中offset為指定的偏移距離。

節(jié)流函數(shù)如下

function throttle (fn, delay, atleast) {
 let timer = null
 let startTime = new Date()

 return function () {
 let context = this
 let args = arguments
 let curTime = new Date()

 clearTimeout(timer)
 if (curTime - startTime >= atleast) {
 fn.apply(context, args) // apply 指定函數(shù)指向的 上下文(this) 和 參數(shù)列表
 startTime = curTime
 } else {
 timer = setTimeout(function () {
 fn.apply(context, args)
 startTime = curTime
 }, delay)
 }
 }
 }

效果

頁面載入完成,只加載了一張圖片

JS如何實(shí)現(xiàn)非首屏圖片延遲加載

向下滾動到指定位置,才會依次加載后續(xù)圖片

JS如何實(shí)現(xiàn)非首屏圖片延遲加載

關(guān)于“JS如何實(shí)現(xiàn)非首屏圖片延遲加載”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前題目:JS如何實(shí)現(xiàn)非首屏圖片延遲加載-創(chuàng)新互聯(lián)
文章來源:http://weahome.cn/article/jjidh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部