摘要:如果要實(shí)現(xiàn)圖片懶加載需要去判斷圖片是否在可視區(qū)域。判斷方法判斷一個(gè)元素是否在可視區(qū)域,我們有通常有兩種辦法,第一種是使用元素的屬性的值和頁(yè)面的進(jìn)行對(duì)比如果的值小于表示元素在可視區(qū)域內(nèi)。
前言
圖片懶加載在網(wǎng)站運(yùn)用圖片比較多的時(shí)候回用到,圖片懶加載可以讓不在可視區(qū)域的圖片不去加載,避免一次性加載過(guò)多圖片導(dǎo)致請(qǐng)求阻塞,提高網(wǎng)站加載速度和用戶體驗(yàn)。如果要實(shí)現(xiàn)圖片懶加載需要去判斷圖片是否在可視區(qū)域。
判斷方法判斷一個(gè)元素是否在可視區(qū)域,我們有通常有兩種辦法,第一種是:使用元素的 getBoundingClientRect 屬性的 top 值和頁(yè)面的 clientHeight進(jìn)行對(duì)比, 如果top的值小于 clientHeight表示元素在可視區(qū)域內(nèi)。這種方式的缺點(diǎn)是需要監(jiān)聽(tīng)scroll事件,第二種是利用高級(jí)特性 Intersection Observer 來(lái)判斷元素是否可見(jiàn),這種方式不用監(jiān)聽(tīng)scroll事件,元素可見(jiàn)變調(diào)用回調(diào),在回調(diào)里面處理。
getBoundingClientRect用法: rectObject = object.getBoundingClientRect()
返回一組用于描述元素的只讀屬性-left, top,right,botton, width, height,除了width和height外的屬性都是相當(dāng)于于視口左上角而言的。bottom和right于正常的有所不同
當(dāng)計(jì)算邊界矩形時(shí),會(huì)考慮視口區(qū)域(或其他可滾動(dòng)元素)內(nèi)的滾動(dòng)操作,也就是說(shuō),當(dāng)滾動(dòng)位置發(fā)生了改變,top和left屬性值就會(huì)隨之立即發(fā)生變化(因此,它們的值是相對(duì)于視口的,而不是絕對(duì)的)。如果你需要獲得相對(duì)于整個(gè)網(wǎng)頁(yè)左上角定位的屬性值,那么只要給top、left屬性值加上當(dāng)前的滾動(dòng)位置(通過(guò)window.scrollX和window.scrollY),這樣就可以獲取與當(dāng)前的滾動(dòng)位置無(wú)關(guān)的值。
為了跨瀏覽器兼容,請(qǐng)使用 window.pageXOffset 和 window.pageYOffset 代替 window.scrollX 和 window.scrollY。不能訪問(wèn)這些屬性的腳本可以使用下面的代碼:
// For scrollX (((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.scrollLeft == "number" ? t : document.body).scrollLeft // For scrollY (((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.scrollTop == "number" ? t : document.body).scrollTopIntersection Observer
用法:
參考:https://juejin.im/post/5bbc60...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/98379.html
摘要:在這里一次性做個(gè)總結(jié),以用來(lái)判斷元素是否在可視區(qū)域以及用原生簡(jiǎn)單實(shí)現(xiàn)懶加載。被隱藏在內(nèi)容區(qū)域左側(cè)的像素?cái)?shù)。比如上篇文章文字跑馬燈項(xiàng)目中的使用戳此跳轉(zhuǎn)小結(jié)只讀屬性,不包括滾動(dòng)條。 個(gè)性簽名: 生如夏花,逝如冬雪;人生如此,何悔何怨。 前言: 經(jīng)常需要計(jì)算元素的大小或者所在頁(yè)面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop這幾個(gè)關(guān)鍵字的出...
摘要:在這里一次性做個(gè)總結(jié),以用來(lái)判斷元素是否在可視區(qū)域以及用原生簡(jiǎn)單實(shí)現(xiàn)懶加載。被隱藏在內(nèi)容區(qū)域左側(cè)的像素?cái)?shù)。比如上篇文章文字跑馬燈項(xiàng)目中的使用戳此跳轉(zhuǎn)小結(jié)只讀屬性,不包括滾動(dòng)條。 個(gè)性簽名: 生如夏花,逝如冬雪;人生如此,何悔何怨。 前言: 經(jīng)常需要計(jì)算元素的大小或者所在頁(yè)面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop這幾個(gè)關(guān)鍵字的出...
摘要:在這里一次性做個(gè)總結(jié),以用來(lái)判斷元素是否在可視區(qū)域以及用原生簡(jiǎn)單實(shí)現(xiàn)懶加載。被隱藏在內(nèi)容區(qū)域左側(cè)的像素?cái)?shù)。比如上篇文章文字跑馬燈項(xiàng)目中的使用戳此跳轉(zhuǎn)小結(jié)只讀屬性,不包括滾動(dòng)條。 個(gè)性簽名: 生如夏花,逝如冬雪;人生如此,何悔何怨。 前言: 經(jīng)常需要計(jì)算元素的大小或者所在頁(yè)面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop這幾個(gè)關(guān)鍵字的出...
摘要:本小節(jié)將討論與圖片加載時(shí)機(jī)相關(guān)的技術(shù)預(yù)加載與懶加載。同樣,可將請(qǐng)求成功與失敗的回調(diào),作為圖片預(yù)加載成功與失敗的處理。 目前,出于性能與靈活性方面的考慮,我們都將一些小圖片替換成矢量圖或者字體。除了這些能被替換的小圖之外,還有一些不得不使用位圖的場(chǎng)景,如照片、背景等。對(duì)于這些位圖,我們需要考慮它們?cè)诩虞d過(guò)程中的不同狀態(tài),而制定不同的表現(xiàn)方案。 圖片加載過(guò)程中的狀態(tài),大致包括: 何時(shí)決定...
閱讀 920·2021-11-25 09:43
閱讀 1293·2021-11-17 09:33
閱讀 3010·2019-08-30 15:44
閱讀 3310·2019-08-29 17:16
閱讀 480·2019-08-28 18:20
閱讀 1637·2019-08-26 13:54
閱讀 553·2019-08-26 12:14
閱讀 2174·2019-08-26 12:14