1.0.4 • Published 1 month ago

@tanzhenxing/zx-image v1.0.4

Weekly downloads
-
License
ISC
Repository
-
Last release
1 month ago

zx-image 图片组件

介绍

zx-image 是一个基于 uni-app 的增强型图片组件,提供了图片懒加载、占位图、加载失败显示等功能,适用于各类 uni-app 项目中的图片展示需求。

特性

  • 支持图片懒加载(自定义实现和原生懒加载)
  • 支持图片加载动画效果
  • 支持占位图和背景色
  • 支持加载失败时显示替代图片
  • 支持圆角设置
  • 兼容各端小程序和 App

安装方法

将组件复制到项目的 components 目录下即可使用。

基本用法

<template>
  <view>
    <zx-image
      src="https://example.com/image.jpg"
      width="300rpx"
      height="200rpx"
      radius="10rpx"
    ></zx-image>
  </view>
</template>

<script>
import zxImage from '@/components/zx-image/zx-image.vue';

export default {
  components: {
    zxImage
  }
}
</script>

属性说明

属性名类型默认值说明
srcString''图片路径
srcParamsString''图片链接附加参数,如七牛云图片处理参数
placeholderString''占位图路径
backgroundColorString'#f1f1f1'占位背景色,placeholder有值时失效
modeString'aspectFill'图片的裁剪模式,参考image组件mode属性
fadeShowBooleantrue图片显示动画效果,无占位图时有效
webpBooleanfalse默认不解析 webP 格式,只支持网络资源
showMenuByLongpressBooleanfalse开启长按图片显示识别小程序码菜单(微信小程序2.7.0+)
draggableBooleantrue鼠标长按是否能拖动图片(仅H5平台 3.1.1+)
widthString'230rpx'图片宽度
heightString'180rpx'图片高度,如果高度设置为auto,mode值需要设置为widthFix
radiusString'0rpx'图片圆角值
bottomNumber/String50节点布局区域的下边界,目标节点区域以下 bottom(px) 时触发懒加载
disconnectBooleanfalse是否停止监听,设置为true时懒加载将不再触发
indexNumber0图片在列表中的索引值
lazyLoadBooleantrue是否开启懒加载(自定义实现)
nativeLazyLoadBooleanfalse是否使用原生的lazy-load属性(仅微信小程序、百度小程序、抖音小程序、飞书小程序支持)
paddingString'0rpx'内边距
errorImageString''加载失败时显示的图片

事件说明

事件名说明返回参数
@error当错误发生时触发{detail: 图片加载错误信息, index: 索引值}
@load当图片加载完成时触发{detail: {width: 图片宽度, height: 图片高度}, index: 索引值}
@click点击图片时触发{index: 索引值}

方法说明

组件对外暴露的方法,可通过 ref 调用:

方法名说明参数
loadImage手动触发加载图片

使用示例

基础用法

<zx-image src="/static/images/example.jpg"></zx-image>

设置圆角

<zx-image src="/static/images/example.jpg" radius="20rpx"></zx-image>

使用占位图

<zx-image 
  src="/static/images/example.jpg" 
  placeholder="/static/images/placeholder.jpg"
></zx-image>

错误图片

<zx-image 
  src="/static/images/example.jpg" 
  errorImage="/static/images/error.jpg"
></zx-image>

列表懒加载

<template>
  <scroll-view scroll-y>
    <view v-for="(item, index) in imageList" :key="index">
      <zx-image 
        :src="item.src" 
        :index="index"
        @load="onImageLoad"
        @error="onImageError"
        @click="onImageClick"
      ></zx-image>
    </view>
  </scroll-view>
</template>

<script>
export default {
  data() {
    return {
      imageList: [
        { src: '/static/images/1.jpg' },
        { src: '/static/images/2.jpg' },
        { src: '/static/images/3.jpg' }
        // ...更多图片
      ]
    }
  },
  methods: {
    onImageLoad(e) {
      console.log('图片加载成功', e);
    },
    onImageError(e) {
      console.log('图片加载失败', e);
    },
    onImageClick(e) {
      console.log('点击了图片', e.index);
    }
  }
}
</script>

手动触发加载

<template>
  <view>
    <zx-image 
      ref="myImage"
      src="/static/images/example.jpg" 
      :disconnect="true"
    ></zx-image>
    <button @click="loadImage">加载图片</button>
  </view>
</template>

<script>
export default {
  methods: {
    loadImage() {
      this.$refs.myImage.loadImage();
    }
  }
}
</script>

提示

  • 使用 widthFix 模式时,建议将 height 设置为 'auto'
  • 大量图片列表建议使用懒加载功能,提升性能
  • 在 App 和 H5 端,自定义懒加载使用 IntersectionObserver API 实现
  • 在小程序中,可以选择使用原生懒加载(nativeLazyLoad=true)或自定义懒加载
1.0.4

1 month ago

1.0.3

2 months ago

1.0.2

5 months ago

1.0.0

1 year ago