小程序 圖片懶加載

直接上代碼:
參考:http://www.cnblogs.com/zishang91/p/8507485.html

小程序靜態(tài)頁面代碼

<scroll-view class="container" scroll-y style="padding-top:0">  
  <view wx:for="{{img}}" class="list-item" wx:key="index"> 
    <image class="list-img" lazy-load src="{{lazyloadArr[index] ? item : '/images/default.png'}}"></image>
    <view>圖片{{index}}</view>
  </view>
</scroll-view> 

App.js

//app.js
App({
  onLaunch: function () {
    var _this = this;
    wx.getSystemInfo({
      success: function(res) {
        _this.globalData.windowWidth = res.windowWidth;
        _this.globalData.windowHeight = res.windowHeight;

      },
    })
  },
  globalData: {
    userInfo: null,
    windowWidth: 0,
    windowHeight: 0,
  }
})

JS代碼

//index.js
//獲取應(yīng)用實(shí)例
const app = getApp()

Page({
  data: {
    img: [
      "https://picsum.photos/500/300?image=100",
      "https://picsum.photos/500/300?image=101",
      "https://picsum.photos/500/300?image=102",
      "https://picsum.photos/500/300?image=103",
      "https://picsum.photos/500/300?image=104",
      "https://picsum.photos/500/300?image=106",
      "https://picsum.photos/500/300?image=107",
      "https://picsum.photos/500/300?image=108",
      "https://picsum.photos/500/300?image=109",
      "https://picsum.photos/500/300?image=110",
      "https://picsum.photos/500/300?image=111",
      "https://picsum.photos/500/300?image=112",
      "https://picsum.photos/500/300?image=113",
      "https://picsum.photos/500/300?image=114",
      "https://picsum.photos/500/300?image=115",
      "https://picsum.photos/500/300?image=116",
      "https://picsum.photos/500/300?image=117",
      "https://picsum.photos/500/300?image=118",
      "https://picsum.photos/500/300?image=119",
      "https://picsum.photos/500/300?image=120",
      "https://picsum.photos/500/300?image=121",
      "https://picsum.photos/500/300?image=122",
      "https://picsum.photos/500/300?image=123",
      "https://picsum.photos/500/300?image=124",
      "https://picsum.photos/500/300?image=126",
      "https://picsum.photos/500/300?image=127",
      "https://picsum.photos/500/300?image=128",
      "https://picsum.photos/500/300?image=129"
    ],
    lazyloadArr: [],
    lazyloadHeightArr: [],
  },
  onLoad: function() {
    let _this = this;
    let _arr = _this.data.lazyloadArr;
    let _imgArr = _this.data.img;
    _imgArr.forEach(function(item,index) {
      _arr.push(false);
    })
    _this.setData({
      lazyloadArr: _arr
    })
  },
  onReady: function () {
    let _this = this;
    setTimeout(function() {
      _this.getRect()
    }, 1000)
  },
  getRect: function() {
    var _this = this;
    wx.createSelectorQuery().select('.list-item').boundingClientRect(function(rect) {
      _this.setData({
        itemHeight: rect.height
      })
      _this.init(rect.height)
    }).exec();
  },
  init: function(itemHeight) {
    let _this = this;
    let _arr =  _this.data.lazyloadArr;
    let _arrHeight = _this.data.lazyloadHeightArr;
    let index = parseInt(app.globalData.windowHeight / itemHeight);
    // 獲取未滾動(dòng)時(shí)整屏顯示的行數(shù),每行有兩個(gè),故 *2 這屏的先加載
    for(let i = 0; i < index * 2; i++) {
      _arr[i] = true
    }

    // 遍歷每個(gè)圖片相對(duì)于頂部的高度
    for(let i = 0; i < _arr.length; i++) {
      _arrHeight[i] = Math.floor(i) * (itemHeight + 10)
    }

    _this.setData({
      lazyloadArr: _arr,
      lazyloadHeightArr: _arrHeight
    })
  },

  onPageScroll: function(e) {
    let _this = this;
    let _arrHeight = _this.data.lazyloadHeightArr;
    let _arr = _this.data.lazyloadArr;

    for(let i = 0; i < _arrHeight.length; i++) {
      if(_arrHeight[i] < e.scrollTop + app.globalData.windowHeight) {
        if(_arr[i] === false) {
          _arr[i] = true;
        }
      }
    }

    _this.setData({
      lazyloadArr: _arr
    })

  },
  
})

如果需要翻頁的話:
在調(diào)用接口返回成功中寫入如下代碼

let dataList= res.data.data.dataList;
// 懶加載
let _arr = _this.data.lazyloadArr;
let _arrHeight = _this.data.lazyloadHeightArr;

// 懶加載
dataList.forEach(function(item,index) {
  _arr.push(false);
})
let itemHeight = _this.data.itemHeight;
// 遍歷每個(gè)圖片相對(duì)于頂部的高度
for(let i = 0; i < _arr.length; i++) {
  _arrHeight[i] = Math.floor(i) * (itemHeight + dataList.length)
}

_this.setData({
  list: dataList,
  lazyloadArr: _arr, // 懶加載數(shù)組
  lazyloadHeightArr: _arrHeight, // 懶加載高度數(shù)組
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酿愧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子壳咕,更是在濱河造成了極大的恐慌衷蜓,老刑警劉巖蔼夜,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屡限,死亡現(xiàn)場離奇詭異品嚣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钧大,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門翰撑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人啊央,你說我怎么就攤上這事眶诈≌谴祝” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵逝撬,是天一觀的道長浴骂。 經(jīng)常有香客問我,道長宪潮,這世上最難降的妖魔是什么溯警? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮坎炼,結(jié)果婚禮上愧膀,老公的妹妹穿的比我還像新娘拦键。我一直安慰自己谣光,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布芬为。 她就那樣靜靜地躺著萄金,像睡著了一般。 火紅的嫁衣襯著肌膚如雪媚朦。 梳的紋絲不亂的頭發(fā)上氧敢,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音询张,去河邊找鬼孙乖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛份氧,可吹牛的內(nèi)容都是我干的唯袄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蜗帜,長吁一口氣:“原來是場噩夢啊……” “哼恋拷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厅缺,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蔬顾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后湘捎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诀豁,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年窥妇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舷胜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秩伞,死狀恐怖逞带,靈堂內(nèi)的尸體忽然破棺而出欺矫,到底是詐尸還是另有隱情,我是刑警寧澤展氓,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布穆趴,位于F島的核電站,受9級(jí)特大地震影響遇汞,放射性物質(zhì)發(fā)生泄漏未妹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一空入、第九天 我趴在偏房一處隱蔽的房頂上張望络它。 院中可真熱鬧,春花似錦歪赢、人聲如沸化戳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽点楼。三九已至,卻和暖如春白对,著一層夾襖步出監(jiān)牢的瞬間掠廓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工甩恼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蟀瞧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓条摸,卻偏偏與公主長得像悦污,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屈溉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355