图片预览插件viewer.js

下载

npm install viewerjs

原生引用

<link  href="/path/to/viewer.css" rel="stylesheet">
<script src="/path/to/viewer.js"></script>

option参数

名称类型默认值说明
inline 布尔值 false 启用 inline 模式
button 布尔值 true 显示右上角关闭按钮(jQuery 版本无效)
navbar 布尔值/整型 true 显示缩略图导航
title 布尔值/整型 true 显示当前图片的标题(现实 alt 属性及图片尺寸)
toolbar 布尔值/整型 true 显示工具栏
tooltip 布尔值 true 显示缩放百分比
movable 布尔值 true 图片是否可移动
zoomable 布尔值 true 图片是否可缩放
rotatable 布尔值 true 图片是否可旋转
scalable 布尔值 true 图片是否可翻转
transition 布尔值 true 使用 CSS3 过度
fullscreen 布尔值 true 播放时是否全屏
keyboard 布尔值 true 是否支持键盘
interval 整型 5000 播放间隔,单位为毫秒
zoomRatio 浮点型 0.1 鼠标滚动时的缩放比例
minZoomRatio 浮点型 0.01 最小缩放比例
maxZoomRatio 数字 100 最大缩放比例
zIndex 数字 2015 设置图片查看器 modal 模式时的 z-index
zIndexInline 数字 0 设置图片查看器 inline 模式时的 z-index
url 字符串/函数 src 设置大图片的 url

 data-original是大图的url,src是小图的url

var viewer = new Viewer(document.getElementById('image'), {url: 'data-original'})

<div>
  <img id="image" data-original="picture.jpg" src="picture.jpg" alt="Picture"> 
</div> 
<div> <ul id="images"> <li><img src="picture-1.jpg" alt="Picture 1"></li> <li><img src="picture-2.jpg" alt="Picture 2"></li> <li><img src="picture-3.jpg" alt="Picture 3"></li> </ul> </div>

 

import Viewer from 'viewerjs/dist/viewer.min.js';

  open(url: string | Array<string>, index?: number) {
    let image;
    if (typeof url === 'string') {
      image = new Image();
      image.src = url;
    } else if (url instanceof Array) {
      image = document.createElement('ul');
      url.forEach(src => {
        const li = document.createElement('li');
        image.appendChild(li);
        const img = new Image();
        img.src = src;
        li.appendChild(img);
      });
    } 
    const viewer = new Viewer(image, {
      hidden: function () { 
viewer.destroy();
}, // 摧毁容器,不摧毁会有些小bug
        title: false,
        toolbar: {
          zoomIn: { show: true, size: 'large' },
          zoomOut: { show: true, size: 'large' },
          oneToOne: { show: true, size: 'large' },
          reset: { show: true, size: 'large' },
          prev: { show: true, size: 'large' },
          next: { show: true, size: 'large' },
          rotateLeft: { show: true, size: 'large' },
          rotateRight: { show: true, size: 'large' },
          flipHorizontal: { show: true, size: 'large' },
          flipVertical: { show: true, size: 'large' },
        },
        transition: false,
        navbar: false,
    });
    viewer.show();
    if (!Util.isUndefinedOrNull(index)) {
      viewer.view(index); // 显示数组中指定下标的图片
    }
  }

 

posted @ 2023-09-06 14:25  litiyi  阅读(559)  评论(0编辑  收藏  举报