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中更改相关函数

相关文章
|
4月前
Vue2 指定尺寸内进行拖拽
Vue2 指定尺寸内进行拖拽
|
4月前
|
JavaScript API
Vue使用vue-3d-model组件预览3D三维文件、立体文件,支持旋转、自动播放
Vue使用vue-3d-model组件预览3D三维文件、立体文件,支持旋转、自动播放
|
存储 缓存 前端开发
Antd Upload + React-Cropper 实现图片自定义区域剪裁并上传功能
通过Upload组件结合react-Cropper实现图片的裁剪上传组件封装,剖析antd-img-crop源码实现的逻辑,对自己封装的组件进行进一步优化,改造!
4463 0
Antd Upload + React-Cropper 实现图片自定义区域剪裁并上传功能
|
1月前
|
JavaScript
在Vue项目中vue-quill-editor的安装与使用【详细图解+过程+包含图片的缩放拖拽】
文章详细介绍了在Vue项目中安装和使用`vue-quill-editor`的步骤,包括如何通过npm安装、局部挂载、在Vue页面中引入和配置使用。同时,还提供了如何实现图片的缩放和拖拽功能的进阶教程,涉及到安装额外的插件`quill-image-drop-module`和`quill-image-resize-module`,以及对Webpack配置的调整。最后,文章还提供了实际效果展示和一些后续可能的拓展功能,如上传视频和将图片上传到服务器等。
在Vue项目中vue-quill-editor的安装与使用【详细图解+过程+包含图片的缩放拖拽】
|
2月前
|
前端开发 JavaScript
vue 自定义气泡弹窗 $pop (内含css晃动动画shake制作)
vue 自定义气泡弹窗 $pop (内含css晃动动画shake制作)
37 0
|
4月前
|
JavaScript 定位技术 API
OpenLayers入门-第二篇、在vue3中使用elementplus制作图层控件,图层切换,显示隐藏,图层排序
OpenLayers入门-第二篇、在vue3中使用elementplus制作图层控件,图层切换,显示隐藏,图层排序
101 1
|
4月前
|
移动开发 小程序 API
uniapp中uview组件库中丰富的LineProgress 线形进度条 的使用方法
uniapp中uview组件库中丰富的LineProgress 线形进度条 的使用方法
349 1
|
9月前
|
JavaScript 前端开发
js拖拽框选插件
js拖拽框选插件
57 0
|
10月前
|
JavaScript 前端开发 UED
vue实现一个鼠标滑动预览视频封面组件(精灵图版本)
vue实现一个鼠标滑动预览视频封面组件(精灵图版本)
270 0
|
JavaScript 容器
【Vue3 插件篇】GSAP 动画库与 图片预览插件
【Vue3 插件篇】GSAP 动画库与 图片预览插件
952 0