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打开新窗口同时关闭旧窗口
Jan 16 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
jquery实现点击消失的代码
Mar 03 Javascript
对 jQuery 中 data 方法的误解分析
Jun 18 Javascript
jQuery中is()方法用法实例
Jan 06 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
Aug 30 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
Dec 06 Javascript
Angular自定义组件实现数据双向数据绑定的实例
Dec 11 Javascript
JS中获取 DOM 元素的绝对位置实例详解
Apr 23 Javascript
JavaScript 类的封装操作示例详解
May 16 Javascript
javascript canvas实现简易时钟例子
Sep 05 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
Terran兵种对照表
2020/03/14 星际争霸
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
js和as的稳定传值问题解决
2013/07/14 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
python杀死一个线程的方法
2015/09/06 Python
Python切片知识解析
2016/03/06 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
ASP.NET Core中的配置详解
2021/02/05 Python
css3 transform属性详解
2014/09/30 HTML / CSS
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
高级运动鞋:GREATS
2019/07/19 全球购物
市场开发计划书
2014/05/07 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
体育课外活动总结
2014/07/08 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
师德师风学习材料
2014/12/19 职场文书
加入学生会自荐书
2015/03/05 职场文书
企业法律事务工作总结
2015/08/11 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python