Vue2项目使用v-viewer插件实现图片预览、切换、缩放、旋转...

简介: 这篇文章介绍了在Vue 2项目中如何通过`v-viewer`插件实现图片的预览、切换、缩放、旋转等功能,并提供了插件的安装、配置和使用方法。

①安装插件:yarn add v-viewer

②在要使用的页面中局部引入或者在main.js中全局引入并配置插件:

import Vue from 'vue'
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'

Vue.use(Viewer)
Viewer.setDefaults({
  Options: {
    inline: true, // 是否启用inline模式
    button: true, // 是否显示右上角关闭按钮
    navbar: true, // 是否显示缩略图底部导航栏
    title: true, // 是否显示当前图片标题,默认显示alt属性内容和尺寸
    toolbar: true, // 是否显示工具栏
    tooltip: true, // 放大或缩小图片时,是否显示缩放百分比,默认true
    fullscreen: true, // 播放时是否全屏,默认true
    loading: true, // 加载图片时是否显示loading图标,默认true
    loop: true, // 是否可以循环查看图片,默认true
    movable: true, // 是否可以拖动图片,默认true
    zoomable: true, // 是否可以缩放图片,默认true
    rotatable: true, // 是否可以旋转图片,默认true
    scalable: true, // 是否可以翻转图片,默认true
    toggleOnDblclick: true, // 放大或缩小图片时,是否可以双击还原,默认true
    transition: true, // 使用 CSS3 过度,默认true
    keyboard: true, // 是否支持键盘,默认true
    zoomRatio: 0.1, // 鼠标滚动时的缩放比例,默认0.1
    minZoomRatio: 0.01, // 最小缩放比例,默认0.01
    maxZoomRatio: 100, // 最大缩放比例,默认100
    url: 'data-source' // 设置大图片的 url
  }
})

③使用指令或组件的形式进行图片展示:

<-- 使用指令 -->
<div class="m-image" v-viewer>
    <img
        v-for="(image, index) in images"
        :key="index"
        :src="image.url"
        :alt="image.name"
        class="u-image" />
</div>

data () {
    return {
        images: []
    }
}
<style lang="less" scoped>
.m-image {
  min-width: 1200px;
}
.u-image {
  max-width: 400px;
  cursor: pointer;
}
</style>
<-- 使用组件 -->
<viewer :images="images">
    <img
        v-for="(image, index) in images"
        :key="index"
        :src="image.url"
        :alt="image.name"
        class="u-image" />
</viewer>

data () {
    return {
        images: []
    }
}
<style lang="less" scoped>
.u-pic {
  max-width: 400px;
  cursor: pointer;
}
</style>

实际需求中可能需要在和用户的交互过程中实时更新**images数组,如果使用:this.images[1] = {...} 则不会正常更新。具体原因是由于Vue**无法检测到通过索引直接设置数组项进行更新,可以通过以下两种方式进行解决:

1.使用this.$set(...)对数组进行赋值(推荐):

    this.$set(this.images, 1, {…})

2.使用this.$forceUpdate()来强制更新(不建议)

④若想更改预览组件样式,可在node_modules/viewerjs/dist/里面进行相关更改重写

viewer.css中更改相关CSS样式

viewer.js中更改相关函数

相关文章
|
JavaScript
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
3199 1
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
|
数据格式
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
本文介绍了在ElementUI和ElementPlus中使用`el-table`组件实现合并行功能的技巧,包括多列合并和单列合并的方法,并提供了相应的示例代码和运行效果。
10131 46
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
|
JavaScript
Vue2日期选择器插件(vue-datepicker-local)
这是一个基于 Vue 的日期选择器组件库,支持年份、月份、日期和时间的选择,并且均可进行范围选择。用户可以自定义日期格式与组件样式。该示例展示了如何配置组件以限制可选日期范围,并提供了相应的代码实现。
2277 0
Vue2日期选择器插件(vue-datepicker-local)
|
前端开发 JavaScript
Vue2瀑布流图片展示(Waterfall)
这篇文章介绍了如何在Vue 3框架中实现瀑布流图片展示组件,提供了两种实现方式:一种使用CSS的`column-count`和`column-gap`属性,另一种使用JavaScript计算图片位置,以实现图片在多列中的动态分布。
854 2
Vue2瀑布流图片展示(Waterfall)
|
移动开发 资源调度 JavaScript
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
这篇文章介绍了在Vue移动端网页中使用`pdfh5`和`vue-pdf`两个插件来实现PDF文件的预览,包括滚动查看、缩放、添加水印、分页加载、跳转指定页数等功能。
9285 1
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
|
JavaScript
基于Vue2或Vue3实现任意上下左右拖拽悬浮的元素,且配置为自定义的全局指令
这篇文章介绍了如何在Vue 2或Vue 3项目中实现一个自定义的全局指令`v-dragSwitch`,用于创建可以任意方向拖拽并悬浮的元素,同时包含边界处理的逻辑。
3987 2
基于Vue2或Vue3实现任意上下左右拖拽悬浮的元素,且配置为自定义的全局指令
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
|
JavaScript
Vue2中子组件调用父组件的方法,父组件调用子组件的方法,父子组件互相传值和方法调用
Vue2中子组件调用父组件的方法,父组件调用子组件的方法,父子组件互相传值和方法调用
Vue2中子组件调用父组件的方法,父组件调用子组件的方法,父子组件互相传值和方法调用
|
开发框架 JavaScript 前端开发
在Vue前端界面中,几种数据表格的展示处理,以及表格编辑录入处理操作。
在Vue前端界面中,几种数据表格的展示处理,以及表格编辑录入处理操作。