image 图片
简介
图片。支持 JPG、PNG、SVG、WEBP、GIF 等格式
属性说明
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|---|
src | String | 是 | 图片资源地址,懒加载开启后为占位图的地址 | ||
data-src | String | 否 | 懒加载开启后真实的图片资源地址,未开启懒加载不用传址 | ||
mode | String | scaleToFill | 否 | 图片裁剪、缩放的模式 | |
lazyLoad | Boolean | false | 否 | 是否开启图片懒加载 | > 0.1.0 |
binderror | EventHandle | 否 | 当错误发生时,发布到 AppService 的事件名 | ||
bindload | EventHandle | 否 | 当图片载入完毕时,发布到 AppService 的事件名 |
mode 有效值
有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式。
模式 | 值 | 说明 | 最低版本 |
---|---|---|---|
缩放 | scaleToFill | 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 | |
缩放 | aspectFit | 保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来 | |
缩放 | aspectFill | 保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取 | |
缩放 | heightFix | 高度不变,宽度自动变化,保持原图宽高比不变 | |
缩放 | widthFix | 宽度不变,高度自动变化,保持原图宽高比不变 | |
裁剪 | top | 不缩放图片,只显示图片的顶部区域 | |
裁剪 | bottom | 不缩放图片,只显示图片的底部区域 | |
裁剪 | center | 不缩放图片,只显示图片的中间区域 | |
裁剪 | left | 不缩放图片,只显示图片的左边区域 | |
裁剪 | right | 不缩放图片,只显示图片的右边区域 | |
裁剪 | top left | 不缩放图片,只显示图片的左上区域 | |
裁剪 | top right | 不缩放图片,只显示图片的右上区域 | |
裁剪 | bottom left | 不缩放图片,只显示图片的左下区域 | |
裁剪 | bottom right | 不缩放图片,只显示图片的右下区域 |
示例
代码示例 1:自定义缩放模式
<view class="wrap">
<view class="card-area" s-for="item in scaleArray">
<image
:class="['image-area', item.hasBackgroud == 1 ? 'backGround': '']"
:data-name="item.mode"
:mode="item.mode"
:src="src"
:key="item.mode"
bind:tap="onTap"
bind:binderror="imageError"
bind:bindload="imageLoad"
/>
<view class="bottom-description">{{ item.text }}</view>
</view>
</view>
Page({
data: {
scaleArray: [
{
mode: "scaleToFill",
text: "scaleToFill:不保持纵横比缩放图片,使图片完全适应",
},
{
mode: "aspectFit",
text: "aspectFit:保持纵横比缩放图片,使图片的长边能完全显示出来",
hasBackgroud: 1,
},
{
mode: "aspectFill",
text: "aspectFill:保持纵横比缩放图片,只保证图片的短边能完全显示出来",
},
{
mode: "widthFix",
text: "widthFix:宽度不变,高度自动变化,保持原图宽高比不变",
},
{
mode: "heightFix",
text: "heightFix:高度不变,宽度自动变化,保持原图宽高比不变",
},
],
src: "https://b.bdstatic.com/miniapp/images/demo-dog.png",
},
imageError(e) {
console.log("image 发生 error 事件,携带值为", e.detail.errMsg);
},
onTap(e) {
console.log("image 发生 tap 事件", e);
},
imageLoad(e) {
console.log("image 加载成功", e.type);
},
});
代码示例 2:不缩放图片,自定义裁切模式
<view class="wrap">
<view class="card-area" s-for="item in cutArray">
<image
class="image-area"
:data-name="item.mode"
:lazy-load="true"
:image-menu-prevent="true"
:mode="item.mode"
:src="src"
:key="item.mode"
bind:tap="onTap"
bind:binderror="imageError"
bind:bindload="imageLoad"
/>
<view class="bottom-description">{{item.text}}</view>
</view>
</view>
Page({
data: {
cutArray: [
{
mode: "top",
text: "top:不缩放图片,只显示图片的顶部区域",
},
{
mode: "bottom",
text: "bottom:不缩放图片,只显示图片的底部区域",
},
{
mode: "center",
text: "center:不缩放图片,只显示图片的中间区域",
},
{
mode: "left",
text: "left:不缩放图片,只显示图片的左边区域",
},
{
mode: "right",
text: "right:不缩放图片,只显示图片的右边边区域",
},
{
mode: "top left",
text: "top left:不缩放图片,只显示图片的左上边区域",
},
{
mode: "top right",
text: "top right:不缩放图片,只显示图片的右上边区域",
},
{
mode: "bottom left",
text: "bottom left:不缩放图片,只显示图片的左下边区域",
},
{
mode: "bottom right",
text: "bottom right:不缩放图片,只显示图片的右下边区域",
},
],
src: "https://b.bdstatic.com/miniapp/images/demo-dog.png",
},
imageError(e) {
console.log("image 发生 error 事件,携带值为", e.detail.errMsg);
},
onTap(e) {
console.log("image 发生 tap 事件", e);
},
imageLoad(e) {
console.log("image 加载成功", e.type);
},
});
代码示例 3:图片懒加载
<view class="img-wrap">
<!-- 开启懒加载后,需要 dataSrc 存放实际需要显示的图片, src 存放默认图片 -->
<image
class="demo-img"
src="/images/img_5222.png"
data-src="/images/img_5223.png"
:lazy-load="true"
/>
</view>