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

Posted 明天也要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

效果:

以上是关于Element-ui中 使用图片查看器(el-image-viewer) 预览图片的主要内容,如果未能解决你的问题,请参考以下文章

vue2.x,element-ui 中上传图片组件(图片查看,已有图片渲染)

基于Vue和Element-UI自定义分组以及分组全选Select 选择器

基于Vue和Element-UI自定义分组以及分组全选Select 选择器

element-ui之级联选择器(Cascader) 全选 功能

解决element-ui动态加载级联选择器默认选中问题(Cascader)

Win 10中使用图片查看器