vue 点击遮罩层功能区以外的地方关闭遮罩层

本文介绍了三种在HTML页面中关闭遮罩层的方法。方法一是通过判断点击事件是否在指定元素内来关闭;方法二是阻止事件冒泡实现关闭;方法三是使用@click.stop修饰符直接阻止事件传播。每种方法都结合了Vue.js的实例代码进行说明,适用于前端开发中处理弹窗遮罩层的交互需求。
摘要由CSDN通过智能技术生成

在这里插入图片描述
点击红色框外的遮罩层区域关闭遮罩层
方法一:
关键点:@click=“close($event)” ref=“msk”

<div v-if="popup.winning" class="coupon-popup" @touchmove.prevent @click="close($event)">
	<div class="popup-content" ref="msk">
		<img class="coupon-page" :src="popup.couponpage" alt="" />
		<div class="popup-title">
			<img src="../../../static/luckdraw/popuptitle.png" alt="" />
		</div>
		<div class="popup-text">
			<div class="coupon-content">{{ popup.couponContent }}</div>
			<div class="coupon-name">{{ popup.couponName }}</div>
		</div>
		<div class="popup-prompt">{{ popup.couponprompt }}</div>
		<div class="popup-btn" @click="couponTrue">
			<img src="../../../static/luckdraw/popupbtn.png" alt="" />
		</div>
	</div>
</div>

popup: {
	winning: false, //控制弹窗显隐
}
close(ev){
	if (!this.$refs.msk.contains(ev.target)) {
      this.popup.winning=false
  }
}

.coupon-popup {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(000, 000, 000, 0.8);
}
.popup-content {
  width: 5.8rem;
  height: 6.18rem;
  position: absolute;
  top: 3.35rem;
  left: 50%;
  margin-left: -2.9rem;
}

方法二:阻止事件冒泡

<div v-if="popup.winning" class="coupon-popup" @touchmove.prevent @click="close">
	<div class="popup-content" @click="closes($event)">
		<img class="coupon-page" :src="popup.couponpage" alt="" />
		<div class="popup-title">
			<img src="../../../static/luckdraw/popuptitle.png" alt="" />
		</div>
		<div class="popup-text">
			<div class="coupon-content">{{ popup.couponContent }}</div>
			<div class="coupon-name">{{ popup.couponName }}</div>
		</div>
		<div class="popup-prompt">{{ popup.couponprompt }}</div>
		<div class="popup-btn" @click="couponTrue">
			<img src="../../../static/luckdraw/popupbtn.png" alt="" />
		</div>
	</div>
</div>
//点击弹窗蒙层关闭弹窗
close() {
    this.popup.winning=false
},
closes(event){
    event.stopPropagation()
    event.cancelBubble = true
}

方法三:最简便 @click.stop

<div v-if="popup.winning" class="coupon-popup" @touchmove.prevent @click="close">
	<div class="popup-content" @click.stop>
		<img class="coupon-page" :src="popup.couponpage" alt="" />
		<div class="popup-title">
			<img src="../../../static/luckdraw/popuptitle.png" alt="" />
		</div>
		<div class="popup-text">
			<div class="coupon-content">{{ popup.couponContent }}</div>
			<div class="coupon-name">{{ popup.couponName }}</div>
		</div>
		<div class="popup-prompt">{{ popup.couponprompt }}</div>
		<div class="popup-btn" @click="couponTrue">
			<img src="../../../static/luckdraw/popupbtn.png" alt="" />
		</div>
	</div>
</div>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值