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 相关文章推荐
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
js制作简易年历完整实例
Jan 28 Javascript
Underscore.js常用方法总结
Feb 28 Javascript
Java中Timer的用法详解
Oct 21 Javascript
JS JSOP跨域请求实例详解
Jul 04 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
Oct 24 Javascript
jQuery中$.grep() 过滤函数 数组过滤
Nov 22 Javascript
数组Array的一些方法(总结)
Feb 17 Javascript
基于Vue制作组织架构树组件
Dec 06 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
Jul 09 Javascript
js中Object.defineProperty()方法的不详解
Jul 09 Javascript
vue项目打包之后背景样式丢失的解决方案
Jan 17 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
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
PHP生成树的方法
2015/07/28 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
vue实现路由切换改变title功能
2019/05/28 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python selenium firefox使用详解
2019/02/26 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
基于python实现学生信息管理系统
2019/11/22 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
Python中私有属性的定义方式
2020/03/05 Python
浅析Python 多行匹配模式
2020/07/24 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
建筑个人求职信范文
2014/01/25 职场文书
九年级数学教学反思
2014/02/02 职场文书
项目施工员岗位职责
2014/03/09 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
机械机修工岗位职责
2014/08/03 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
监理中标通知书
2015/04/16 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
MySQL基于索引的压力测试的实现
2021/11/07 MySQL
MySQL三种方式实现递归查询
2022/04/18 MySQL