Vue图片浏览组件v-viewer,支持旋转、缩放、翻转等操作

Vue图片浏览组件v-viewer,支持旋转、缩放、翻转等操作

  • 之前用过viewer.js,算是市场上用过最全面的图片预览。
  • v-viewer,是基于viewer.js的一个图片浏览的Vue组件,支持旋转、缩放、翻转等操作。

基本使用

安装:npm安装

npm install v-viewer

目录结构如下
在这里插入图片描述

注册并使用

引入v-viewer及必需的css样式,并使用Vue.use()注册插件,之后即可使用。

  • import 'viewerjs/dist/viewer.css':引入必需的css样式,详见上目录。
  • import VueViewer from 'v-viewer':引入v-viewer
  • Vue.use(VueViewer) :使用Vue.use()注册插件
<template>
  <div>
    <viewer :images="images">
    <!-- style="width: 100px; height: 100px" 这是指定缩略图大小-->
      <img v-for="(src,index) in images" :key="index" :src="src" style="width: 100px; height: 100px" @click="show(index)">
    </viewer>
    <!-- api -->
    <button type="button" @click="show">Click to show</button>
  </div>
</template>
<script>
  import 'viewerjs/dist/viewer.css'
  import VueViewer from 'v-viewer'
  import Vue from 'vue'
  Vue.use(VueViewer)
  export default {
    data() {
      return {
        images: [
          "https://picsum.photos/200/200",
          "https://picsum.photos/300/200",
          "https://picsum.photos/250/200"
        ]
      };
    },
    methods: {
      show(index) {
        this.$viewerApi({
          images: this.images,
          options: {
          	initialViewIndex: index,
       	  },
        })
      },
    },
  }
</script>

预览时,如何打开指定图片

主要取决于this.$viewerApi所传参数对象:ViewerApiOptions
this.$viewerApi({
  images: this.images,
  options: {
  	initialViewIndex: index,
  },
})
ViewerApiOptions分析
export interface ViewerApiOptions {
   images: Array<string | object>
   options?: ViewerJs.Options
 }
  • images:图片列表(必填
  • options:参考ViewerJs.Options的参数👇(非必填,如果包含,它的类型必须是 ViewerJs.Options
ViewerJs.Options分析
export interface Options {
    backdrop?: boolean | string; // 是否显示遮罩层,以及遮罩层的颜色或图片
    button?: boolean; // 是否显示右上角的关闭按钮
    className?: string; // 给查看器容器添加自定义类名
    container?: string | HTMLElement; // 查看器的容器,可以是选择器字符串或HTMLElement对象
    filter?: Function; // 图片过滤函数,用于筛选需要显示的图片
    fullscreen?: boolean | FullscreenOptions; // 是否启用全屏模式及全屏选项
    focus?: boolean; // 是否在查看时将焦点锁定在查看器上
    hidden?(event: CustomEvent): void; // 查看器隐藏后的回调函数
    hide?(event: CustomEvent): void; // 查看器开始隐藏时的回调函数
    inheritedAttributes?: string[]; // 定义哪些图片属性应被查看器继承
    initialCoverage?: number; // 图片初始覆盖率,决定图片初始显示的大小
    initialViewIndex?: number; // 初始查看图片的索引
    inline?: boolean; // 是否以内联方式(而不是模态方式)显示查看器
    interval?: number; // 幻灯片播放时每张图片的停留时间
    keyboard?: boolean; // 是否允许键盘控制
    loading?: boolean; // 是否显示加载提示
    loop?: boolean; // 在最后一张图片后是否循环到第一张图片
    maxZoomRatio?: number; // 允许的最大缩放比例
    minHeight?: number; // 图片的最小高度
    minWidth?: number; // 图片的最小宽度
    minZoomRatio?: number; // 允许的最小缩放比例
    movable?: boolean; // 图片是否可拖动
    move?(event: MoveEvent): void; // 图片移动时的回调函数
    moved?(event: MovedEvent): void; // 图片移动结束时的回调函数
    navbar?: boolean | Visibility; // 是否显示导航栏
    play?(event: CustomEvent): void; // 点击播放按钮时的回调函数
    ready?(event: CustomEvent): void; // 查看器准备就绪时的回调函数
    rotatable?: boolean; // 图片是否可旋转
    rotate?(event: RotateEvent): void; // 图片旋转时的回调函数
    rotated?(event: RotatedEvent): void; // 图片旋转结束时的回调函数
    scalable?: boolean; // 图片是否可缩放
    scale?(event: ScaleEvent): void; // 图片缩放时的回调函数
    scaled?(event: ScaledEvent): void; // 图片缩放结束时的回调函数
    show?(event: CustomEvent): void; // 查看器开始显示时的回调函数
    shown?(event: CustomEvent): void; // 查看器显示后的回调函数
    slideOnTouch?: boolean; // 是否允许触摸滑动切换图片
    stop?(event: CustomEvent): void; // 停止播放时的回调函数
    title?: boolean | Visibility | Function | [Visibility, Function]; // 图片标题的显示方式和内容
    toggleOnDblclick?: boolean; // 是否允许双击切换图片的缩放状态
    toolbar?: boolean | Visibility | ToolbarOptions; // 工具栏的显示方式和选项
    tooltip?: boolean; // 是否显示工具提示
    transition?: boolean; // 是否使用 CSS 过渡效果
    url?: string | Function; // 定义如何从图片元素获取大图的 URL
    view?(event: CustomEvent): void; // 开始查看某张图片时的回调函数
    viewed?(event: CustomEvent): void; // 查看某张图片结束时的回调函数
    zIndex?: number; // 查看器的 z-index 值
    zIndexInline?: number; // 内联查看器的 z-index 值
    zoom?(event: ZoomEvent): void; // 图片缩放时的回调函数
    zoomOnTouch?: boolean; // 是否允许触摸缩放图片
    zoomOnWheel?: boolean; // 是否允许鼠标滚轮缩放图片
    zoomRatio?: number; // 缩放比例的步进值
    zoomable?: boolean; // 图片是否可缩放
    zoomed?(event: ZoomedEvent): void; // 图片缩放结束时的回调函数
}

字段较多,并未一一进行尝试实践,可自行学习,这里initialViewIndex决定初始索引。

  • initialViewIndex:初始查看图片的索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/402669.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈TCP协议的可靠含义和三次握手

这里不过多阐述计算机网络的体系结构&#xff0c;本文主要是想阐述三次握手和可靠连接之间的联系。TCP协议全称传输控制协议&#xff08;Transmission Cotrol Protocol&#xff09;。 1、TCP协议运行在哪一层 TCP运行在运输层。 2、TCP协议的可靠是什么意思 步入主题&…

MLflow【部署 01】MLflow官网Quick Start实操(一篇学会部署使用MLflow)

一篇学会部署使用MLflow 1.版本及环境2.官方步骤Step-1 Get MLflowStep-2 Start a Tracking ServerStep 3 - Train a model and prepare metadata for loggingStep 4 - Log the model and its metadata to MLflowStep 5 - Load the model as a Python Function (pyfunc) and us…

Hackme 1

信息收集 Nmap部分 存活扫描&#xff1a; └─# nmap -sn 192.168.10.1/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-02-20 15:00 CST Nmap scan report for 192.168.10.1 (192.168.10.1) Host is up (0.00012s latency). MAC Address: 00:50:56:C0:00:08 (VMwar…

matlab代码--基于matlabLDPC-和积译码系统

LDPC编码 一个码长为n、信息位个数为k的线性分组码&#xff08;n,k&#xff09;可以由一个生成矩阵 来定义&#xff0c;信息序列 通过G被映射到码字XS.G。线性分组码也可以由一个校验矩阵 来描述。所以码字均满足 。校验矩阵的每一行表示一个校验约束 &#xff0c;其中所有的非…

C++入门学习(三十二)二维数组定义方式

一维数组类似于一条“线”&#xff0c;而二维数组类似于一个“面”&#xff0c;二维数组也更像一个表格&#xff0c;由我们在“表格”中查询数据。 1、先定义数组&#xff0c;后赋值 int arr[2][3]; #include <iostream> using namespace std;int main() { int arr…

分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测

分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测 目录 分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab…

day6 2/22

1> 将互斥机制的代码实现重新敲一遍 #include<myhead.h> int num520; pthread_mutex_t mutex;//创建互斥锁 void*task1(void*arg) {pthread_mutex_lock(&mutex);sleep(3);num;printf("%d\n",num);pthread_mutex_unlock(&mutex);pthread_exit(NULL)…

2024/2/22

P8680 [蓝桥杯 2019 省 B] 特别数的和 题目描述 小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff08;不包括前导 00&#xff09;&#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40&#xff0c;共28 个&#xff0c;他们的和是574。 请问&#xff0c;在…

【Git】:标签功能

标签功能 一.标签操作二.推送远程标签 标签 tag &#xff0c;可以简单的理解为是对某次commit的⼀个标识&#xff0c;相当于起了⼀个别名。例如&#xff0c;在项⽬发布某个版本的时候&#xff0c;针对最后⼀次commit起⼀个v1.0这样的标签来标识⾥程碑的意义。这有什么⽤呢&…

CRF算法(Conditional Random Fields)揭秘

CRF基本介绍 在机器学习中&#xff0c;建模线性序列结构的方法&#xff0c;除了HMM算法&#xff0c;另一个重要的模型就是CRF。HMM为了降低模型复杂性&#xff0c;对观测变量做了独立假设(即隐状态之间有相关性&#xff0c;而观测变量之间没有相关性)&#xff0c;这在某种程度…

五种多目标优化算法(MSSA、MOJS、NSWOA、MOPSO、MOAHA)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MSSA 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0c…

C2-1.4(L1,L2)正则化

C2-1.4&#xff08;L1,L2&#xff09;正则化 参考书籍 1 正则化的概念 正则化(Regularization) 是机器学习中对原始损失函数引入额外信息&#xff0c;以便防止过拟合和提高模型泛化性能的一类方法的统称。也就是目标函数变成了原始损失函数额外项&#xff0c;常用的额外项一般…

Python实现简易小钢琴

Python实现简易小钢琴 使用Python和内带的Tkinter库、winsound 模块实现的简单小钢琴。 Tkinter库和winsound模块不需要额外安装就可以使用&#xff0c;因为它们是Python的标准库之一&#xff0c;已经随着Python的安装包一起提供。标准库是Python官方提供的一组核心模块和工具…

MFC 多文档程序的基本编程

下载了一个openGL mfc的多文档程序,以此来学习mfc多文档模式的编程; 它每次新建一个文档,会在窗口绘制一个三角形、一个矩形;如果没有了图形刷新一下; 先看一下为什么每次打开新文档会绘制图形; 生成工程之后主要有5个类,比单文档程序多了一个子框架类; 可以打开多个…

C++:STL简介

1. 什么是STL STL(standard template libaray- 标准模板库 ) &#xff1a; 是 C 标准库的重要组成部分 &#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架 。 2. STL的版本 3. STL的六大组件 4.STL的缺陷 1. STL库的更新太慢了。这…

计算机设计大赛 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】时间复杂度 | 空间复杂度

目录 1 -> 算法效率 1.1 -> 如何衡量一个算法的好坏&#xff1f; 1.2 -> 算法的复杂度 2 -> 时间复杂度 2.1 -> 时间复杂度的概念 2.2 -> 大O的渐进表示法 2.3 -> 常见时间复杂度计算 3 -> 空间复杂度 4 -> 常见复杂度对比 1 -> 算法效…

第2部分 基础篇 第2章 隐私计算技术简介(1)

2.6.1. 隐私计算技术解决什么问题&#xff1f; 本聪老师&#xff1a;关于隐私计算&#xff0c;我想先问大家一个问题&#xff1a;隐私计算技术能够解决什么问题&#xff1f; 小明&#xff1a;是不是应该是保护用户的隐私。 本聪老师&#xff1a;可以这么说&#xff0c;但是怎…

一 些有代表性的相位解包裹算法

Itoh首先给出了传统解包裹算法的数学描述!。传统的相位解包裹操作是通过对空间相邻点相位值的比较来完成的。根据抽样定理&#xff0c;如果相邻采样点的相位差不超过z&#xff0c;则对应的相位解包裹处理是非常简单的&#xff0c;理论上以某点为起始点沿某一路径对包裹相位的差…

如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 …