vue2中使用viewer.js的实现示例

 更新时间:2025年10月01日 09:21:50   作者:王阔阔  
本文主要介绍了vue2中使用viewer.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

先展示下实现效果

简单的图片放大缩小、切换上一张下一张、左右旋转可使用ElementUi中的el-image组件,但像上下左右镜像翻转el-image组件就无法满足,因此我这里使用到了viewer.js。

1. 安装插件

npm install v-viewer@1.7.4

2. main.js

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

Vue.use(Viewer);

3. 图片查看器组件

<template>
  <div class="pics-view" v-viewer="viewerOptions">
    <div
      class="pics-item"
      v-for="item in picsList"
      :key="item.title + item.url"
    >
      <h4 class="title" :title="item.title">{{ item.title }}</h4>
      <img :src="item.url" :alt="item.title" class="preview-img" />
    </div>
  </div>
</template>

<script>
export default {
  props: {
  	// 图片列表(title、url)
    picsList: {
      type: Array,
      default: () => [],
    },
  },
  data() {
    return {
      // 配置viewer.js的参数
      viewerOptions: {
        navbar: true,
        title: true,
        toolbar: {
          prev: true,
          next: true,
          zoomIn: true,
          zoomOut: true,
          rotateLeft: true,
          rotateRight: true,
          flipHorizontal: true,
          flipVertical: true,
          reset: true,
        },
        button: function () {
          const container = document.createElement("div");
          container.className = "viewer-toolbar-custom";

          // 上一张按钮
          const prevBtn = document.createElement("button");
          prevBtn.type = "button";
          prevBtn.className = "viewer-button viewer-prev";
          prevBtn.innerHTML = '<i class="el-icon-arrow-left"></i>';
          prevBtn.title = "上一张";
          container.appendChild(prevBtn);

          // 下一张按钮
          const nextBtn = document.createElement("button");
          nextBtn.type = "button";
          nextBtn.className = "viewer-button viewer-next";
          nextBtn.innerHTML = '<i class="el-icon-arrow-right"></i>';
          nextBtn.title = "下一张";
          container.appendChild(nextBtn);

          return container;
        },
        initialized: function (viewer) {
          // 绑定上一张事件
          const prevBtn = viewer.element.querySelector(".viewer-prev");
          prevBtn.addEventListener("click", () => viewer.prev());

          // 绑定下一张事件
          const nextBtn = viewer.element.querySelector(".viewer-next");
          nextBtn.addEventListener("click", () => viewer.next());
        },
      },
    };
  },
};
</script>

<style scoped lang="scss">
.pics-view {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;

  .pics-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 200px;

    .title {
      width: 100%;
      padding: 4px;
      background-color: #ccc;
      color: #fff;
      text-align: center;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }

    .preview-img {
      width: 100%;
      height: 100px;
      object-fit: contain;
      cursor: pointer;
      border: 1px solid #eee;
      border-radius: 4px;
      transition: all 0.3s;
      border: 1px solid #ccc;

      &:hover {
        border-color: #409eff;
      }
    }
  }
}
</style>

到此这篇关于vue2中使用viewer.js的实现示例的文章就介绍到这了,更多相关vue2使用viewer.js内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue页面首次载入优化的全过程

    Vue页面首次载入优化的全过程

    凡是做SPA的项目,特别是移动端的SAP项目,首屏加载速度必定是一个绕不过去的话题,下面这篇文章主要给大家介绍了关于Vue页面首次载入优化的相关资料,需要的朋友可以参考下
    2021-12-12
  • vue前端自适应布局实现教程(一步到位所有自适应)

    vue前端自适应布局实现教程(一步到位所有自适应)

    ​自适应布局是一种根据不同的设备屏幕分辨率进行布局的方式,它为不同的屏幕分辨率定义了不同的布局,下面这篇文章主要给大家介绍了关于vue前端自适应布局实现的相关资料,需要的朋友可以参考下
    2024-08-08
  • vue组件之全局注册和局部注册方式

    vue组件之全局注册和局部注册方式

    这篇文章主要介绍了vue组件之全局注册和局部注册方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue高性能列表GridList组件及实现思路详解

    Vue高性能列表GridList组件及实现思路详解

    这篇文章主要为大家介绍了Vue高性能列表GridList组件及实现思路详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • vue select组件的使用与禁用实现代码

    vue select组件的使用与禁用实现代码

    这篇文章主要介绍了vue--select组件的使用与禁用的实现代码,非常不错,具有参考借鉴价值 ,需要的朋友可以参考下
    2018-04-04
  • vue前端框架vueuse的useScroll函数使用源码分析

    vue前端框架vueuse的useScroll函数使用源码分析

    这篇文章主要为大家介绍了vueuse的useScroll函数源码分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • vue+elementUI的select下拉框回显为数字问题

    vue+elementUI的select下拉框回显为数字问题

    这篇文章主要介绍了vue+elementUI的select下拉框回显为数字问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Vue实战记录之登陆页面的实现

    Vue实战记录之登陆页面的实现

    最近学习过程中常碰到让用户登录注册这种,这篇文章主要给大家介绍了关于Vue实战记录之登陆页面实现的相关资料,需要的朋友可以参考下
    2021-06-06
  • ElementUI表单验证validate和validateField的使用及区别

    ElementUI表单验证validate和validateField的使用及区别

    Element-UI作为前端框架,最常使用到的就是表单验证,下面这篇文章主要给大家介绍了关于ElementUI表单验证validate和validateField的使用及区别,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • vue脚手架vue-cli的卸载与安装方式

    vue脚手架vue-cli的卸载与安装方式

    pm是nodejs的包管理和分发工具,它可以让javascript开发者能够更加轻松的共享代码和共用代码片段,下面这篇文章主要给大家介绍了关于vue脚手架vue-cli卸载与安装的相关资料,需要的朋友可以参考下
    2022-07-07

最新评论