1.0.10 • Published 1 month ago

@tanzhenxing/zx-album v1.0.10

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

zx-album 相册组件

相册组件用于展示一个或多个图片,支持单图、多图布局,图片预览,懒加载,删除等功能。

介绍

相册组件是一个功能丰富的图片展示组件,支持以下特性:

  • 单图/多图展示
  • 自适应图片尺寸
  • 图片预览
  • 懒加载
  • 删除功能
  • 加载状态
  • 错误处理
  • 空状态提示

使用示例

基础用法

<template>
  <zx-album :urls="urls"></zx-album>
</template>

<script setup>
import { ref } from 'vue';

const urls = ref([
  'https://cdn.mp.ac.cn/banner/01.jpg',
  'https://cdn.mp.ac.cn/banner/02.jpg',
  'https://cdn.mp.ac.cn/banner/03.jpg'
]);
</script>

自定义大小和间距

<template>
  <zx-album 
    :urls="urls" 
    singleSize="400rpx" 
    multipleSize="120rpx"
    space="10rpx"
  ></zx-album>
</template>

可删除的相册

<template>
  <zx-album 
    :urls="urls" 
    :deletable="true"
    @delete="onDelete"
  ></zx-album>
</template>

<script setup>
import { ref } from 'vue';

const urls = ref([
  'https://cdn.mp.ac.cn/banner/01.jpg',
  'https://cdn.mp.ac.cn/banner/02.jpg',
  'https://cdn.mp.ac.cn/banner/03.jpg'
]);

const onDelete = (index) => {
  urls.value.splice(index, 1);
};
</script>

配合上传组件使用

<template>
  <zx-album 
    :urls="images" 
    :deletable="true"
    @delete="onDelete"
  ></zx-album>
  <zx-upload 
    :fileList="images" 
    @afterRead="afterRead" 
    :maxCount="9"
  ></zx-upload>
</template>

<script setup>
import { ref } from 'vue';

const images = ref([]);

const afterRead = (event) => {
  const { file } = event;
  // 此处省略上传逻辑
  images.value.push(file.url);
};

const onDelete = (index) => {
  images.value.splice(index, 1);
};
</script>

使用对象数组

<template>
  <zx-album 
    :urls="images" 
    keyName="url"
  ></zx-album>
</template>

<script setup>
import { ref } from 'vue';

const images = ref([
  { url: 'https://cdn.mp.ac.cn/banner/01.jpg', id: '1' },
  { url: 'https://cdn.mp.ac.cn/banner/02.jpg', id: '2' },
  { url: 'https://cdn.mp.ac.cn/banner/03.jpg', id: '3' }
]);
</script>

API

Props

参数说明类型默认值
urls图片地址列表Array[]
keyName指定从对象数组中读取的图片地址属性名String''
singleSize单图时,图片长边的长度String/Number'360rpx'
multipleSize多图时,图片边长String/Number'140rpx'
space多图时,图片间隔String/Number'12rpx'
singleMode单图时,图片缩放裁剪模式String'scaleToFill'
multipleMode多图时,图片缩放裁剪模式String'aspectFill'
maxCount最多展示图片数量String/Number9
previewFullImage是否可以预览图片Booleantrue
rowCount每行展示图片数量String/Number3
showMore超出maxCount时是否显示查看更多提示Booleantrue
deletable是否可以删除图片Booleanfalse
lazyLoad是否开启图片懒加载Booleantrue
loading是否显示加载状态Booleanfalse
showError是否显示加载失败提示Booleantrue
showEmpty是否显示空状态提示Booleantrue
emptyText空状态提示文字String'暂无图片'

Events

事件名说明回调参数
albumWidth当相册宽度变化时触发width: 相册宽度
delete删除图片时触发index: 被删除图片的索引
error图片加载失败时触发{rowIndex, colIndex, src}: 行索引、列索引和图片地址

注意事项

  1. 在小程序中,需要将网络图片的域名添加到小程序的download域名才可能获取尺寸
  2. 对于单图模式,组件会根据图片原始比例自动调整尺寸
  3. 使用对象数组时,需要指定keyName属性来提取图片地址
  4. 删除功能需要手动处理数组更新