Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/marinerer/vue-lightbox-lite

A lightweight image, video and iframe lightbox gallery component for Vue. Supports slide, zoom, rotation, autoplay, captions and so on. 轻量级的图片/视频 预览器,支持自动播放、旋转、缩放、全屏、键盘及手势滑动切换等。🏞️
https://github.com/marinerer/vue-lightbox-lite

gallery image-gallery image-lightbox image-viewer lightbox lightbox-gallery video-gallery viewer vue vue-gallery vue-lightbox vue-viewer

Last synced: 7 days ago
JSON representation

A lightweight image, video and iframe lightbox gallery component for Vue. Supports slide, zoom, rotation, autoplay, captions and so on. 轻量级的图片/视频 预览器,支持自动播放、旋转、缩放、全屏、键盘及手势滑动切换等。🏞️

Awesome Lists containing this project

README

        

# vue-lightbox-lite

A lightweight image, video and iframe lightbox gallery component for Vue. Supports slide, zoom, rotation, autoplay, captions and so on, based on [Vue-cool-lightbox](https://github.com/lucaspulliese/vue-cool-lightbox).

轻量级的图片/视频 预览器,支持自动播放、旋转、缩放、全屏、键盘及手势滑动切换等。

![default screenshot](https://cdn.jsdelivr.net/gh/Meqn/vue-lightbox-lite/src/assets/screen_default.jpg)

![light screenshot](https://cdn.jsdelivr.net/gh/Meqn/vue-lightbox-lite/src/assets/screen_light.jpg)

## Features
1. No external dependencies.
2. Fully responsive.
3. autoplay slides that play or pause
4. Full screen support.
5. Multiple zoom levels.
6. Rotate images.
7. YouTube Vimeo and html5 videos Support.
8. Keyboard Navigation for desktop.
9. And many more.

## Installation

```bash
npm install vue-lightbox-lite

# 或

yarn add vue-lightbox-lite
```

## Usage

### 1. Global import

In main.js:
```js
// main.js
import Lightbox from 'vue-lightbox-lite'
import 'vue-lightbox-lite/dist/index.css'

Vue.use(Lightbox)
```

In `component.vue`
```html

export default {
data() {
return {
index: null,
list: [
'http://www.domain.com/image.jpg',
'http://www.domain.com/video.mp4',
{
src: 'http://www.domain.com/playgame/',
mediaType: 'video',
ext: 'webm',
title: '',
description: ''
},
'https://www.youtube.com/watch?v=d0tU18Ybcvk',
{
src: 'https://www.youtube.com/watch?v=d0tU18Ybcvk',
mediaType: 'webVideo'
},
{
src: 'http://www.domain.com/file.pdf',
mediaType: 'iframe'
}
]
}
}
}

```

### 2. In Component

```html

import VueLightbox from 'vue-lightbox-lite'
import 'vue-lightbox-lite/dist/index.css'

export default {
component: {
Viewer: VueLightbox
},
data() {
return {
index: null,
list: [
'http://www.domain.com/image.jpg',
'http://www.domain.com/video.mp4',
'http://www.domain.com/file.pdf'
]
}
}
}

```

## API

### Items attributes
| Name | Type | Default | Description |
| ----------- | -------------- | ------- | --------------------------------------------------- |
| src | String | | Url of the image/video/iframe |
| mediaType | String | `image` | media type, `image`, `video`, `webVideo`, `iframe` |
| ext | String | | e.g. `mp4`, `ogg`, `webm`, `pdf` |
| thumb | String | | |
| alt | String | | |
| srcset | String | | |
| sizes | String | | |
| title | String | | |
| description | String | | |
| width | String\|Number | `auto` | Control width, `video` & `iframe` |
| height | String\|Number | `auto` | |
| maxWidth | String\|Number | `auto` | |
| maxHeight | String\|Number | `auto` | |

### props

| Name | Type | Default | Description |
| ---------------- | ----------------------- | -------------------------------- | ------------------------------------------------------------ |
| index | Number | null | Index of items to open |
| items | Array | | Array of images/videos |
| container | Element \| String | `document.body` | |
| theme | String | `dark` | `dark`, `light` |
| customClass | String | | |
| zIndex | Number | `9999` | |
| highColor | String | `#fa4242` | progressbar color and thumbnails border-color |
| overlayColor | String | | |
| navigator | Boolean | `true` | |
| toolbar | Array | | toolbar: `counter`, `zoom`, `slide`, `rotate`, `gallery`, `fullscreen`, `download`, `close` |
| loop | Boolean | `true` | |
| slideDuration | Number | `3500` | |
| showGallery | Boolean | `false` | |
| galleryPosition | String | | `right`, `bottom` |
| video | Object | `{autoplay: false, raito: 16/9}` | video parameter,`autoplay`, `width`,`height`,`maxWidth`,`maxHeight` |
| iframe | Object | | `width`,`height`,`maxWidth`,`maxHeight` |
| enableWheelEvent | Boolean | `false` | |
| enableScrollLock | Boolean | `true` | |
| clickOutsideHide | Boolean | `true` | |

### Slots
- `loading`
- `icon-previous`
- `icon-next`

### Events

- `open(index: number)`
- `close`
- `change(index: number)`
- `change-end(index: number)`

### Methods

- `open(index)`
- `close()`
- `previous()`
- `next()`
- `change(index)`