Element-ui中 使用图片查看器(el-image-viewer) 预览图片

简介: Element-ui中 使用图片查看器(el-image-viewer) 预览图片

1. 简介

注意:本文 Element-ui 版本 2.11.1及以上

Element-ui 官方文档中有大图预览相关组件 传送门:Element-ui 图片组件,但我们不想通过使用 Image 组件的方式(先默认显示预览图片,再通过点击图片实现大图预览查看),又想实现直接预览大图的功能是否可行呢?答案是当然可以。

2. 图片查看器(el-image-viewer) 的使用

翻看了 Image 的源码,发现实现大图预览的是一个小组件 image-viewer。

打开看看它的 props,如下:

props: {
    urlList: {
      type: Array,
      default: () => []
    },
    zIndex: {
      type: Number,
      default: 2000
    },
    onSwitch: {
      type: Function,
      default: () => {}
    },
    onClose: {
      type: Function,
      default: () => {}
    }
  }

我们需要用到的就只有 urlList(存放图片链接)与 onClose(关闭查看器)两个属性。

  • 在需要使用到的 vue 文件中引入组件
components: {
  'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer')
},
  • 在 template 中使用组件
<el-image-viewer v-if="imgViewerVisible" :on-close="closeImgViewer" :url-list="imgList" />
  • 显示大图预览后发现鼠标上下滚动放大缩小图片时,遮罩后面的页面如果有滚动条,也会跟着滚动,体验感不好;
    解决如下:可以写两个方法,在打开预览后调用下面方法禁止页面滚动,关闭预览后打开页面滚动。
// 停止页面滚动
stopMove () {
  const m = (e) => { e.preventDefault() };
  document.body.style.overflow = 'hidden';
  document.addEventListener("touchmove", m, false); // 禁止页面滑动
},
// 开启页面滚动
move () {
  const m = (e) => { e.preventDefault() };
  document.body.style.overflow = 'auto';
  document.removeEventListener("touchmove", m, true);
}

3. 完整代码

<template>
  <div class="wrap">
    <div class="content" @click="showImgViewer"></div>
    <el-image-viewer 
      v-if="imgViewerVisible" 
      :on-close="closeImgViewer" 
      :url-list="imgList" />
  </div>
</template>
<script>
export default {
  data() {
    return {
      imgViewerVisible:false,
      imgList:[
        'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
        'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
      ]
    };
  },
  components:{ 
    'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer')
  },
  methods: {
    showImgViewer(){
      this.imgViewerVisible = true;
      const m = (e) => { e.preventDefault() };
      document.body.style.overflow = 'hidden';
      document.addEventListener("touchmove", m, false); // 禁止页面滑动
    },
    closeImgViewer(){
      this.imgViewerVisible = false;
      const m = (e) => { e.preventDefault() };
      document.body.style.overflow = 'auto';
      document.removeEventListener("touchmove", m, true);
    },
  }
};
</script>
<style lang="scss" scoped>
.content{
  width: 100%;
  height: 1500px;
  background: pink;
}
</style>

效果:

2020062310470442.png


相关文章
|
5天前
|
异构计算 Python
30行代码实现一个带UI界面的图片背景移除工具:并附带web网页
人工智能技术正处于蓬勃发展中,移除图片背景的方法众多,涵盖了各式各样的实现途径和模型。然而,这些方法往往在安装和配置环境方面稍显复杂。今天,介绍一种极其简便的方法——大约30行代码,就能实现这一功能。虽然相比之下可能稍显简单,但对于不太苛刻的需求来说,这种方法颇为方便实用。
|
25天前
|
机器学习/深度学习 算法 数据可视化
【深度学习实战】基于深度学习的图片风格快速迁移软件(Python源码+UI界面)
【深度学习实战】基于深度学习的图片风格快速迁移软件(Python源码+UI界面)
|
程序员 Python
图片转素描风格处理软件详解(Python实现,含UI界面及代码)
图片转素描风格处理软件详解(Python实现,含UI界面及代码)
146 0
|
存储 XML 缓存
Android 天气APP(十三)仿微信弹窗(右上角加号点击弹窗效果)、自定义背景图片、UI优化调整
Android 天气APP(十三)仿微信弹窗(右上角加号点击弹窗效果)、自定义背景图片、UI优化调整
166 0
Android 天气APP(十三)仿微信弹窗(右上角加号点击弹窗效果)、自定义背景图片、UI优化调整
|
缓存 算法 Android开发
UI界面的图片需要主动回收
牙叔教程 简单易懂
118 0
|
JavaScript
Element UI - el-image 图片初始化加载爬坑
Element UI - el-image 图片初始化加载爬坑
2141 0
Element UI - el-image 图片初始化加载爬坑
|
搜索推荐 图形学 UED
听说C站还有人缺图片素材?一篇跟UI设计师要来的——图片网址整理大全 让你从此远离素材荒!(强烈建议收藏)
目录 📢前言 😀听说C站还有人缺图片素材?一篇跟UI设计师求来的——图片网址整理大全 让你从此远离素材荒! 🍓图标设计必备网 🍈优质图库必备网 🍍设计神器 🌽综合性设计网站 🍏插画必备 🍒字体网站 🍑UI设计师 🥥10个设计师常用免费商用图片网站: 🥝制作自己的网格纸 🥑配色神器网站 🍉设计师的视野必备 🥭常用素材网站: 🍈配色类 🍇原型设计类 🍋导航类 🍊服装类 🍅时尚街拍 🍆纹理材质 🍌配色网站 🥔其他更多 🍤综合系列精品网址 👥总结
听说C站还有人缺图片素材?一篇跟UI设计师要来的——图片网址整理大全 让你从此远离素材荒!(强烈建议收藏)
element-ui往表格插入图片、按钮、弹窗都可以
element-ui往表格插入图片、按钮、弹窗都可以
834 0
element-ui往表格插入图片、按钮、弹窗都可以