image

图片。

属性名类型默认值说明平台差异说明
srcString图片资源地址
modeString'scaleToFill'图片裁剪、缩放的模式
lazy-loadBooleanfalse图片懒加载。只针对page与scroll-view下的image有效微信小程序、5+APP、百度小程序、头条小程序
@errorHandleEvent当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'}
@loadHandleEvent当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'}

Tips

  • <image> 组件默认宽度 300px、高度 225px;
  • src 仅支持相对路径、绝对路径,支持 base64 码;
  • 页面结构复杂,css样式太多的情况,使用 image 可能导致样式生效较慢,出现 “闪一下” 的情况,此时设置 image{will-change: transform} ,可优化此问题。
  • 自定义组件里面使用 <image>时,若 src 使用相对路径可能出现路径查找失败的情况,故建议使用绝对路径。mode 有效值:

mode 有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式。

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

示例:

  1. <template>
  2. <view class="page">
  3. <view class="image-list">
  4. <view class="image-item" v-for="(item,index) in array" :key="index">
  5. <view class="image-content">
  6. <image style="width: 200px; height: 200px; background-color: #eeeeee;" :mode="item.mode" :src="src"
  7. @error="imageError"></image>
  8. </view>
  9. <view class="image-title">{{item.text}}</view>
  10. </view>
  11. </view>
  12. </view>
  13. </template>
  1. export default {
  2. data() {
  3. return {
  4. array: [{
  5. mode: 'scaleToFill',
  6. text: 'scaleToFill:不保持纵横比缩放图片,使图片完全适应'
  7. }, {
  8. mode: 'aspectFit',
  9. text: 'aspectFit:保持纵横比缩放图片,使图片的长边能完全显示出来'
  10. }, {
  11. mode: 'aspectFill',
  12. text: 'aspectFill:保持纵横比缩放图片,只保证图片的短边能完全显示出来'
  13. }, {
  14. mode: 'top',
  15. text: 'top:不缩放图片,只显示图片的顶部区域'
  16. }, {
  17. mode: 'bottom',
  18. text: 'bottom:不缩放图片,只显示图片的底部区域'
  19. }, {
  20. mode: 'center',
  21. text: 'center:不缩放图片,只显示图片的中间区域'
  22. }, {
  23. mode: 'left',
  24. text: 'left:不缩放图片,只显示图片的左边区域'
  25. }, {
  26. mode: 'right',
  27. text: 'right:不缩放图片,只显示图片的右边边区域'
  28. }, {
  29. mode: 'top left',
  30. text: 'top left:不缩放图片,只显示图片的左上边区域'
  31. }, {
  32. mode: 'top right',
  33. text: 'top right:不缩放图片,只显示图片的右上边区域'
  34. }, {
  35. mode: 'bottom left',
  36. text: 'bottom left:不缩放图片,只显示图片的左下边区域'
  37. }, {
  38. mode: 'bottom right',
  39. text: 'bottom right:不缩放图片,只显示图片的右下边区域'
  40. }],
  41. src: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/shuijiao.jpg'
  42. }
  43. },
  44. methods: {
  45. imageError: function(e) {
  46. console.error('image发生error事件,携带值为' + e.detail.errMsg)
  47. }
  48. }
  49. }

原图

uniapp

scaleToFill:不保持纵横比缩放图片,使图片完全适应

uniapp

aspectFit:保持纵横比缩放图片,使图片的长边能完全显示出来

uniapp

aspectFill:保持纵横比缩放图片,只保证图片的短边能完全显示出来

uniapp

top:不缩放图片,只显示图片的顶部区域

uniapp

bottom:不缩放图片,只显示图片的底部区域

uniapp

center:不缩放图片,只显示图片的中间区域

uniapp

left:不缩放图片,只显示图片的左边区域

uniapp

right:不缩放图片,只显示图片的右边边区域

uniapp

top left:不缩放图片,只显示图片的左上边区域

uniapp

top right:不缩放图片,只显示图片的右上边区域

uniapp

bottom left:不缩放图片,只显示图片的左下边区域

uniapp

bottom right:不缩放图片,只显示图片的右下边区域

uniapp


发现错误?想参与编辑?在 GitHub 上编辑此页面!