HomeDocs
跳到主要内容

image 图片

简介

图片。支持 JPG、PNG、SVG、WEBP、GIF 等格式

属性说明

属性名类型默认值必填说明最低版本
srcString图片资源地址,懒加载开启后为占位图的地址
data-srcString懒加载开启后真实的图片资源地址,未开启懒加载不用传址
modeStringscaleToFill图片裁剪、缩放的模式
lazyLoadBooleanfalse是否开启图片懒加载> 0.1.0
binderrorEventHandle当错误发生时,发布到 AppService 的事件名
bindloadEventHandle当图片载入完毕时,发布到 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>
Privacy agreementDeveloper agreementcontact us: developer_service.mi@transsion.com © 2024 MiniApp. All Rights Reserved.