阅读(2519) (8)

百度智能小程序 图片

2020-08-11 17:39:55 更新

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

阻止长按图片时弹起默认菜单(即将该属性设置为 image-menu-prevent="true"image-menu-prevent),只在初始化时有效,不能动态变更;若不想阻止弹起默认菜单,则不需要设置此属性。注:长按菜单后的操作暂不支持 svg 格式。

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