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

news2024/10/6 22:20:29

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:初始查看图片的索引

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

017—pandas 计算每名客户最低还款额日期

需求&#xff1a; 本需求是需要计算每名客户还够最低还款额的日期&#xff0c;第1个客户在 5 月 11 日这天累计入账1100元 大于 最低还款额1000元&#xff0c;故针对客户 1 所求日期为20210511。 字段说明&#xff1a; userid : 客户号 mini_amt&#xff1a;最低还款额 amou…

Liunx使用nginx和http搭建yum-server仓库

文章目录 1. yum-server的搭建方式2. nginx搭建yum-server仓库2.1. 安装配置nginx2.2 配置yum-server的rpm2.3. 同步yum源相关包2.3.1 rsync同步源3.3.1 reposync同步源 2.4. 配置客户端访问yum配置2.5. 验证测试 3. http服务搭建yum-server仓库3.1. 安装配置http3.2 配置yum-s…

ArcgisForJS如何实现添加含图片样式的点要素?

文章目录 0.引言1.加载底图2.获取点要素的坐标3.添加含图片样式的几何要素4.完整实现 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。本文在ArcGIS For JavaScript中使用Graphic对象来创建包含图片样式的点要素。 …

golang实现延迟队列(delay queue)

golang实现延迟队列 1 延迟队列&#xff1a;邮件提醒、订单自动取消 延迟队列&#xff1a;处理需要在未来某个特定时间执行的任务。这些任务被添加到队列中&#xff0c;并且指定了一个执行时间&#xff0c;只有达到指定的时间点时才能从队列中取出并执行。 应用场景&#xff1…

支付功能设计及实现思路

支付功能设计 主要包括&#xff1a;订单表&#xff0c;订单日志表&#xff0c;订单队列&#xff0c;定时任务。 主要考虑&#xff1a;事务性、幂等性、安全性。 表结构设计 订单表&#xff1a; 订单表&#xff0c;最主要的就是订单号、支付状态。 CREATE TABLE t_order (…

IOday1作业

1> 使用fgets统计给定文件的行数 2> 使用fputs和fgets完成两个文件的拷贝 3> 完成注册登录功能 做个小菜单&#xff0c;功能1是注册功能&#xff0c;输入注册账户和注册密码&#xff0c;将账户和密码写入文件中 功能2是登录功能&#xff0c;提示并输入登录账户和登录…

无人机设计技术,四旋翼无人机整机及控制系统技术浅谈

四旋翼无人机的飞行控制技术是无人机研究的重点之一。它使用直接力矩, 实现六自由度(位置与姿态)控制&#xff0c;具有多变量、非线性、强耦合和干扰敏感的特性。此外, 由于飞行过程中,微型飞行器同时受到多种物理效应的作用,还很容易受到气流等外部环境的干扰,模型准确性和传感…

LLM 模型融合实践指南:低成本构建高性能语言模型

编者按&#xff1a;随着大语言模型技术的快速发展&#xff0c;模型融合成为一种低成本但高性能的模型构建新途径。本文作者 Maxime Labonne 利用 mergekit 库探索了四种模型融合方法&#xff1a;SLERP、TIES、DARE和passthrough。通过配置示例和案例分析&#xff0c;作者详细阐…

一线城市打工人的大龄焦虑:都市容不下躯壳,老家容不下灵魂(含华为 OD 面试原题)

互联网的大龄焦虑 今天看到一个老生常谈的话题「大龄焦虑&#xff1a;都市容不下躯壳&#xff0c;老家容不下灵魂」。 现如今&#xff0c;内卷已不是互联网行业专属名称&#xff0c;早已渗透到一线城市中的各行各业。 但地域落差对职业的影响&#xff0c;互联网行业还是稳稳的位…

关于YOLOv5训练结果results.txt绘制对比图

目录 用两个results.txt在一幅图中画2条对比曲线 用一个results.txt在一幅图中画多条对比曲线&#xff1a; 用两个results.txt在一幅图中画2条对比曲线 # -*- coding:utf-8 -*- import matplotlib.pyplot as plt import numpy as npcolumn [epoch, train_GIOU_loss, train_o…

美国CFTC启用举报奖励机制!打击人工智能投资欺诈行为

最近几周&#xff0c;美国监管机构对欺诈者利用人工智能 (AI) 的说法来引诱投资者实施诈骗发出警告。掌握人工智能诈骗原始信息的个人可以匿名举报 &#xff0c;并有资格根据商品期货交易委员会 (CFTC) 和证券交易委员会 (SEC) 举报计划获得金钱奖励。CFTC 关于人工智能诈骗的咨…

Docker部署Halo容器并结合内网穿透实现公网访问本地个人博客

文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤&#xff1a;1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 本文主要介绍如何在CentOS 7系统使…

迷你世界制作甜甜圈

local R,r20,5--中心半径(内径与外径和的1/4)、扩充半径(高的一半) local x0,y0,z00,20,0--起点坐标 local d10000--单次遍历方块数 local id600--方块id local s,all,t-1,0,0--步骤、总方块数、循环 local demath.random(2,18)/2 local x,y,z0,0,0--当前坐标 local func…

毕业神刊!1区、CCF推荐SCI,最新26天录用!6天见刊

一手刊源 • 毕业快刊 春节一过&#xff0c;距离2024年上半年毕业的日子近在眼前&#xff0c;你的毕业论文已安排投稿了吗&#xff1f;时间着急的作者&#xff0c;不妨重点关注本期小编推荐的毕业快刊&#xff1a;无中科院预警记录&#xff0c;非三大出版社&#xff0c;指标情…

还在为选择办公软件而烦恼吗?不妨试试ONLYofficeV8.0

目录 一.优势一DOC 1.丰富的文字处理功能 2.按用户既定的规则编辑 3.使用AI助手 4.保持创意 5.深入分析文本 6.改善团队工作流程 7.轻松对比文档 8.扩展编辑功能 二.优势二sheet 1.数据分析 2.轻松实现精准计算 3.轻松分析数据 4.可视化呈现数据 5.增强团队协作…

通过盲注脚本复习sqllabs第46关 order by 注入

Less-46 从本关开始&#xff0c;我们开始学习 order by 相关注入的知识。本关的 sql 语句为$sql "SELECT * FROM users ORDER BY $id";尝试?sort1 desc或者 asc&#xff0c;显示结果不同&#xff0c;则表明可以注入。(升序 or 降序排列)从上述的 sql 语句中我们可以…

Netty-初体验

Netty 引入依赖服务端服务端处理读写业务的Handler客户端实现客户端handler Netty具备设计优雅、使⽤⽅便、性能强劲等优点&#xff0c; 引入依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>…

CVE-2024-0918 TEW-800MB RCE漏洞分析

漏洞描述 固件版本为1.0.1.0的TEW-800MB路由器存在命令注入漏洞。如果攻击者获得了web管理权限&#xff0c;他们可以将命令注入到httpd未知函数中的post请求参数DeviceURL中&#xff0c;从而获得shell权限。。 参考链接 TEW-800MB (notion.site)https://warp-desk-89d.notio…

盘点那些世界名校计算机专业采用的教材

清华、北大、MIT、CMU、斯坦福的学霸们在新学期里要学什么&#xff1f;今天我们来盘点一下那些世界名校计算机专业采用的教材。 书单目录 1.《深入理解计算机系统》&#xff08;原书第3版&#xff09;2. 《算法导论》&#xff08;原书第3版&#xff09;3. 《计算机程序的构造和…

【已解决】Zip压缩文件设置了密码怎么办?

Zip是一种常见的压缩格式文件&#xff0c;文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢&#xff1f;不清楚的小伙伴一起来看看吧。 想要打开带密码的Zip文件&#xff0c;我们需要用到适用于Zip格式的解压缩软件&#xff0c;比如WinRAR或者7-Zip软件都是可以的。…