• image

    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 上编辑此页面!