viewerjs ,GitHub地址:https://github.com/fengyuanchen/viewerjs 。css
中文文档地址:https://mirari.cc/2017/08/27/Vue图片浏览组件v-viewer,支持旋转、缩放、翻转等操做/html
发表于 2017-08-27 | 分类于 项目 , Vue | vue
用于图片浏览的Vue组件,支持旋转、缩放、翻转等操做,基于viewer.js。git
你须要作的惟一改动就是手动引入样式文件:github
1 |
import 'viewerjs/dist/viewer.css' |
使用npm命令安装npm
1 |
npm install v-viewer |
引入v-viewer
及必需的css样式,并使用Vue.use()
注册插件,以后便可使用。app
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<template> <div id="app"> <!-- directive --> <div class="images" v-viewer> <img src="1.jpg"> <img src="2.jpg"> ... </div> <!-- component --> <viewer :images="images"> <img v-for="src in images" :src="src" :key="src"> </viewer> </div> </template> <script> import 'viewerjs/dist/viewer.css' import Viewer from 'v-viewer' import Vue from 'vue' Vue.use(Viewer) export default { data() { images: ['1.jpg', '2.jpg'] } } </script> |
只须要将v-viewer
指令添加到任意元素便可,该元素下的全部img
元素都会被viewer
自动处理。ide
你能够像这样传入配置项: v-viewer="{inline: true}"
svg
若是有必要,能够先用选择器查找到目标元素,而后能够用el.$viewer
来获取viewer
实例。ui
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<template> <div id="app"> <div class="images" v-viewer="{movable: false}"> <img v-for="src in images" :src="src" :key="src"> </div> <button type="button" @click="show">Show</button> </div> </template> <script> import 'viewerjs/dist/viewer.css' import Viewer from 'v-viewer' import Vue from 'vue' Vue.use(Viewer) export default { data() { images: ['1.jpg', '2.jpg'] }, methods: { show () { const viewer = this.$el.querySelector('.images').$viewer viewer.show() } } } </script> |
static
添加修饰器后,viewer
的建立只会在元素绑定指令时执行一次。
若是你肯定元素内的图片不会再发生变化,使用它能够避免没必要要的重建动做。
1 2 3 |
<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
这种方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<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> |
请参考viewer.js.
String
viewer
若是你须要避免重名冲突,能够像这样引入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<template> <div id="app"> <div class="images" v-vuer="{movable: false}"> <img v-for="src in images" :src="src" :key="src"> </div> <button type="button" @click="show">Show</button> </div> </template> <script> import 'viewerjs/dist/viewer.css' import Vuer from 'v-viewer' import Vue from 'vue' Vue.use(Vuer, {name: 'vuer'}) export default { data() { images: ['1.jpg', '2.jpg'] }, methods: { show () { const vuer = this.$el.querySelector('.images').$vuer vuer.show() } } } </script> |
Object
undefined
若是你须要修改viewer.js的全局默认配置项,能够像这样引入:
1 2 3 4 5 6 7 |
import Viewer from 'v-viewer' import Vue from 'vue' Vue.use(Viewer, { defaultOptions: { zIndex: 9999 } }) |
你还能够在任什么时候候像这样修改全局默认配置项:
1 2 3 4 5 6 |
import Viewer from 'v-viewer' import Vue from 'vue' Vue.use(Viewer) Viewer.setDefaults({ zIndexInline: 2017 }) |