小程序学习笔记之image

154 阅读3分钟

长期以来浑浑噩噩摸鱼冲浪不亦乐乎,几近躺平。近日来更是频繁上网,鱼摸无可摸深感无聊。想到同学朋友经常敦促:已近中年,需有一技傍身,不可荒废等云。遂翻开尘封已久的课程,乃知时光荏苒一晃两年过去,当时思前想后下定决心买下的课程依然是完璧之身,痛定思痛闲着也是无聊,学吧!

作为前端,我们知道向页面引入图片是需要用到标签<img>而向小程序引入图片需要用到组件<image>,image的知识点如下:

1、常用属性

1. src | string

src是引入的图片资源路径,可以是相对路径也可以是绝对路径。支持 JPG、PNG、SVG、WEBP、GIF 等格式。

<image src="/images/avatar/1.jpg" class=""></image>

2. mode | string

mode是图片裁剪、缩放的模式。

合法值说明
scaleToFill (默认值)缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
aspectFit缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来
aspectFill模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
widthFix缩放模式,宽度不变,高度自动变化,保持原图宽高比不变
heightFix缩放模式,高度不变,宽度自动变化,保持原图宽高比不变
top bottom center left right/ top left/top right/bottom left/bottom right裁剪模式,不缩放图片,只显示图片的对应方位区域

未标题-1.png

3. lazy-load | boolean

默认值false,图片懒加载,在即将进入一定范围(上下三屏)时才开始加载。

<img src="" lazy-load>

4. show-menu-by-longpress | boolean

长按图片显示发送给朋友、收藏、保存图片、搜一搜、打开名片/前往群聊/打开小程序(若图片中包含对应二维码或小程序码)的菜单。

<img src="" show-menu-by-longpress>

5. bindload | eventhandle

图片加载成功时触发。

<img src="" binderror="setSuccImg">
setSuccImg(e) {
}

6. binderror | eventhandle

图片加载失败时触发。

<img src="" binderror="setFailImg">
setFailImg(e) {
}

2、小知识点

介绍这个知识点之前,我们先看下图:

image.png

从上图可以看出image引入的图片没有铺满整屏反而有些被压缩,因为image 在微信小程序中默认宽度为 300px,高度为240px。当src的值为空时,image仍会占据240px的高度。

image组件默认宽度320px、高度240px。
image组件中二维码/小程序码图片不支持长按识别。仅在wx.previewImage中支持长按识别。
image组件进行缩放时,计算出来的宽高可能带有小数,在不同webview内核下渲染可能会被抹去小数部分。

3、和cover-image的差异

<image>有一个相似的组件<cover-image>,它俩都是在小程序中引入图片的组件,当我们需要在页面插入图片时就需要用到二者之一,用法如下:

<cover-image src="/images/avatar/1.jpg" class=""></cover-image>
<image src="/images/avatar/1.jpg" class=""></image>

同样都是向页面插入图片,那么它们的区别是什么呢?请看下图:

image.png

通过图片我们可以很直观地发现,<cover-image>引入的图片充满了整个屏幕,而<image>并没有(<image>组件默认宽度320px、高度240px)。 还有一个区别,二者在模拟器中通常是看不出的,但是在真机中就会出问题。<cover-image>引入的图片始终悬浮在可视图层的顶层,设置无效。而<image>可以通过设置z-index的值设置显示层级。

以上通过微信官方文档|小程序平台归纳整理。

路漫漫其修远兮,吾将上下而求索~