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 相关文章推荐
自动检查并替换文本框内的字符
Jun 30 Javascript
JavaScript入门之事件、cookie、定时等
Oct 21 Javascript
jquery实现控制表格行高亮实例
Jun 05 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 Javascript
jQuery针对各类元素操作基础教程
Aug 29 Javascript
JavaScript中的Number数字类型学习笔记
May 26 Javascript
jQuery自定义插件详解及实例代码
Dec 29 Javascript
解决npm管理员身份install时出现权限的问题
Mar 16 Javascript
详解JS实现系统登录页的登录和验证
Apr 29 Javascript
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
JavaScript 获取滚动条位置并将页面滑动到锚点
Feb 08 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
js正文内容高亮效果的实现方法
2013/06/30 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
python方法生成txt标签文件的实例代码
2018/05/10 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
简单谈谈python基本数据类型
2018/09/26 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
自荐信格式的六要素
2013/09/21 职场文书
写自荐信要注意什么
2013/12/26 职场文书
主题酒店策划书
2014/01/28 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
会计人员岗位职责
2015/02/03 职场文书
保护校园环境倡议书
2015/04/28 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL