1、安装
npm install v-viewer --save
2、安装完在main.js里面引用(还要记得引用它的css样式)下面有两种调用方式
import Vue from 'vue'
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'
// vue注册调用方法一:
Vue.use(Viewer, {
defaultOptions: {
zIndex: 9999
}
})
import Vue from 'vue'
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'
//vue注册调用方法二:
Vue.use(Viewer);
Viewer.setDefaults({
Options: {
"inline": true, //启用 inline 模式 默认false
"button": true, //显示右上角关闭按钮 默认true
"navbar": true, //显示缩略图导航 默认true
"title": true, //显示当前图片的标题 默认true
"toolbar": true, // 显示工具栏 默认true
"tooltip": true, // 显示缩放百分比 默认true
"movable": true, //图片是否可移动 默认true
"zoomable": true, //图片是否可缩放 默认true
"rotatable": true, //图片是否可旋转 默认true
"scalable": true, //图片是否可翻转 默认true
"transition": true, //使用css3过度 默认true
"fullscreen": true, //是否全屏 默认true
"keyboard": true, //是否支持键盘 默认true
"url": "data-source" //设置大图片的URL
}
});
3、页面引用
方法一、
<template>
<viewer :images="images">
<img v-for="src in images" :src="src" :key="src">
</viewer>
</template>
data(){
return{
images:[
'xx.png',
'hh.png'
]
}
}
方法二、
<ul ref="imgFontInfo" >
<li v-for="(item,index) in fontImgData" :key="index">
<div class="font-img-left" @click="viewImghandle(index)">
<div class="viewer-img" v-viewer="options">
<img
style="cursor: pointer;"
class="font-img-i"
v-for="(imgSrc,imgIndex) in item.phone"
:src="imgSrc"
:key="imgIndex"
:onerror="item.fontUrl"
/>
</div>
</div>
</li>
</ul>
methods:{
//点击图片的区域放大
viewImghandle(index){
const viewer = this.$refs.imgFontInfo.querySelectorAll('.viewer-img')[index].$viewer
viewer.show()
},
}
指令修饰器
static
添加修饰器后,viewer的创建只会在元素绑定指令时执行一次。
如果你确定元素内的图片不会再发生变化,使用它可以避免不必要的重建动作。
<div class="images" v-viewer.static="{inline: true}">
<img v-for="src in images" :src="src" :key="src">
</div>
以组件形式使用
你也可以单独引入全屏组件并局部注册它。
使用作用域插槽来定制你的图片展示方式。
监听inited
事件来获取viewer
实例,或者也可以用this.refs.xxx.$viewer
这种方法。
<template>
<div id="app">
<viewer :options="options" :images="images"
@inited="inited"
class="viewer" ref="viewer"
>
<template scope="scope">
<img v-for="src in scope.images" :src="src" :key="src">
{{scope.options}}
</template>
</viewer>
<button type="button" @click="show">Show</button>
</div>
</template>
<script>
import 'viewerjs/dist/viewer.css'
import Viewer from "v-viewer/src/component.vue"
export default {
components: {
Viewer
},
data() {
images: ['1.jpg', '2.jpg']
},
methods: {
inited (viewer) {
this.$viewer = viewer
},
show () {
this.$viewer.show()
}
}
}
</script>
如果你需要避免重名冲突,可以像这样引入:
<div class="images" v-vuer="{movable: false}">
<img v-for="src in images" :src="src" :key="src">
</div>
4、配置
defaultOptions
Type: Object
Default: undefined
如果你需要修改viewer.js的全局默认配置项,可以像这样引入:
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer, {
defaultOptions: {
zIndex: 2020
}
})
你还可以在任何时候像这样修改全局默认配置项:
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
Viewer.setDefaults({
zIndexInline: 2020
})