vue图片预览放大,缩小,旋转等功能,用 v-viewer来实现,还有他的api

2023-11-06

前言:

        推荐一款特别优秀的插件,viewerjs ,他可以实现图片预览功能,点击图片实现弹框操作图片的效果,点我进入GitHub地址

实现效果:

这里说先下实现步骤:

步骤一:安装,注意这里是 v-viewer

npm install v-viewer --save

 百度网盘地址:

(温馨提示:如果npm的内容不能用,就可以下载这两个文件,然后把调用方法里面的地址改成本地地址就行)

1、v-viewer.js

2、viewer.css

链接:https://pan.baidu.com/s/1ehGb6zDMQMxbKO4O6Q_NGg   提取码:07x6 
 

步骤二:在 main.js 中配置或者在使用的页面配置,我这里是在使用的页面配置

调用方法一:在使用的页面配置的(和下面的main.js二选一)

import Vue from 'vue';
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'
Vue.use(Viewer);

 Viewer.setDefaults({
      'inline':false,//启用 inline 模式
      'button':true, //右上角按钮
      "navbar": false, //底部缩略图
      "title": true, //当前图片标题
      "toolbar": true, //底部工具栏
      "tooltip": true, //显示缩放百分比
      "movable": true, //是否可以移动
      "zoomable": true, //是否可以缩放
      "rotatable": true, //是否可旋转
      "scalable": true, //是否可翻转
      "transition": true, //使用 CSS3 过度
      "fullscreen": true, //播放时是否全屏
      "keyboard": true, //是否支持键盘
      "url": "data-source",
      ready: function (e) {
        console.log(e.type,'组件以初始化');
      },
      show: function (e) {
        console.log(e.type,'图片显示开始');
      },
      shown: function (e) {
        console.log(e.type,'图片显示结束');
      },
      hide: function (e) {
        console.log(e.type,'图片隐藏完成');
      },
      hidden: function (e) {
        console.log(e.type,'图片隐藏结束');
      },
      view: function (e) {
        console.log(e.type,'视图开始');
      },
      viewed: function (e) {
        console.log(e.type,'视图结束');
      },
      zoom: function (e) {
        console.log(e.type,'图片缩放开始');
      },
      zoomed: function (e) {
        console.log(e.type,'图片缩放结束');
      },
      defaultOptions: {
        zIndex: 9999
      },
    });

调用方法二:在main.js中:

//引入图片查看器
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'

Vue.use(Viewer, {
  defaultOptions: {
    zIndex: 9999
  }
})

步骤三:我们封装的 imgView.vue,注意,我这里是因为从外面给组件里传来的路径是个字符串,所以,我用watch监听给他加了个字符串转array的方法

<template>
    <viewer :images="images">
        <img v-for="item in images" :src="item.src" :key="item.index" height="100">
    </viewer>
</template>


<script>
  import Vue from 'vue';
  import Viewer from 'v-viewer'
  import 'viewerjs/dist/viewer.css'
  Vue.use(Viewer);
  Viewer.setDefaults({
      'inline':false,//启用 inline 模式
      'button':true, //右上角按钮
      "navbar": false, //底部缩略图
      "title": true, //当前图片标题
      "toolbar": true, //底部工具栏
      "tooltip": true, //显示缩放百分比
      "movable": true, //是否可以移动
      "zoomable": true, //是否可以缩放
      "rotatable": true, //是否可旋转
      "scalable": true, //是否可翻转
      "transition": true, //使用 CSS3 过度
      "fullscreen": true, //播放时是否全屏
      "keyboard": true, //是否支持键盘
      "url": "data-source",
      ready: function (e) {
        console.log(e.type,'组件以初始化');
      },
      show: function (e) {
        console.log(e.type,'图片显示开始');
      },
      shown: function (e) {
        console.log(e.type,'图片显示结束');
      },
      hide: function (e) {
        console.log(e.type,'图片隐藏完成');
      },
      hidden: function (e) {
        console.log(e.type,'图片隐藏结束');
      },
      view: function (e) {
        console.log(e.type,'视图开始');
      },
      viewed: function (e) {
        console.log(e.type,'视图结束');
      },
      zoom: function (e) {
        console.log(e.type,'图片缩放开始');
      },
      zoomed: function (e) {
        console.log(e.type,'图片缩放结束');
      }
    });

export default {
  props: {
    imgUrl:String,//预览传进来的图片地址,这里因为项目中已经定型了,所以传一个string进来,然后手动转 array
  },
  watch: {
    //传来的图片地址
    imgUrl(val){
      this.changeArr(val);
    }
  },
  data () {
    return {
      isShow:false,//是否展示预览弹框
      images:[
          // {src:'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3272199364,3404297250&fm=26&gp=0.jpg',index:1},
          // {src:'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3267295166,2381808815&fm=26&gp=0.jpg',index:2},
          // {src:'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3429654663,2972188411&fm=26&gp=0.jpg',index:3},
          // {src:'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3597323878,2962972725&fm=26&gp=0.jpg',index:4},
        ]
    };
  },

  components: {},

  computed: {},

  created() {},

  mounted() {
    this.changeArr(this.imgUrl);
  },

  methods: {
    /**转格式 */
    changeArr(url){
      if(url == undefined){
        return;
      }
      let str = {
        src : url,
        index : 1,
      }
      let arr = [];
          arr.push(str);
      this.images = arr;
    }
  },

}

</script>
<style lang='less' scoped>

</style>

步骤四:在父组件调用

//我这里的item是一个 : https:...的图片路径
<imgview class="imgOfKinds" :imgUrl='item'></imgview>

到这里步骤就完了,我们下面说下他的api

此外:

       官网入口git源码入口

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue图片预览放大,缩小,旋转等功能,用 v-viewer来实现,还有他的api 的相关文章

  • OpenCV读取摄像头图像并实时显示

    我们直接上代码吧 import numpy as np import cv2 cap cv2 VideoCapture 0 0 选择笔记本电脑自带参数 1 为USB外置摄像头 print cap get 3 cap get 4 查看当前捕获

随机推荐

  • [ 常用工具篇 ] 渗透神器 whatweb 安装使用详解

    博主介绍 博主介绍 大家好 我是 PowerShell 很高兴认识大家 主攻领域 渗透领域 数据通信 通讯安全 web安全 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 文末有彩蛋 作者水平有限 欢
  • 境界的彼方_lduoj_bfs宽搜

    Description wyy是一个著名动画 境界的彼方 的男主 此时他非常的慌张 因为女主栗山未来进入了境界的彼方内部 并且花费了大量的血量去拯救wyy wyy此时也进入了境界的彼方 他妈给了他一张地图去寻找境界的彼方的核心去拯救女主 现
  • JavaScript的Math对象基本用法

    Math对象的基本用法 1 Math 对象用于执行数学任务 Math是一个内置对象 不需要创建 可以直接使用 2 Math对象常用API Math PI 返回圆周率3 1415926 Math ceil x
  • Acwing-顺时针打印矩阵

    顺时针定义好四个方向 按题目要求为右下左上 首先往右走 走到不能走为止 再往下走 走到不能走为止 再往左走 一直顺时针转圈的方式走 直到走满n m步 什么是不能走的情况 要么走出边界了 要么走的格子已经走过了 就这两种情况 class So
  • redis cluster 集群 安装 配置 详解

    Redis 集群是一个提供在多个Redis间节点间共享数据的程序集 redis3 0以前 只支持主从同步的 如果主的挂了 写入就成问题了 3 0出来后就可以很好帮我们解决这个问题 目前redis 3 0还不稳定 如果要用在生产环境中 要慎重
  • max 3485 使用方法详解

    芯片管脚介绍 1 1 1号引脚为RO 通常与MCU UART控制器的RX相连接 用于接收对端数据 1 2 2号引脚为RE RE对RO起控制作用 RE为低电平 RO可接收数据 RE为高电平时 RO不接收数据 1 3 3号引脚为DE DE对 D
  • C++ 开源协程库 libco——原理及应用

    1 导论 使用 C 来编写高性能的网络服务器程序 从来都不是件很容易的事情 在没有应用任何网络框架 从 epoll kqueue 直接码起的时候尤其如此 即便使用 libevent libev这样事件驱动的网络框架去构建你的服务 程序结构依
  • oracle数据库小结

    运用sqlplus连接数据库 sqlplus as sysdba 以系统用户 sqlplus username password 以普通用户登录 若忘记用户密码 则可以先以系统用户登录 然后运用alter user 用户名 identifi
  • abp执行mysql语句_ABP的Core2.0使用mysql数据,在使用linq语句报错了

    System InvalidOperationException HResult 0x80131509Message An exception occurred while reading a database value for prop
  • Android移动开发-使用OpenGL来绘制3D纹理图的实现

    OpenGL 全写Open Graphics Library 是指定义了一个跨编程语言 跨平台的编程接口规格的专业的图形程序接口 它用于三维图像 二维的亦可 是一个功能强大 调用方便的底层图形库 OpenGL是行业领域中最为广泛接纳的 2D
  • 『HTML&CSS』选择器(一)

    前面我们说过 CSS一共分为两大块 选择器和声明块 本篇博客主要对选择器进行一些简单的介绍 元素选择器 我们前面使用的都是元素选择器 通过元素选择器可以选择页面中的所有指定元素 语法 元素名 标签名 代码演示
  • 深度学习:Opencv的BlobfromImage如何工作

    深度学习 Opencv的BlobfromImage如何工作 1 原理 1 2 均值减法是什么 1 3 cv2 dnn BlogFromImage 2 源码 参考 想要从深度神经网络获取正确的预测 首先需要预处理数据 在深度学习 图像分类中
  • vue入门者uni-app开发之---入坑

    vue入门者uni app开发之 入坑 前言 起步 项目结构 开始开发 举例登陆全局保持状态 退出登陆 前言 作为一个刚入门vue的前端 我们公司主要运营公众号网页 之前一直用的jq 发现用户体验差的一匹 后来公司决定将前端技术栈定为vue
  • js基础面试题

    一 值类型与引用类型 1 js如何判断数据类型 值类型 javascript存储数据两个区域 栈 堆 栈 通常空间是固定 堆通常空间是动态的分配 js值类型 名称与值都存储在栈中 var a 15 值类型 var b a 把a的值赋值给 b
  • arm芯片厂家排名_国产芯片目前至少有10种,其中有3种,达到了世界顶尖水平

    说起来 中国芯的发展史称得上是一部磨难史 因为技术 设备 人才等都被西方国家封锁 就是为了让中国这个大市场巨额进口芯片 但这些年 中国的企业也没有闲着 可以说把世界上的主流的芯片架构尝试了个遍 就是为了找出一台适合自己发展的路来 目前国内的
  • 9款超级实用的网页设计工具,快来看看有没有你用过的

    随着网络时代的快速发展 游戏 购物 音乐 影视和社交网站的兴起都表明了网页设计的重要性 网页设计工具作为网页设计师的生产工具 自然要选择好的 让我们分享9个高质量的网页设计工具 让您的设计效率悄然提高 即时设计 即时设计是一款免费的在线 U
  • 如何选择LDO (LDO的关键指标及定义)

    1 LDO选型关键指标及定义 1 1 输入电压范围 LDO的输入电压范围决定了最低的可用输入电源电压 指标可能提供宽的输入电压范围 最小的输入电压VIN必须大于VOUT VDO 需要注意 这与器件Datasheet中所给出的输入电压最小值无
  • 风格迁移:一文梳理经典方法发展脉络及原理:Gram矩阵、WCT、WCT2

    风格迁移 一文梳理经典方法发展脉络及原理 1 Image Style Transfer Using Convolutional Neural Networks Gram矩阵 CVPR2016 1 1 概述 1 2 方法 2 Deep Pho
  • 代码重定位

    1 程序段介绍 参见博客 C语言程序段的定义 实际应用分析 2 什么是代码重定位 代码重定位就是将代码搬运到链接地址处 实际在操作时就是将代码复制一份到链接地址处 我们把代码下载到设备的Flash中 然后代码运行却要求另一个地址 于是我们就
  • vue图片预览放大,缩小,旋转等功能,用 v-viewer来实现,还有他的api

    前言 推荐一款特别优秀的插件 viewerjs 他可以实现图片预览功能 点击图片实现弹框操作图片的效果 点我进入GitHub地址 实现效果 这里说先下实现步骤 步骤一 安装 注意这里是 v viewer npm install v view