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) 预览图片
4199 1
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
|
数据格式
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
本文介绍了在ElementUI和ElementPlus中使用`el-table`组件实现合并行功能的技巧,包括多列合并和单列合并的方法,并提供了相应的示例代码和运行效果。
10749 46
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
|
移动开发 资源调度 JavaScript
Vue2使用触摸滑动插件(Swiper)
这篇文章介绍了在Vue 3框架中如何使用Swiper插件来创建不同类型的触摸滑动组件,包括轮播图、淡入淡出效果和走马灯效果,并提供了详细的配置选项和使用示例。
1500 1
Vue2使用触摸滑动插件(Swiper)
|
JavaScript 前端开发 UED
PDF在线预览实现:如何使用vue-pdf-embed实现前端PDF在线阅读
本文详细介绍了如何在Vue项目中使用vue-pdf-embed实现PDF文件的在线展示。从项目初始化、插件集成到高级功能的实现和部署优化,希望对你有所帮助。在实际项目中,灵活运用这些技术可以大大提升用户体验和项目质量。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
移动开发 资源调度 JavaScript
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
这篇文章介绍了在Vue移动端网页中使用`pdfh5`和`vue-pdf`两个插件来实现PDF文件的预览,包括滚动查看、缩放、添加水印、分页加载、跳转指定页数等功能。
11659 1
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
|
容器
Vue3图片(Image)
该图片预览组件提供丰富的功能,包括设置鼠标悬浮预览文本、图像描述、尺寸调整、适应容器模式等。支持单张或多张图片展示,具备旋转、缩放、镜像等功能,并可通过键盘或滚轮控制。组件允许自定义多项属性,如图像地址、宽度、高度、边框显示等,并兼容多种使用场景,如相册模式和循环切换。组件内部使用了 Vue3 的 `Spin` 和 `Space` 组件以及 `add` 函数辅助实现。
837 2
Vue3图片(Image)
|
前端开发 JavaScript
Vue2瀑布流图片展示(Waterfall)
这篇文章介绍了如何在Vue 3框架中实现瀑布流图片展示组件,提供了两种实现方式:一种使用CSS的`column-count`和`column-gap`属性,另一种使用JavaScript计算图片位置,以实现图片在多列中的动态分布。
1130 2
Vue2瀑布流图片展示(Waterfall)
|
JavaScript
ElementUI的el-dialog弹窗修改设置可拖拽可最大化
该方案通过自定义Vue指令实现ElementUI的`el-dialog`弹窗的拖拽和最大化功能。只需在`main.js`中引入并注册指令,然后在Vue组件中绑定指令即可。支持自定义参数控制是否允许最大化和拖拽,并提供最大化后的回调函数。具体使用方法详见示例代码。
3103 0
ElementUI的el-dialog弹窗修改设置可拖拽可最大化
|
JavaScript
Vue.js 中父组件调用子组件的方法
Vue.js 中父组件调用子组件的方法
1330 2
|
JavaScript 前端开发
【vue】 vue2 canvas实现在图片上选点,画区域并将 坐标传递给后端
【vue】 vue2 canvas实现在图片上选点,画区域并将 坐标传递给后端
1010 0