百度智能小程序 图片
image 图片
解释:图片,支持 JPG、PNG、GIF、BMP、WEBP 等格式。image 组件默认宽度 300px、高度 225px。
属性说明
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低版本 | ||
---|---|---|---|---|---|---|---|
src |
String |
否 |
图片资源地址 |
||||
mode |
String |
scaleToFill |
否 |
图片裁剪、缩放的模式 |
|||
webp |
Boolean |
false |
否 |
iOS 系统默认不解析 WEBP 格式,只支持网络资源 |
3.180.1 |
||
lazy-load |
Boolean |
false |
否 |
图片懒加载,在图片即将进入一定范围(距离当前屏 50px)时才开始进行加载。 |
|||
image-menu-prevent |
Boolean |
false |
否 |
阻止长按图片时弹起默认菜单(即将该属性设置为 |
3.170.1 |
||
preview |
Boolean |
否 |
点击后是否预览图片。在不设置的情况下,若 image 未监听点击事件且宽度大于 1/4 屏宽,则默认开启。 |
3.170.9 |
|||
original-src |
string |
否 |
预览时显示的图片地址 |
3.170.9 |
|||
binderror |
HandleEvent |
否 |
当错误发生时,发布到 AppService 的事件名,事件对象 event.detail = {errMsg: ‘something wrong’} |
||||
bindload |
HandleEvent |
否 |
当图片载入完毕时,发布到 AppService 的事件名,事件对象 event.detail = {height:‘图片高度 px’, width:‘图片宽度 px’} |
mode 有效值
有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式。
模式 | 值 | 说明 |
---|---|---|
缩放 |
scaleToFill |
不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 |
缩放 |
aspectFit |
保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。 |
缩放 |
aspectFill |
保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。 |
缩放 |
widthFix |
宽度不变,高度自动变化,保持原图宽高比不变 |
裁剪 |
top |
不缩放图片,只显示图片的顶部区域 |
裁剪 |
bottom |
不缩放图片,只显示图片的底部区域 |
裁剪 |
center |
不缩放图片,只显示图片的中间区域 |
裁剪 |
left |
不缩放图片,只显示图片的左边区域 |
裁剪 |
right |
不缩放图片,只显示图片的右边区域 |
裁剪 |
top left |
不缩放图片,只显示图片的左上区域 |
裁剪 |
top right |
不缩放图片,只显示图片的右上区域 |
裁剪 |
bottom left |
不缩放图片,只显示图片的左下区域 |
裁剪 |
bottom right |
不缩放图片,只显示图片的右下区域 |
示例
代码示例 1: 自定义缩放模式
<view class="wrap">
<view class="card-area" s-for="{{scaleArray}}">
<image
class="image-area {{item.hasBackgroud == 1 ? 'backGround': ''}}"
data-name="{{item.mode}}"
bindtap="onTap"
mode="{{item.mode}}"
src="{{src}}"
binderror="imageError"
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:宽度不变,高度自动变化,保持原图宽高比不变'
}],
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="{{cutArray}}">
<image
class="image-area"
data-name="{{item.mode}}"
bindtap="onTap"
lazy-load="true"
image-menu-prevent="true"
mode="{{item.mode}}"
src="{{src}}"
binderror="imageError"
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 - iOS 可支持 webp
<image src='https://b.bdstatic.com/searchbox/icms/searchbox/images/demo.webp' webp/>
Bug & Tip
- Tip:支持设置 CSS background-position 属性,但是不推荐使用,会影响对应 mode 类型的展示。
- Tip:image 组件默认宽度 300px、高度 225px。
- Tip:未显示设置 preview 的图片会进行点击默认预览判断,建议显示设置 preview。
- Tip:点击预览功能 IOS 端目前不支持本地图片预览,可以设置 original-src 为远程图片地
- Tip:webp 属性只针对 iOS 端,支持网络资源的 WEBP 格式的图片。
参考示例
参考示例 1: 可放动图
<image src="https://b.bdstatic.com/miniapp/images/radio.gif" rel="external nofollow" />
错误码
代码示例 3 - iOS 可支持 webp
更多建议: