9433cfb9创建于 2025年12月31日历史提交
<template>
  <!-- #ifdef APP -->
  <scroll-view style="flex: 1;">
  <!-- #endif -->
    <page-head :title="title"></page-head>
    <view class="uni-padding-wrap uni-common-mt">
      <view class="uni-title">
        <text class="uni-title-text">支持的图片缩放模式示例</text>
      </view>
      <view v-for="(item,index) in data" :key="index">
        <text class="uni-subtitle-text">{{item.mode}}: {{item.description}}</text>
        <view class="uni-center" style="background:#FFFFFF;">
          <image class="image" :mode="item.mode" src="/static/shuijiao.jpg"></image>
        </view>
      </view>
      <view class="uni-title">
        <text class="uni-title-text">其他示例</text>
      </view>
      <view>
        <text class="uni-subtitle-text">同时设置mode和圆角</text>
        <view class="uni-center" style="background:#FFFFFF;">
          <image class="image radius" mode="heightFix" src="/static/shuijiao.jpg"></image>
        </view>
      </view>
      <view>
        <text class="uni-subtitle-text">设置图片width='100%'与mode='widthFix'</text>
        <view class="uni-center" style="background:#FFFFFF;">
          <view class="uni-center" style="background-color: red; width: 150px; margin: 20px;">
            <image style="width: 100%" mode="widthFix" src="/static/shuijiao.jpg"></image>
          </view>
        </view>
      </view>
      <view>
        <text class="uni-subtitle-text">image默认mode</text>
        <view class="uni-center" style="background:#FFFFFF;">
          <view class="uni-center" style="margin: 20px;">
            <image style="width: 100px; height: 100px;" src="/static/logo.png"></image>
          </view>
        </view>
      </view>
    </view>
  <!-- #ifdef APP -->
  </scroll-view>
  <!-- #endif -->
</template>

<script>
  export default {
    data() {
      return {
        title: 'image-mode',
        data: [
          {
            mode: 'scaleToFill',
            description: '不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素'
          },
          {
            mode: 'aspectFit',
            description: '保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来'
          },
          {
            mode: 'aspectFill',
            description: '保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取'
          },
          {
            mode: 'top',
            description: '不缩放图片,只显示图片的顶部区域'
          },
          {
            mode: 'bottom',
            description: '不缩放图片,只显示图片的底部区域'
          },
          {
            mode: 'center',
            description: '不缩放图片,只显示图片的中间区域'
          },
          {
            mode: 'left',
            description: '不缩放图片,只显示图片的左边区域'
          },
          {
            mode: 'right',
            description: '不缩放图片,只显示图片的右边区域'
          },
          {
            mode: 'top left',
            description: '不缩放图片,只显示图片的左上边区域'
          },
          {
            mode: 'top right',
            description: '不缩放图片,只显示图片的右上边区域'
          },
          {
            mode: 'bottom left',
            description: '不缩放图片,只显示图片的左下边区域'
          },
          {
            mode: 'bottom right',
            description: '不缩放图片,只显示图片的右下边区域'
          },
          {
            mode: 'widthFix',
            description: '宽度不变,高度自动变化,保持原图宽高比不变'
          },
          {
            mode: 'heightFix',
            description: '高度不变,宽度自动变化,保持原图宽高比不变'
          }
        ] as Array<ImageMode>
      }
    }
  }

  type ImageMode = {
    mode : string
    description : string
  }
</script>

<style>
  .image {
    margin: 20px auto;
    width: 100px;
    height: 100px;
    background-color: #eeeeee;
  }

  .radius {
    border-radius: 10px;
  }
</style>