vue里实现点击显示模态框点击自身以外隐藏模态框

前阵子做到一个需求是要点击某个按钮弹出个模态框,然后点击模态框的时候模态框还在,点击模态框外部任意区域隐藏模态框,我网上找了下关于这方面的博客很少(也可能是我找的方式不对,哈哈)
首先自己先做好一个模态框的结构,然后给这个结构赋予类名,用一个自定义变量控制这个模态框显示与隐藏

	<div v-if='showBox'>
		<div class='show-parent'>
			<div class="shard">
	          <div class="show-inner">
	            <div>申请次数</div>
	            <div>1天内</div>
	            <div>7天内</div>
	          </div>
	        </div>
		</div>
	</div>

	<span class='show' @click='show'></span>
	export default {
		data() {
			return {
				showBox: false
			}
		},
		methods: {
			show() {
				// 点击的时候显示模态框
				this.showBox = true	
			},
			// 在这里在定义个方法用来监听页面的click事件
			hideBox() {
				document.addEventListener('click', (e) => {
						// 如果当前点击的这个对象是这个模态框的话
					if((e.target).closest('.show-parent')) {
					//  那么这个模态框还是显示的
						this.showBox = true
					} else if(!(e.target).closest('.show')) {
					// 如果当前点击的这个对象是这个show按钮以外的对象,那么这个模态框就隐藏
						this.showBox = false
					}
				})
			}	
		},
		mounted() {
			// 页面加载的时候调用监听
			this.hideBox()
		}
	}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值