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 相关文章推荐
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 Javascript
javascript放大镜效果的简单实现
Dec 09 Javascript
JS实现距离上次刷新已过多少秒示例
May 23 Javascript
jquery动态添加删除一行数据示例
Jun 12 Javascript
实现音乐播放器的代码(html5+css3+jquery)
Aug 04 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
Dec 03 Javascript
BootStrap表单宽度设置方法
Mar 10 Javascript
关于Vue的路由权限管理的示例代码
Mar 06 Javascript
JS实现左边列表移到到右边列表功能
Mar 28 Javascript
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
Vue3 Composition API的使用简介
Mar 29 Vue.js
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+MySQL的聊天室设计
2006/10/09 PHP
php中处理模拟rewrite 效果
2006/12/09 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
vue项目实战总结篇
2018/02/11 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
python 图片验证码代码分享
2012/07/04 Python
Python中的集合类型知识讲解
2015/08/19 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
python Tornado框架的使用示例
2020/10/19 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
python实现计算器简易版
2020/12/17 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
web字体加载方案优化小结
2019/11/29 HTML / CSS
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
一道SQL面试题
2012/12/31 面试题
信仰心得体会
2014/09/05 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
2014年招生工作总结
2014/11/26 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书