专栏名称: 小心夹手
前端
目录
相关文章推荐
51好读  ›  专栏  ›  小心夹手

小程序之图片懒加载[完美方案,你不来看看?]

小心夹手  · 掘金  · 前端  · 2018-04-28 02:23

正文

小程序之图片懒加载[完美方案,你不来看看?]

效果图

既然来了,把妹子都给你。

定义

懒加载,前端人都知道的一种性能优化方式,简单的来说,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。

实现原理

监听页面的 scroll 事件,判读元素距离页面的 top 值是否是小于等于页面的可视高度

判断逻辑代码如下

element.getBoundingClientRect().top <= document.documentElement.clientHeight ? 显示 : 默认

我们知道小程序页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件。

所以关于图片懒加载就需要在数据上面做文章了。

页面

页面上面只需要根据数据的某一个字段来判断是否显示图片就可以了,字段为Boolean类型,当为false的时候显示默认图片就行了。

代码大概长成这样

<view wx:for="{{list}}" class='item item-{{index}}'
 wx:key="{{index}}">
	<image class="{{item.show ? 'active': ''}}" src="{{item.show ? item.src : item.def}}"></image>
</view>

布局跟简单, view 组件里面有个图片,并循环 list ,有多少就展示多少

image 组件的 src 字段通过每一项的 show 来进行绑定, active 是加了个透明的过渡

样式

image{
	transition: all .3s ease;
	opacity: 0;
}
.active{
	opacity: 1;
}

逻辑

本位主要讲解懒加载,所以把数据写死在页面上了

数据结构如下:

我们使用两种方式来实现懒加载,准备好没有,一起来快乐的撸码吧。

WXML节点信息

小程序支持调用 createSelectQuery 创建一个 SelectorQuery 实例,并使用 select 方法来选择节点,并通过 boundingClientRect 来获取节点信息。







请到「今天看啥」查看全文