vue中实现点击空白区域关闭弹窗的两种方法


Posted in Vue.js onDecember 30, 2020

1. 第一种做法

首页在外层容器里面取一个名字为main,即ref="main",当bankSwitch为true的时候,弹窗出现

<div class="selectedBorder" ref="main">
	<div class="bankItem" v-if="bankSwitch == true">
		你好我是弹窗里面的内容部分
 	</div>
</div>

所触发的事件如下:

首页,先在全局创建一个点击事件:bodyCloseMenus

事件作用:当点击main容器的时候(this.refs.main && !this.refs.main.contains(e.target)),并且弹窗出现的时候(self.bankSwitch == true),点击空白区域将弹窗关闭(self.bankSwitch = false)

最后,在页面注销前,将点击事件给移除

mounted() {
  document.addEventListener("click", this.bodyCloseMenus);
 },
 methods:{
 bodyCloseMenus(e) {
   let self = this;
   if (this.$refs.main && !this.$refs.main.contains(e.target)) {
    if (self.bankSwitch == true){
     self.bankSwitch = false;
    }
   }
  },
beforeDestroy() {
  document.removeEventListener("click", this.bodyCloseMenus);
 },

2.第二种做法

首页在外层容器里面定义一个阻止冒泡事件,即@click.stop,当bankSwitch为true的时候,弹窗出现

<div class="selectedBorder" @click.stop>
	<div class="bankItem" v-if="bankSwitch == true">
		你好我是弹窗里面的内容部分
 	</div>
</div>

所触发的事件如下:

首页,先在全局创建一个点击事件:bodyCloseMenus

事件作用:当弹窗出现的时候(self.bankSwitch == true),点击空白区域将弹窗关闭(self.bankSwitch = false)

最后,在页面注销前,将点击事件给移除

mounted() {
  document.addEventListener("click", this.bodyCloseMenus);
 },
 methods:{
 bodyCloseMenus(e) {
   let self = this;
    if (self.bankSwitch == true){
     self.bankSwitch = false;
    }
  },
beforeDestroy() {
  document.removeEventListener("click", this.bodyCloseMenus);
 },

以上就是vue中实现点击空白区域关闭弹窗的两种方法的详细内容,更多关于vue 点击空白区域关闭弹窗的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
Vue 的 v-model用法实例
Nov 23 Vue.js
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
vue实现简单数据双向绑定
Apr 28 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
Vue + iView实现Excel上传功能的完整代码
Jun 22 Vue.js
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 Vue.js
Vue+Flask实现图片传输功能
Apr 01 Vue.js
vue的项目如何打包上线
Apr 13 Vue.js
vue里使用create, mounted调用方法
Apr 26 Vue.js
vue postcss-px2rem 自适应布局
May 15 Vue.js
梳理一下vue中的生命周期
Dec 30 #Vue.js
Vue实现简易购物车页面
Dec 30 #Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 #Vue.js
vue+element UI实现树形表格
Dec 29 #Vue.js
vue实现树状表格效果
Dec 29 #Vue.js
vue实现图书管理系统
Dec 29 #Vue.js
Vue实现随机验证码功能
Dec 29 #Vue.js
You might like
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Python内置函数locals和globals对比
2020/04/28 Python
python 进程池pool使用详解
2020/10/15 Python
python中常用的数据结构介绍
2021/01/12 Python
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
力学专业求职信
2014/07/23 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
Python编写nmap扫描工具
2021/07/21 Python