1.0.0 • Published 1 year ago
@i5920/vue-preview v1.0.0
v-preview-image
一个基于vue3的图片预览插件,可以缩放图片,移动图片,旋转图片,目前只支持pc端。
因为之前做管理后台时,经常有图片需要预览,使用element的图片预览必须基于它的image组件, 我觉得不够方便,所以模仿它的样式封装了这个图片预览插件,可在任何vue3的pc项目使用。
该预览插件使用非常简单、方便!
如果您使用过程中发现有问题或者可优化的地方都果断提出来!
如果对您有帮助,麻烦给个Star!
https://gitee.com/okcoder/vue-preview
npm安装
npm install vue-preview@^1.x -S在main.js引入
import VuePreview from 'vue-preview'
app.use(VuePreview)调用方式
可在模板中直接调用
<div @click="$preview(current,list,key)"></div>也可在js中通过实例调用:
this.$preview(current,list,key)组合式api中引入方法调用
import { preview } from 'vue-preview'
preview(current,list,key)| 参数 | 说明 | 类型 |
|---|---|---|
| current | 当前预览的图片索引或者url | Number |
| list | 需要预览的图片数组。 | PreviewFile[] |
type PreviewFile = { thumb: string // 缩略图小图 url: string // 图片缩略图大图 videoUrl?: string // 视频播放地址 type: 'image' | 'video' // 类型 }
关闭预览
import { closePreview } from 'vue-preview'
closePreview()修改默认配置
// 方式一:引入方法传入配置
import { setPreviewDefaultOptions } from 'vue-preview'
setPreviewDefaultOptions({
enabledMaskClose: false, // 是否开启点击遮罩关闭(默认为true)
enabledEscClose: false, // 是否开启esc按键关闭(默认为true)
enabledMouseZoom: false, // 是否开启鼠标滚轮缩放(默认为true)
activeColor: 'green' // 预览图中选中图片的背景颜色(默认为rgba(239, 84, 78, 0.7))
previewStyle: { width: 'auto',height: 'auto',objectFit: 'cover'}, // 预览图样式
showDownloadBtn: false // 显示下载按钮
})
// 方式二:在app.use时传入配置
import VuePreview from 'vue-preview'
app.use(VuePreview, { activeColor: '#ff0033' })示例
<template>
<div class="container">
<h1>示例:</h1>
<button @click="$preview(0, list)">第一个参数可传入索引,第二个参数传入需要预览的图片数组</button><br /><br />
<button @click="handleClick">也可通过实例调用</button><br /><br />
</div>
</template>
<script lang="ts">
import { setPreviewDefaultOptions } from '../src/index' // 使用setup组合式api时引入方法调用
export default {
data() {
return {
url: 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
list: [
{
thumb: 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
url: 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
type: 'image'
},
{
thumb: 'https://cdn.hellomadou.com/H264_4403577/2024-12-08/17336655456032412234cdd1a886ef90253c7d6d805533a8bc5.mp4_videosm',
url: 'https://cdn.hellomadou.com/H264_4403577/2024-12-08/17336655456032412234cdd1a886ef90253c7d6d805533a8bc5.mp4_videosm',
videoUrl: 'https://cdn.hellomadou.com/H264_4403577/2024-12-08/17336655456032412234cdd1a886ef90253c7d6d805533a8bc5.mp4?e=1733715202&token=8rTAhKuJuBE7X2WG-4Oyd2VnL2gmWIAeTYI0RIKY:emTBDpcuGiCggKiRCIqWIL5uIwE=',
type: 'video'
},
{
thumb: 'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg',
url: 'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg',
type: 'image'
},
{
thumb: 'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg',
url: 'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg',
type: 'image'
},
{
thumb: 'https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg',
url: 'https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg',
type: 'image'
},
{
thumb: 'https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg',
url: 'https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg',
type: 'image'
},
{
thumb: 'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
url: 'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
type: 'image'
},
{
thumb: 'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
url: 'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
type: 'image'
},
{
thumb: 'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
url: 'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
type: 'image'
}
]
}
},
methods: {
handleClick() {
this.$preview(0, this.list)
}
},
setup() {
// 修改默认配置
setPreviewDefaultOptions({
enabledEscClose: false
})
}
}
</script>
1.0.0
1 year ago