
1.在src文件夹中建一个imageViewer文件夹,imageViewer文件夹中写入一个index.vue,index.vue代码如下
<template>
<el-image-viewer v-if="imgViewerVisible" :on-close="closeImgViewer" :url-list="imgList" />
</template>
<script>
export default {
name:'imageViewer',
data: function () {
return {
imgViewerVisible: false,
imgList: [],
}
},
methods: {
showImgViewer(imgList) {
this.imgList = imgList;
this.imgViewerVisible = true;
const m = (e) => { e.preventDefault() };
document.body.style.overflow = 'hidden';
document.addEventListener("touchmove", m, false);
setTimeout(() => {
let image = document.getElementsByClassName("el-image-viewer__wrapper");
image[0].style['z-index'] = '2050';
}, 100)
},
closeImgViewer() {
this.imgViewerVisible = false;
const m = (e) => { e.preventDefault() };
document.body.style.overflow = 'auto';
document.removeEventListener("touchmove", m, true);
},
},
components: { 'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer') }
}
</script>
<style></style>
2.在imageViewer文件夹中写入一个index.js,index.js代码如下
import Vue from 'vue'
import imageViewer from './index.vue'
Vue.prototype.$imageViewer = function (options) {
let urlList = Array.isArray(options) ? options : [options];
var imageViewer1 = Vue.extend(imageViewer)
var component = new imageViewer1().$mount()
document.body.appendChild(component.$el)
Vue.nextTick(() => {
component.showImgViewer(urlList)
})
}
imageViewer.install = function (Vue) {
Vue.component(imageViewer.name, imageViewer)
}
export default imageViewer
3.在main.js中进行引入注册
import imageViewer from '@/components/imageViewer/index.js'
Vue.use(imageViewer)
4.在其他页面进行使用调用
<el-button @click="imgShow">图片预览</el-button>
methods:{
imgShow() {
let url = 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg
this.$imageViewer(url)
},
}