微信小程序官方组件展示之媒体组件image源码

2022-10-10 13:40:39 浏览数 (2)

以下将展示微信小程序之媒体组件image源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。

功能描述:

图片。支持 JPG、PNG、SVG、WEBP、GIF 等格式,2.3.0 起支持云文件ID。

属性说明:

Skyline 仅列出与 WebView 属性的差异,未列出的属性与 WebView 一致。

属性

类型

默认值

必填

说明

最低版本

src

string

图片资源地址

1.0.0

mode

string

scaleToFill

图片裁剪、缩放的模式

1.0.0

合法值

说明

最低版本

scaleToFill

缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素

aspectFit

缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。

aspectFill

缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。

widthFix

缩放模式,宽度不变,高度自动变化,保持原图宽高比不变

heightFix

缩放模式,高度不变,宽度自动变化,保持原图宽高比不变

2.10.3

top

裁剪模式,不缩放图片,只显示图片的顶部区域

bottom

裁剪模式,不缩放图片,只显示图片的底部区域

center

裁剪模式,不缩放图片,只显示图片的中间区域

left

裁剪模式,不缩放图片,只显示图片的左边区域

right

裁剪模式,不缩放图片,只显示图片的右边区域

top left

裁剪模式,不缩放图片,只显示图片的左上边区域

top right

裁剪模式,不缩放图片,只显示图片的右上边区域

bottom left

裁剪模式,不缩放图片,只显示图片的左下边区域

bottom right

裁剪模式,不缩放图片,只显示图片的右下边区域

webp

boolean

FALSE

默认不解析 webP 格式,只支持网络资源

2.9.0

lazy-load

boolean

FALSE

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

1.5.0

show-menu-by-longpress

boolean

FALSE

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

2.7.0

binderror

eventhandle

当错误发生时触发,event.detail = {errMsg}

1.0.0

bindload

eventhandle

当图片载入完毕时触发,event.detail = {height, width}

1.0.0

Skyline

组件差异

1. 使用 svg 格式且 mode=scaleToFill 时,WebView 会居中(除非 svg 里加上 preserveAspectRatio="none"),Skyline 则会撑满

2. svg 格式不支持百分比单位

3. svg 格式不支持 <style> element

属性

说明

mode

只支持 scaleToFill/aspectFit/aspectFill/widthFix/heightFix,其余暂未支持,表现为居中

webp

无需指定,默认支持

lazy-load

受 scroll-view 按需渲染影响,默认生效

支持长按识别的码

类型

说明

最低版本

小程序码

微信个人码

2.18.0

企业微信个人码

2.18.0

普通群码

指仅包含微信用户的群

2.18.0

互通群码

指既有微信用户也有企业微信用户的群

2.18.0

公众号二维码

2.18.0

Bug & Tip

1.tip:image组件默认宽度320px、高度240px

2.tip:image组件中二维码/小程序码图片不支持长按识别。仅在 wx.previewImage 中支持长按识别

3.tip:image组件进行缩放时,计算出来的宽高可能带有小数,在不同 webview 内核下渲染可能会被抹去小数部分

示例代码

JAVASCRIPT

代码语言:javascript复制
Page({
 data: {
 array: [{
 mode: 'scaleToFill',
 text: 'scaleToFill:不保持纵横比缩放图片,使图片完全适应'
 }, {
 mode: 'aspectFit',
 text: 'aspectFit:保持纵横比缩放图片,使图片的长边能完全显示出来'
 }, {
 mode: 'aspectFill',
 text: 'aspectFill:保持纵横比缩放图片,只保证图片的短边能完全显示出来'
 }, {
 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://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg'
 },
 imageError: function(e) {
 console.log('image3发生error事件,携带值为', e.detail.errMsg)
 }
})

WXML

代码语言:javascript复制
<view class="page">
 <view class="page__hd">
 <text class="page__title">image</text>
 <text class="page__desc">图片</text>
 </view>
 <view class="page__bd">
 <view class="section section_gap" wx:for="{{array}}" wx:for-item="item">
 <view class="section__title">{{item.text}}</view>
 <view class="section__ctn">
 <image style="width: 200px; height: 200px; background-color: #eeeeee;" mode="{{item.mode}}" src="{{src}}"></image>
 </view>
 </view>
 </view>
</view>

原图

版权声明: 本站所有内容均由互联网收集整理、上传,如涉及版权问题,请联系我们第一时间处理。

原文链接地址:https://developers.weixin.qq.com/miniprogram/dev/component/image.html

0 人点赞