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 相关文章推荐
javascript中的prototype属性使用说明(函数功能扩展)
Aug 16 Javascript
javascript:window.open弹出窗口的位置问题
Mar 18 Javascript
jquery form 隐藏的input 选择
Apr 29 Javascript
javascript 对象数组根据对象object key的值排序
Mar 09 Javascript
原生js结合html5制作简易的双色子游戏
Mar 30 Javascript
Angularjs中UI Router全攻略
Jan 29 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
Dec 08 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
Feb 10 Javascript
js中的reduce()函数讲解
Jan 18 Javascript
vue写h5页面的方法总结
Feb 12 Javascript
详解基于Vue的支持数据双向绑定的select组件
Sep 02 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 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
用Socket发送电子邮件
2006/10/09 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
nodejs模块学习之connect解析
2017/07/05 NodeJs
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
Python常见数据结构详解
2014/07/24 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
python看某个模块的版本方法
2018/10/16 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
Python 复平面绘图实例
2019/11/21 Python
银行实习生的自我评价
2013/12/09 职场文书
联谊活动策划书
2014/01/26 职场文书
知识竞赛活动方案
2014/02/18 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
JavaScript获取URL参数的方法分享
2022/04/07 Javascript