uniapp h5 图片懒加载

 参考博文

https://www.cnblogs.com/websmile/p/11662933.html?ivk_sa=1024320u

生命周期函数 onPageScroll 无效 多次尝试后仍无法监听生效

替代方法 - 使用scroll-view的onScroll

 onScroll

onScroll(e) {
	console.log('onScroll', e)
	this.load()
},

data 

show: false,
windowHeight:0

template

<scroll-view scroll-y="true" @scroll="onScroll">
 
    <view style="height: 100vh;background-color: aliceblue;">
 
        <view style="display: flex;flex-wrap: wrap;padding-bottom: 100px;">
            <view v-for="(item,index) in list" :key="item.id" class="vote_box"
                :id="'the-'+item.id">
                <view @click="toDetail(item)">
                    <image class="vote-img" :class="{lazy:!item.show}" :data-index="index"
                        :src="item.show&&item.headUrl?imgBaseUrl + item.headUrl:'/static/easy-loadimage/loading.gif'" />
                    <view class=" vote_sort">{{item.code}}</view>
                    <view class="vd_name">{{item.name}}</view>
                </view>
                <view class="vd_flex">
                    <view>{{item.voteCount}}票</view>
                    <view class="vote_btn" @click="toVote(item)">投票</view>
                </view>
            </view>
        </view>
 
    </view>
 
</scroll-view>

methods

数据请求成功后

// 赋值
this.list = res.data.itemList.map(item => {
	item.show = false
	return item
});
// 调用load方法
if (!this.show) {
	this.show = true
	setTimeout(() => {
	  this.load()
	}, 100)
 }

windowHeight

onLoad(option) {
	console.log("onLoad: ", );
	this.windowHeight = uni.getSystemInfoSync().windowHeight

},

动态加载

load() {
	uni.createSelectorQuery().selectAll('.lazy').boundingClientRect((images) => {
		images.forEach((image, index) => {
			if (image.top - 325 <= this.windowHeight) {
				this.list[image.dataset.index].show = true;
			}
		})
	}).exec()

},

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值