官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/component/image.html
image 组件
图片组件。支持 JPG、PNG、SVG、WEBP、GIF 等格式,2.3.0 起支持云文件ID。
废话不多说直接上代码。
属性
我们先单独的使用下组件让我们的图片显示在页面当中先:
index.wxml:
<image src="../../assets/images/01.png"/>
可以看到图片显示了,但是呢,比例不对劲。这里就要介绍到 image 组件的注意点了。
!> 注意点:在微信小程序当中 image 组件是有默认宽高的 320 * 240
mode
在 image 中比较常用
的模式有两个:
- widthFix:让图片的宽度和image的宽度一样,高度等比拉伸自适应。
- heightFix:让图片的高度和image的高度一样,宽度等比拉伸自适应
?> mode=“widthFix”
<image mode="widthFix" src="../../assets/images/01.png" />
?> mode=“heightFix”
<image mode="heightFix" src="../../assets/images/01.png" />
假如我们这个时候需要开发一个banner的效果,我们就可以利用mode="widthFix"来进行实现,我这里简单的来进行写一个示例供参考:
index.wxml:
<image mode="widthFix" src="../../assets/images/01.png" class="banner" />
index.wxss:
.banner{ width: 100%; }
最终效果:
bindload
当图片载入完毕时触发,event.detail = {height, width}
首先我们将如下的 WXML 代码在文件当中复制 10 个:
index.wxml:
<image mode="widthFix" src="../../assets/images/01.png" class="banner" bindload="onImageLoad" />
然后编写 JS 业务逻辑代码:
index.js:
Page({ onImageLoad(){ console.log("图片加载完毕"); } })
运行这个程序,看控制台的打印:
⑨图片加载完毕
如上的示例证明了一点,就是说我们有多少张图片,它就会加载多少次,这样就会存在一些问题,也就是我所要介绍的注意点。
!> 注意点:默认情况下只要界面被显示,那么界面上所有的图片都会被加载,无论这张图片是否在可视范围内,这样就会导致性能问题,如果界面上的图片比较多的话,我们可以使用lazy-load来优化性能。
lazy-load
官方解释:图片懒加载,在即将进入一定范围(上下三屏)时才开始加载
本文解释:即将显示图片的时候才会去加载图片,而不是一上来就进行加载导致性能问题
使用下 lazy-laod:
改造下之前的案例将如下的代码在 index.wxml 拷贝 20 份:
<image mode="widthFix" src="../../assets/images/01.png" class="banner" />
然后,在第 20 个 image 组件当中绑定 lazy-load:
<image mode="widthFix" src="../../assets/images/01.png" class="banner" bindload="onImageLoad" lazy-load />