elementUI 图片 image 组件,实现点击遮罩层关闭图片预览

场景

使用 elementUI 的 image 图片组件,开启图片预览功能(preview-src-list)。
在这里插入图片描述
组件库只提供了两种方式关闭图片预览:
源码位置:/node_modules/element-ui/packages/image/src/image-viewer.vue

  1. 点击右上角关闭icon
    点击右上角关闭icon
  2. 按 ESC 键
    按 ESC 键
    除此之外,用户点击遮罩层关闭预览大图也是习惯性的常规操作,但 elementUI 并没有支持。

实现起来也很简单,两种思路:

  1. 把 hide 事件绑定在遮罩层 dom
  2. 直接调用 关闭按钮 上的 click 事件

获取遮罩层dom很容易,hide 事件就相对麻烦了,需要获取 vue实例子组件 image-viewer,再访问子组件的method。所以我使用了第二种方法。

直接上代码

<template>
...
	<el-image
	:preview-src-list="item.isPreview ? previewSrcList : []"
	  class="block-img"
	  :src="item.url"
	  fit="cover"
	  @click.stop="handleClickItem"
	></el-image>
...
</template>

<script>
...
	handleClickItem(){
		this.$nextTick(()=>{
			// 获取遮罩层dom
			let domImageMask = document.querySelector(".el-image-viewer__mask");
			 if (!domImageMask) {
		 	  return;
		 	}
			domImageMask.addEventListener("click", () => {
			 	  // 点击遮罩层时调用关闭按钮的 click 事件
			  	 document.querySelector(".el-image-viewer__close").click();
			});
		})
	}
...
</script>
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值