更新记录

1.0.8(2025-07-10) 下载此版本

优化

1.0.7(2025-07-07) 下载此版本

1

1.0.6(2025-07-07) 下载此版本

优化

查看更多

平台兼容性

uni-app

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
-

其他

多语言 暗黑模式 宽屏模式
× ×

x-image 组件使用说明

概述

x-image 是一个功能强大的图片组件,支持图片懒加载、缓存、多种显示模式等特性。

主要特性

  • 🖼️ 图片懒加载:支持占位图和滚动触发加载
  • 💾 图片缓存:自动缓存图片,提升加载性能
  • 🔄 滚动监听:支持垂直、水平、双向滚动监听

基础用法

简单使用

<template>
  <x-image src="https://example.com/image.jpg" />
</template>

设置尺寸

<template>
  <!-- 方式1:使用 size 属性 -->
  <x-image 
    src="https://example.com/image.jpg" 
    size="200rpx" 
  />

  <!-- 方式2:分别设置宽高 -->
  <x-image 
    src="https://example.com/image.jpg" 
    width="200rpx" 
    height="200rpx" 
  />
</template>

图片懒加载

<template>
  <x-image 
    src="https://example.com/image.jpg"
    placeholder-src="https://example.com/placeholder.jpg"
    :scroll-top="scrollTop"
    :scroll-area-height="scrollAreaHeight"
  />
</template>

<script>
export default {
  data() {
    return {
      scrollTop: 0,
      scrollAreaHeight: 0
    }
  },
  mounted() {
    // 注意:不同平台滚动区域高度有差异
    this.scrollAreaHeight = uni.getSystemInfoSync().windowHeight
  },
  onPageScroll(e){
    this.scrollTop = e.scrollTop
  }
}
</script>

属性说明

基础属性

属性名 类型 默认值 说明
src String - 图片资源地址
placeholder-src String '' 占位图片资源地址(传入开启图片懒加载)
mode String 'aspectFill' 图片裁剪、缩放的模式
show-menu-by-longpress Boolean false 开启长按图片显示识别小程序码菜单
cache-image Boolean true 是否缓存图片

尺寸属性

属性名 类型 默认值 说明
size String '' 图片大小(优先级低于width/height)
width String '' 图片宽度(优先级高于size)
height String '' 图片高度(优先级高于size)

滚动相关属性

属性名 类型 默认值 说明
scroll-top Number 0 页面在垂直方向已滚动的距离(单位px)
scroll-left Number 0 页面在水平方向已滚动的距离(单位px)
scroll-area-height Number windowHeight 滚动区域高度(单位px)注意:不同平台滚动区域高度有差异
scroll-area-width Number windowWidth 滚动区域宽度(单位px)
offset-top Number 0 滚动区域距离顶部偏移量(单位px)
offset-left Number 0 滚动区域距离左侧偏移量(单位px)
direction String 'vertical' 滚动方向:'vertical'、'horizontal'、'both'

样式属性

属性名 类型 默认值 说明
custom-class String '' 自定义 class
custom-style Object '' 自定义 style

图片模式说明

模式值 说明
scaleToFill 不保持纵横比缩放图片,使图片完全填满元素
widthFix 宽度不变,高度自动变化,保持原图宽高比
heightFix 高度不变,宽度自动变化,保持原图宽高比
aspectFit 保持纵横比缩放,完整显示图片
aspectFill 保持纵横比缩放,填满元素(可能裁剪)

事件说明

事件名 说明 回调参数
@error 图片加载失败时触发 event
@load 图片加载成功时触发 event
@click 点击图片时触发 event

使用示例

在 scroll-view 中使用懒加载

<template>
  <scroll-view 
    scroll-y 
    @scroll=""
    style="height: 400px;"
  >
    <x-image 
      v-for="(item, index) in imageList" 
      :key="index"
      :src="item.url"
      :placeholder-src="item.placeholder"
      :scroll-top="scrollTop"
      :scroll-area-height="400"
      :offset-top="0"
      size="200rpx"
      @load="onImageLoad"
      @error="onImageError"
    />
  </scroll-view>
</template>

<script>
export default {
  data() {
    return {
      scrollTop: 0,
      imageList: [
        {
          url: 'https://example.com/image1.jpg',
          placeholder: 'https://example.com/placeholder1.jpg'
        },
        {
          url: 'https://example.com/image2.jpg',
          placeholder: 'https://example.com/placeholder2.jpg'
        }
      ]
    }
  },
  methods: {
    (e) {
      this.scrollTop = e.detail.scrollTop
    },
    onImageLoad(e) {
      console.log('图片加载成功', e)
    },
    onImageError(e) {
      console.log('图片加载失败', e)
    }
  }
}
</script>

自定义样式

<template>
  <x-image 
    src="https://example.com/image.jpg"
    custom-class="my-image"
    size="200rpx"
  />
</template>

<style>
.my-image {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
</style>

禁用图片缓存

<template>
  <x-image 
    src="https://example.com/image.jpg"
    :cache-image="false"
    size="200rpx"
  />
</template>

注意事项

  1. 懒加载使用:需要传入 placeholder-src 才会启用懒加载功能
  2. 滚动监听:在 scroll-view 中使用时,需要正确设置 offset-topoffset-left
  3. 图片缓存:默认开启图片缓存,如不需要可设置 cache-imagefalse
  4. 尺寸优先级width/height 优先级高于 size 属性
  5. 平台差异:不同平台的滚动区域高度可能有差异,建议根据实际情况调整

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问