Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

image

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

属性类型默认值必填说明最低版本
srcString否图片资源地址 
modeStringscaleToFill否图片裁剪、缩放的模式 
lazy-loadBooleanfalse否图片懒加载,在即将进入一定范围(上下三屏)时才开始加载 
show-menu-by-longpressBooleanfalse否开启长按图片显示保存图片菜单 
binderrorEventHandle否当错误发生时触发,event.detail = {errMsg} 
bindloadEventHandle否当图片载入完毕时触发,event.detail = {height, width} 

mode 的合法值

值说明最低版本
scaleToFill缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 
aspectFit缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。 
aspectFill缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。 
widthFix缩放模式,宽度不变,高度自动变化,保持原图宽高比不变 
heightFix缩放模式,高度不变,宽度自动变化,保持原图宽高比不变 
fix缩放模式,高度和宽度自动变化,自动撑开 image 元素 
top裁剪模式,不缩放图片,只显示图片的顶部区域 
bottom裁剪模式,不缩放图片,只显示图片的底部区域 
center裁剪模式,不缩放图片,只显示图片的中间区域 
left裁剪模式,不缩放图片,只显示图片的左边区域 
right裁剪模式,不缩放图片,只显示图片的右边区域 
top left裁剪模式,不缩放图片,只显示图片的左上边区域 
top right裁剪模式,不缩放图片,只显示图片的右上边区域 
bottom left裁剪模式,不缩放图片,只显示图片的左下边区域 
bottom right裁剪模式,不缩放图片,只显示图片的右下边区域 

示例代码:

<!--pages/component/pages/image/image.mcml-->
<view class="container">
  <view class="statement">从底部弹起的滚动选择器。</view>
  <view mc:for="{{array}}">
    <view class="cssname">
      mode:{{item.mode}}【{{item.text}}】
    </view>
    <image style="width:300rpx; height: 300rpx;background:gray;" 
    show-menu-by-longpress="{{item.showMenuByLongPress || false}}"
    mode="{{item.mode}}" src="{{src}}">123435</image>
  </view>
  <view class="cssname">base64</view>
  <image style="width:200rpx; height: 200rpx;background:gray;" show-menu-by-longpress="{{true}}" mode="scaleToFill" src="{{base64}}" bindload="bindload"/>
  
  <view class="cssname">binderror测试</view>
  <image style="width:400rpx; height: 300rpx;background:gray;" mode="scaleToFill" src="https://www.baidu.com" binderror="binderror" />
  
  <view class="cssname">lazy-load: true</view>
  <image style="width:400rpx; height: 300rpx;background:gray;" show-menu-by-longpress="{{true}}" mode="scaleToFill" src="{{src1}}" bindload="bindlazyload" lazy-load="{{true}}" />
  

  <view class="cssname">bindload:当图片载入完毕时触发, 参数event.detail</view>
  <text space="nbsp" user-select="true" class="scrollDetail">{{bindload}}</text>
  <view class="cssname">binderror:当错误发生时触发, 参数event.detail</view>
  <text space="nbsp" user-select="true" class="scrollDetail">{{binderror}}</text>
</view>
// pages/component/pages/image/image.js
Page({
  data: {
    array: [{
      showMenuByLongPress: true,
      mode: 'scaleToFill',
      text: '不保持纵横比缩放图片,使图片完全适应'
    }, {
      mode: 'aspectFit',
      text: '保持纵横比缩放图片,使图片的长边能完全显示出来'
    }, {
      mode: 'aspectFill',
      text: '保持纵横比缩放图片,只保证图片的短边能完全显示出来'
    }, {
      mode: 'fix',
      text: '宽度和高度自动变化,保持原图宽高比不变'
    }, {
      mode: 'widthFix',
      text: '宽度不变,高度自动变化,保持原图宽高比不变'
    }, {
      mode: 'heightFix',
      showMenuByLongPress: true,
      text: '高度不变,宽度自动变化,保持原图宽高比不变'
    }, {
      mode: 'top',
      text: '不缩放图片,只显示图片的顶部区域'
    }, {
      mode: 'bottom',
      text: '不缩放图片,只显示图片的底部区域'
    }, {
      mode: 'center',
      text: '不缩放图片,只显示图片的中间区域'
    }, {
      mode: 'left',
      text: '不缩放图片,只显示图片的左边区域'
    }, {
      mode: 'right',
      text: '不缩放图片,只显示图片的右边边区域'
    }, {
      mode: 'top left',
      text: '不缩放图片,只显示图片的左上边区域'
    }, {
      mode: 'top right',
      text: '不缩放图片,只显示图片的右上边区域'
    }, {
      mode: 'bottom left',
      text: '不缩放图片,只显示图片的左下边区域'
    }, {
      mode: 'bottom right',
      text: '不缩放图片,只显示图片的右下边区域'
    }],
    src: '/assets/images/image.png',
    src1: 'http://www.gov.cn/xinwen/2021-06/17/5618792/images/16ce6a1e43b64d30a8f107db30515f08.jpg',
    base64: 'data:image/png;base64,.....'
  },
  bindload: function(e){
    this.setData({
      bindload: JSON.stringify(e, null, 2)
    })
  },
  binderror: function(e){
    this.setData({
      binderror: JSON.stringify(e, null, 2)
    })
  },
  bindlazyload: function () {
    mc.showToast({
      title: '图片懒加载成功',
    })
  }
})