一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統 注冊

微信小程序圖片懶加載的實現方案

2020-09-27|HiShop
導讀:懶加載,前端人都知道的一種性能優化方式,簡單的來說,只有當圖片出現在瀏覽器的可視區域內時,才設置圖片正真的路徑,讓圖片顯示出來。這就是圖片懶加載。...

定義

懶加載,前端人都知道的一種性能優化方式,簡單的來說,只有當圖片出現在瀏覽器的可視區域內時,才設置圖片正真的路徑,讓圖片顯示出來。這就是圖片懶加載。

實現原理

監聽頁面的scroll事件,判讀元素距離頁面的top值是否是小于等于頁面的可視高度

判斷邏輯代碼如下

element.getBoundingClientRect().top <= document.documentElement.clientHeight ? 顯示 : 默認

我們知道小程序頁面的腳本邏輯是在JsCore中運行,JsCore是一個沒有窗口對象的環境,所以不能在腳本中使用window,也無法在腳本中操作組件。

微信小程序圖片懶加載的實現方案

所以關于圖片懶加載就需要在數據上面做文章了。

微信小程序圖片懶加載的實現方案

我們使用兩種方式來實現懶加載,準備好沒有,一起來快樂的擼碼吧。

WXML節點信息

小程序支持調用createSelectQuery創建一個SelectorQuery實例,并使用select方法來選擇節點,并通過boundingClientRect來獲取節點信息。

wx.createSelectorQuery().select('.item').boundingClientRect((ret)=>{
    console.log(ret)
}).exec()
 

微信小程序圖片懶加載的實現方案
悄悄告訴你,小程序里面有個onPageScroll函數,是用來監聽頁面的滾動的。
還有個getSystemInfo函數,可以獲取獲取系統信息,里面包含屏幕的高度。

接下來,思路就透徹了吧。還是上面的邏輯, 扒拉扒拉直接寫代碼就行了,這里只寫下主要的邏輯,完整代碼請戳文末github

showImg(){
    let group = this.data.group
    let height = this.data.height  // 頁面的可視高度
    
    wx.createSelectorQuery().selectAll('.item').boundingClientRect((ret) => {
     ret.forEach((item, index) => {
       if (item.top <= height) { 判斷是否在顯示范圍內
         group[index].show = true // 根據下標改變狀態
       }
     })
     this.setData({
       group
     })
    }).exec()

}
onPageScroll(){ // 滾動事件
    this.showImg()
}

至此,我們完成了一個小程序版的圖片懶加載,只是思維轉變了下,其實并沒有改變實現方式。我們來學些新的東西吧。

節點布局相交狀態

節點相交狀態是啥?它是一個新的API,叫做IntersectionObserver, 本文只講解簡單的使用

小程序里面給它的定義是節點布局交叉狀態API可用于監聽兩個或多個組件節點在布局位置上的相交狀態。這一組API常常可以用于推斷某些節點是否可以被用戶看見、有多大比例可以被用戶看見。

里面設計的概念主要有五個,分別為

  • 參照節點:以某參照節點的布局區域作為參照區域,參照節點可以有多個,多個話參照區域取它們的布局區域的交集
  • 目標節點:監聽的目標,只能是一個節點
  • 相交區域:目標節點與參照節點的相交區域
  • 相交比例:目標節點與參照節點的相交比例
  • 閾值:可以有多個,默認為[0], 可以理解為交叉比例,例如[0.2, 0.5]

關于它的API有五個,依次如下

1、createIntersectionObserver([this], [options]),見名知意,創建一個IntersectionObserver實例

2、intersectionObserver.relativeTo(selector, [margins]), 指定節點作為參照區域,margins參數可以放大縮小參照區域,可以包含top、left、bottom、right四項

3、intersectionObserver.relativeToViewport([margin]),指定頁面顯示區域為參照區域

4、intersectionObserver.observer(targetSelector, callback),參數為指定監聽的節點和一個回調函數,目標元素的相交狀態發生變化時就會觸發此函數,callback函數包含一個result,下面再講

5、intersectionObserver.disconnect() 停止監聽,回調函數不會再觸發

 

我們主要使用intersectionRatio進行判斷,當它大于0時說明是相交的也就是可見的。

先來波測試題,請說出下面的函數做了什么,并且log函數會執行幾次

1、
wx.createIntersectionObserver().relativeToViewport().observer('.box', (result) => {
     console.log('監聽box組件觸發的函數')   
 })
 
2、
wx.createIntersectionObserver().relativeTo('.box').observer('.item', (result) => {
     console.log('監聽item組件觸發的函數') 
})

3、
wx.createIntersectionObserver().relativeToViewport().observer('.box', (result) => {
    if(result.intersectionRatio > 0){
        console.log('.box組件是可見的') 
    }
})

duang,揭曉答案。

第一個以當前頁面的視窗監聽了.box組件,log會觸發兩次,一次是進入頁面一次是離開頁面

第二個以.box節點的布局區域監聽了.item組件,log會觸發兩次,一次是進入頁面一次是離開頁面

第三個以當前頁面的視窗監聽了.box組件,log只會在節點可見的時候觸發

好了,題也做了,API你也掌握了,相信你已經可以使用IntersectionObserver來實現圖片懶加載了吧,主要邏輯如下

let group = this.data.group // 獲取圖片數組數據
for (let i in this.data.group){   wx.createIntersectionObserver().relativeToViewport().observe('.item-'+ i, (ret) => {
       if (ret.intersectionRatio > 0){
         group[i].show = true 
       }
       this.setData({
         group
       })
     })
}

至此,我們使用兩種方式實現了小程序版本的圖片懶加載,可以發現,使用IntersectionObserver來實現不要太酸爽。

 

電話咨詢 預約演示 0元開店
主站蜘蛛池模板: 日本黄色一区|人成免费网站|中文字幕第八页|亚洲欧美变态另类综合|日日草天天干|亚洲福利中文字幕在线网址 | 无码免费婬=aV片在线观看|免费黄色小视频在线观看|eeuss鲁丝片=aV无码|国产精品videossexohd|亚洲欧美成人一区二区在线|久久www免费人成网站 | 亚洲欧美又粗又长久久久|精品一区二区久久久|亚州精品在线视频|日韩国产成人精品|91=av导航|国产亚州精品视频 | 久久精品国产清高在天天线|天堂在线观看www|毛片=av在线免费观看|精品国产欧美一区二区五十路|老熟女草BX×|人妻慢慢放弃抵抗开始迎合 | 日韩一级片网站|#NAME?|国产在线可以看麻豆|亚洲高清免费视频|中文字幕内射无码制服剧情|伊人色综合九久久天天蜜桃 | 欧美=a黄|黄色一级片毛片|无码国产乱人伦偷精品视频|黄网免费视频|国产精品乱码久久久久久|性少妇tubevⅰdeos高清 | 免费色综合|极品的亚洲|C=aOPROM国产在线视频|色伊人网站|国产精品=a一|97午夜影院 | 久久综合婷婷|中文日产幕无线码一二|77777五月色婷婷丁香视频在线|粉嫩=av久久一区二区三区小说|亚洲成人网络|亚洲色欲色欲77777小说 | 国产清纯女高中生被c|精品久久久久中文字国产|国产一级内谢|91精品综合|制服丝袜长腿无码专区第一页|亚洲欧洲一区二区 | 丰满人妻熟妇乱又伦精品|黑白配高清国语免费观看|#NAME?|亚洲视频高清不卡在线观看|99ri=av国产在线观看|丝袜美腿视频一区二区三区 | 综合亚洲网|亚洲综合成人亚洲|日本精品一区二区三区在线观看|粗大猛烈进出呻吟声的视频|绝世武魂短剧免费观看|黄色一级免费大片 | 啄木乌欧美一区二区三区高压监狱|久久综合狠狠|日本亚欧乱色视频在线观看|亚洲=av毛片久久久久|国产亚洲精品二区|波多野结衣免费观看视频 | 在线=a亚洲视频播放在线观看|男女吃奶做爰猛烈紧视频|一级精品毛片|欧美一级片免费看|蜜臀久久=av|美国成人在线 | 久久久久久久久淑女=av国产精品|一区二区视频在线播放|亚洲第一综合网站|操操网=av|久久久久久久九九九九|#NAME? | 成人国产精品免费视频|免费视频97|成年人深夜福利|国产精品亚洲一区二区三区在线观看|亚洲性久久9久久爽|超碰超碰97 | 喷出高潮国语对白|久久精品视频一区二区|国产高清吃奶成免费视频网站|亚洲视频三级|免费一级黄色|久久综合给合久久狠狠狠97色69 家庭午夜影院|chinese老熟妇老女人hd|欧美成性色|中文字幕无码=a级毛片观看|日本在线观看中文字幕|久久国产精品偷导航 | 精品久久久蜜桃|天堂亚洲|久久精品女|蜜臀久久精品久久久更新时间|日韩精品一区二区在线播放|九九视频免费在线观看 | 精品国产一区二区三区久久久蜜臀|亚洲中文字幕无码一区在线|女同福利|国产一级视频在线观看|久久人妻公开中文字幕|#NAME? 午夜特片|中文久久久久|亚洲精品美女色诱在线播放|大地资源在线观看视频在线|99久久婷婷国产综合精品免费|豪放女大兵免费观看bd | 国产波霸爆乳一区二区|尤物在线网址|黑人干白妞|精品一卡2卡三卡4卡免费视频|亚洲欧美VR色区|国产性=av | 久久久久动漫|亚洲影视资源网|久操福利在线|娇小小小泬ⅩXXX深喉|中文字幕乱码中文乱码777|超碰在线个人 | 韩国久久=av|V一区无码内射国产|超级碰碰色偷偷免费视频|国产成人自拍网站|日韩1区2区3区|欧美亚洲日本精品 | 日韩精品三区|国产成人精品=a视频免费福利|色中色综合|国产成人精品一区二区三区四区|国产一级毛片精品完整视频版|国产字幕在线看 | 国产=a三级三级三级看三级|不卡中文|国产免费午夜福利757|h在线视频|熟女人妻=aV完整一区二区三区|J=aP=aN白嫩丰满人妻VIDEOS | 丁香五月好婷婷深深爱|欧美、另类亚洲日本一区二区|www.com国产|免费观看又色又爽又湿的视频软件|国产一级生活片|一级黄色故事片 | 啊灬啊灬啊灬快高潮视频|国语自产少妇精品视频蜜桃|欧美专区一区|人人草人人爱|一级毛片在线观|欧美国产日韩另类视频区 | 久久久久久久久久久久=av|少妇又白又嫩又色又粗|欧美日韩精品免费观看视一区二区|国产手机精品一区二区|伊人=av网|久久大香萑太香蕉=aV黄软件 | 亚洲性久久|欧美三级图片|日韩美一区二区|13小箩利洗澡无码视频网站免费|114一级片|91免费观看国产 | 国产亚洲综合日韩一区|亚洲成人一区二区三区在线观看|亚洲精品日本久久一区二区三区|国产91=av视频在线观看|97色在线观看|精品国产香蕉伊思人在线 | 欧美色欧美亚洲日韩在线播放|99久久久久99国产免费=aV|午夜免费片|日韩一区二区三区久久|婷婷色色狠狠爱|69=av在线观看 | 欧美做爰爽爽爽爽爽爽|国内揄拍国内精品|天天澡天天摸天天添视频|84c=aocom最新网站|69堂在线观看|天天澡天天狠天天天做 | 中国黄色影院|99精品一区二区三区|久久成人久久|疯狂做受XXXX高潮吃奶|欧洲精品二区|激情超碰在线 | 欧美在线中文字幕|亚洲天堂成人|国产一区二区精品久久91|精品人妻无码一区二区三区GIF|久久亚洲精品情侣|国产成人在线影院 | 国产这里只有|斗罗之斗淫大陆h污文小舞白丝|真人做爰高潮全过程免费视看|久久丁香|777色情在线无码|91九色视频在线播放 | 国产波霸爆乳一区二区|尤物在线网址|黑人干白妞|精品一卡2卡三卡4卡免费视频|亚洲欧美VR色区|国产性=av | 国产精品久久久久久久小唯西川|日韩免费高清视频|亚洲另类自拍|黑森林精品=aV导航|日韩精品专区=av无码|高清精品久久 | 亚洲线精品一区二区三区|亚洲综合中文|特级一级片|在线观看国产视频一区|国产乱码卡1卡二卡3卡四卡|国产v亚洲v天堂无码网站 | 久久白虎|18禁成人网站免费观看|国产www视频在线观看|欧美黄色=a级大片|国产精品久久久久久久人人看|日韩精品毛片 | 成午夜精品一区二区三区软件|精品亚洲第一|大地资源二在线视频观看|国产美女视频黄=a视频免费|亚洲国产成人=aV片在线播放|日本乱偷人妻中文字幕在线 | 欧洲亚洲综合一区二区三区|99国产精品久久|免费v=a国产高清大片在线|国产成人精品一区二三区在线观看|91麻豆精品国产91|欧美日韩福利视频 | 夜夜躁狠狠躁夜躁2021|欧洲成人在线观看|中国少妇饥渴XXXXX|人妻巨大乳挤奶水HD免费看|视频二区在线播放|九九热精品在线视频 | 亚洲人成网站在e线播放|亚洲=aV一二三又爽又色又色|久久三级无码网站|国产黄色91|日本猛少妇|91视频在 |