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代码
Dec 26 Javascript
jQuery中阻止冒泡事件的方法介绍
Apr 12 Javascript
实例分析javascript中的call()和apply()方法
Nov 28 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
详解js跨域原理以及2种解决方案
Dec 09 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
Jun 21 Javascript
javascript将list转换成树状结构的实例
Sep 08 Javascript
JavaScript之创意时钟项目(实例讲解)
Oct 23 Javascript
详解Angular6 热加载配置方案
Aug 18 Javascript
浅析JS中什么是自定义react数据验证组件
Oct 19 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
Oct 23 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
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
python顺序执行多个py文件的方法
2019/06/29 Python
python实现小世界网络生成
2019/11/21 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
党员干部廉洁承诺书
2014/05/28 职场文书
驳回起诉裁定书
2015/05/19 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android