Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】


Posted in Javascript onNovember 04, 2019

本文实例讲述了Vue图片浏览组件v-viewer用法。分享给大家供大家参考,具体如下:

v-viewer

用于图片浏览的Vue组件,支持旋转、缩放、翻转等操作,基于viewer.js。

从0.x迁移

你需要做的唯一改动就是手动引入样式文件:

import 'viewerjs/dist/viewer.css'

安装

使用npm命令安装

npm install v-viewer

使用

引入v-viewer及必需的css样式,并使用Vue.use()注册插件,之后即可使用。

<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自动处理。

你可以像这样传入配置项: v-viewer="{inline: true}"

如果有必要,可以先用选择器查找到目标元素,然后可以用el.$viewer来获取viewer实例。

<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的创建只会在元素绑定指令时执行一次。

如果你确定元素内的图片不会再发生变化,使用它可以避免不必要的重建动作。

<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>

配置项 & 方法

请参考viewer.js .

插件配置项

name

  • Type: String
  • Default: viewer

如果你需要避免重名冲突,可以像这样引入:

<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>

defaultOptions

  • Type: Object
  • Default: undefined

如果你需要修改viewer.js的全局默认配置项,可以像这样引入:

import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer, {
 defaultOptions: {
  zIndex: 9999
 }
})

你还可以在任何时候像这样修改全局默认配置项:

import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
Viewer.setDefaults({
 zIndexInline: 2017
})

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
关于跨站脚本攻击问题
Dec 22 Javascript
alert和confirm功能介绍
May 21 Javascript
重写document.write实现无阻塞加载js广告(补充)
Dec 12 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
Sep 05 Javascript
jQuery事件对象总结
Oct 17 Javascript
jQuery Ztree行政地区树状展示(点击加载)
Nov 09 Javascript
微信小程序用户拒绝授权的处理方法详解
Sep 20 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
Sep 21 Javascript
JavaScript Window浏览器对象模型原理解析
May 30 Javascript
Vue父子之间值传递的实例教程
Jul 02 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 #Javascript
vue中使用GraphQL的实例代码
Nov 04 #Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 #Javascript
JS+CSS实现随机点名(实例代码)
Nov 04 #Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 #Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 #Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
Nov 04 #jQuery
You might like
多重?l件?合查?(一)
2006/10/09 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
python 如何在测试中使用 Mock
2021/03/01 Python
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
主要的Ajax框架都有什么
2013/11/14 面试题
国际商务系学生个人的自我评价
2013/11/26 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
教师研修随笔感言
2014/01/23 职场文书
迎国庆横幅标语
2014/10/08 职场文书
英语辞职信范文
2015/02/28 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
文艺节目主持词
2015/07/06 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python