1.首先先在项目中下载viewerjs插件

npm install viewerjs

2.在页面中引入

import Viewer from 'v-viewer';
import 'viewerjs/dist/viewer.css';

3.在vue3中的使用 例:

效果图:

<template>
  <div ref="image">
    <img
      :src="item"
      alt=""
      class="image"
      @click="getOnclick"
      :data-original="`${item}`"
      v-for="item in imageList"
    />
  </div>
</template>

<script setup>
import Viewer from "viewerjs";
import "viewerjs/dist/viewer.css";
import { reactive, ref, onMounted, nextTick } from "vue";
let imageList = reactive([
  "https://cdn.uviewui.com/uview/swiper/1.jpg",
  "https://cdn.uviewui.com/uview/swiper/swiper1.png",
  "https://cdn.uviewui.com/uview/swiper/swiper2.png",
  "https://cdn.uviewui.com/uview/swiper/swiper3.png",
]);
const image = ref(null);
const getOnclick = () => {
  const viewer = new Viewer(image.value, {
    url: "data-original",
    show: function () {
      viewer.update();
    },
  // 相关配置项,详情见下面
  });
};
</script>

<style scoped>
.image {
  width: 400px;
  height: 200px;
  cursor: pointer;
  display: block;
  margin-top: 20px;
}
</style>

参数解释如下:

  • image.value:这是一个在Vue 3中使用的ref对象,表示组件模板中的<div ref="image">元素。ref对象的.value属性包含了实际的DOM元素。
  • { url: "data-original", show: function() { viewer.update(); } }:这是配置对象,用于设置Viewer的行为。其中,url: "data-original"指定了要显示的图片URL的属性名为"data-original",即在<img>标签中使用:data-original绑定的值。
  • show: function() { viewer.update(); }:这是show事件的回调函数,当viewer显示时会调用该函数,这里的逻辑是通过调用viewer.update()方法来更新Viewer的状态。

配置参数

如果要更改全局默认选项,可以使用view . setdefaults(选项)

参数名称参数类型默认值说明
initialViewIndexNumber0定义用于查看的图像的初始索引
inlineBooleanfalse支持 inline mode
buttonBooleantrue是否显示查看图片时右上角的关闭按钮
navbarBoolean / Numbertrue是否显示底部导航栏
0 或者 false :不显示
1 或者 true :显示
:当屏幕宽度大于768px时显示
:当屏幕宽度大于992px时显示
:当屏幕宽度大于1200px时显示
titleBoolean / Number /
Function / Array
true或者 false 时不显示
1或者true或者function或者array时显示
:当屏幕宽度大于768px时显示
:当屏幕宽度大于992px时显示
:当屏幕宽度大于1200px时显示
function 在函数体内返回标题
array 第一个参数表示可见性(0-4) 第二个参数就是标题
toolbarBoolean / Number / Objecttrue标题栏是否显示和布局
或者 false 时不显示
1或者true或者时显示
:当屏幕宽度大于768px时显示
:当屏幕宽度大于992px时显示
:当屏幕宽度大于1200px时显示
Object : Object类型详解
tooltipBooleantrue放大或缩小时显示的百分比的文字提示
true : 显示
false : 不显示
movableBooleantrue是否可以拖动图片
zoomableBooleantrue是否可以缩放图片
rotatableBooleantrue是否可以旋转图片
scalableBooleantrue是否可以缩放图片
transitionBooleantrue为一些特殊元素启用CSS3转换。
fullscreenBooleantrue允许全屏播放
keyboardBooleantrue启用键盘支持
backdropBoolean / Stringtrue启用 modal 为false的时候不支持点击背景关闭
loadingBooleantrue加载图片的时候的loading图标
loopBooleantrue是否可以循环查看图片
intervalNumber5000定义图片查看器的最小的宽度
minWidthNumber200定义图片查看器的最小的高度
minHeightNumber100播放图片时 距离下一张图片的间隔时间
zoomRatioNumber0.1利用鼠标滚轮缩放图片时的比例
minZoomRatioNumber0.01缩小图片的最小比例
maxZoomRatioNumber100放大图片的放大比例
zIndexNumber2015定义查看器的CSS z-index值 modal 模式下
zIndexInlineNumber0定义查看器的CSS z-index值 inline 模式下
urlString / Functionsrc原始图像URL
如果是一个字符串,应该图像元素的属性之一
如果是一个函数,应该返回一个有效的图像URL
containerElement / Stringbody将查看器置于modal模式的容器
只有在 inline为 false的时候才可以使用
filterFunctionnull过滤图像以便查看(如果图像是可见的,应该返回true)
toggleOnDblclickBooleantrue当你放大或者缩小图片时 双击还原
readyFunctionnull当查看图片时被触发的函数 只会触发一次
showFunctionnull当查看图片时被触发的函数 每次查看都会触发
shownFunctionnull当查看图片时被触发的函数 每次查看都会触发 在show之后
hideFunctionnull当关闭图片查看器时被触发的函数 每次关闭都会触发
hiddenFunctionnull当关闭图片查看器时被触发的函数 每次关闭都会触发 在hide之后
viewFunctionnull当查看图片时被触发的函数 每次查看都会触发 在shown之后
viewedFunctionnull当查看图片时被触发的函数 每次查看都会触发 在view之后
zoomFunctionnull在图片缩放时触发
zoomedFunctionnull在图片缩放时触发 在 zoom之后

toolbar Object详解

key值列表: "zoomIn", "zoomOut", "oneToOne", "reset", "prev", "play", "next", "rotateLeft", "rotateRight", "flipHorizontal", "flipVertical"

key值名称说明
zoomIn放大图片的按钮
zoomOut缩小图片的按钮
reset重置图片大小的按钮
prev查看上一张图片的按钮
next查看上一张图片的按钮
play播放图片的按钮
rotateLeft向左旋转图片的按钮
rotateRight向右旋转图片的按钮
flipHorizontal图片左右翻转的按钮
flipVertical图片上下翻转的按钮

{key:number|Boolean} 显示或者隐藏对应key的按钮 为Number的时候为可见性
{key: String } 自定义按钮的大小
{ key: Function } 自定义按钮点击的处理
{ key: { show: Boolean | Number, size: String, click: Function } 自定义按钮的每个属性

size的取值范围: small medium default large

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐