# multigallery
**Repository Path**: axel666/multigallery
## Basic Information
- **Project Name**: multigallery
- **Description**: MultiGallery 是一个支持图片和视频展示的 Vue 3 组件,结合了 PhotoSwipe 插件,提供灵活的媒体浏览体验。支持自动播放、暂停、导航控制以及自定义样式等功能。此组件允许展示图片和视频资源,支持通过手势或按钮进行控制。
- **Primary Language**: Unknown
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-04-07
- **Last Updated**: 2025-04-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Vue 3 多媒体画廊组件 (MultiGallery)
## 简介
`MultiGallery` 是一个支持图片和视频展示的 Vue 3 组件,结合了 PhotoSwipe 插件,提供灵活的媒体浏览体验。支持自动播放、暂停、导航控制以及自定义样式等功能。此组件允许展示图片和视频资源,支持通过手势或按钮进行控制。
## 功能特点
- **支持图片与视频**:可以同时展示图片和视频,并支持视频的自动播放与暂停。
- **自定义样式**:可以设置背景不透明度、箭头显示、导航样式等。
- **自动播放和计时器**:支持自动播放视频并使用计时器控制切换。
- **事件回调**:通过 `@changed` 事件回调当前索引,便于外部控制。
- **跳转控制**:可以直接跳转到指定的索引,方便用户控制展示的媒体资源。
- **支持手势操作**:支持通过触摸手势控制切换和关闭。
## 使用示例
### 组件导入
在 Vue 文件中导入并使用 `MultiGallery` 组件。
```
vue复制编辑
```
### 控制按钮
提供了暂停、播放、跳转等控制按钮,用户可以方便地控制当前显示的媒体资源。
```
vue复制编辑
```
## 属性说明
| 属性 | 类型 | 默认值 | 是否必须配置项 | 说明 | 备注 |
| ----------------- | ------- | ------------------------------------------------------------ | -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `galleryID` | String | - | 是 | 画廊容器的 ID,必须是唯一的 ID。 | 该 ID 用于在 DOM 中标识画廊容器。 |
| `images` | Array | - | 是 | 图像数据数组,包含每个资源的 `src`、`type`、`width`、`height` 和 `duration` 等信息。 | `src`:资源路径 `type`:资源类型(`image` 或 `video`) `width` 和 `height`:预留字段,设置为 `0` 即可 `duration`:轮播时长(单位:秒),适用于图片自动播放或视频播放时计时。 |
| `psw` | Number | - | 是 | 画廊容器的宽度,单位为像素。 | - |
| `psh` | Number | - | 是 | 画廊容器的高度,单位为像素。 | - |
| `autoplay` | Boolean | `true` | 否 | 是否启用视频自动播放。 | 启用后,视频将按照 `duration` 播放,自动播放策略。 |
| `startIndex` | Number | `0` | 否 | 初始展示的资源索引。 | 默认展示第一个资源。 |
| `bgOpacity` | Number | `0.5` | 否 | 画廊背景的透明度,取值范围 `0` 到 `1`。 | 控制背景的透明度,`0` 为完全透明,`1` 为完全不透明。 |
| `showArrow` | Boolean | `true` | 否 | 是否显示左右箭头。 | 设置为 `false` 时隐藏左右箭头。 |
| `showNavigation` | Boolean | `false` | 否 | 是否显示底部导航。 | 显示或隐藏底部导航按钮。 |
| `navigationStyle` | Object | `{ size: 20, color: '#fff', activeColor: '#008000', spacing: 5 }` | 否 | 定义底部导航按钮的样式,包括大小、颜色、激活颜色和按钮间距。 | `showNavigation` 启用后才有效。`size`:按钮大小,`color`:按钮默认颜色,`activeColor`:激活按钮的颜色,`spacing`:按钮间距。 |
| `useChanged` | Boolean | `false` | 否 | 是否触发 `changed` 事件回调,传递当前索引。 | 设置为 `true` 后,`@changed` 事件将被触发,外部可监听索引变化。 |
## 方法说明
- `gotoSlide(index)`:跳转到指定索引的资源。
- `manageSlide(isPlay)`:控制当前资源的播放状态。`isPlay` 为 `true` 时播放,`false` 时暂停。
## 事件
- `@changed`:当当前资源的索引发生变化时触发,传递当前索引作为参数。
## 运行时
在运行时,组件会根据提供的图像数据初始化每个图片或视频的尺寸,并支持点击导航、手势操作和自动播放等功能。
## 样式自定义
通过 `navigationStyle` 属性可以自定义底部导航按钮的样式,支持自定义大小、颜色、间距等设置。
```
js复制编辑{
size: 30, // 按钮大小
color: 'white', // 按钮颜色
activeColor: 'red', // 激活按钮的颜色
spacing: 10 // 按钮之间的间距
}
```
## 注意事项
1. 视频自动播放可能需要用户交互才能生效,特别是在移动设备上。
2. 确保图片和视频的 URL 可访问,避免加载失败。
3. `images` 数组中的每个项必须包含有效 `src` 、和 `type` 字段,`type` 只能是 `image` 或 `video`; `width` 、 `height`,字段必须有,数值后续会有对应更新。