"Vue实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)" 在Vue开发中,有时我们需要实现一个功能,即当弹出框(如Popover)显示后,用户点击页面的空白区域时,弹出框能够自动隐藏。针对这一需求,有三种不同的实现方法可供选择。下面我们将逐一探讨这三种方法。 首先,我们可以采用最基础的手动监听和判断的方法。在Vue组件中,我们可以监听`v-model`为`visible`的弹出框,例如Element UI的`el-popover`。当弹出框显示(`show`)时,我们添加一个全局的`click`事件监听器,而在隐藏(`hide`)时移除该监听器。以下是一个简单的示例: ```html <template> <el-popover v-model="visible" trigger="manual" placement="bottom" @show="show" @hide="hide"> <p>啦啦啦</p> <el-button slot="reference" type="primary" @click="visible = !visible">show</el-button> </el-popover> </template> <script> export default { data() { return { visible: false }; }, methods: { show() { document.addEventListener('click', this.hidePanel, false); }, hide() { document.removeEventListener('click', this.hidePanel, false); }, hidePanel(e) { if (!this.$refs.projectButton.contains(e.target)) { this.visible = false; this.hide(); } } } }; </script> ``` 在这个例子中,`show`方法会添加一个全局的`click`事件处理函数`hidePanel`,而`hidePanel`会检查点击事件的目标元素是否在`el-popover`内。如果不是,则关闭弹出框并移除监听器。 第二种方法可能涉及到自定义Vue指令。创建一个Vue指令可以让我们复用这段逻辑,提高代码的可维护性。不过,具体的指令实现没有在描述中给出,通常会涉及到Vue的`bind`、`update`、`unbind`钩子函数,以及类似的事件监听和目标元素判断。 第三种方法是使用遮罩层(mask)。这种方式通常是在弹出框上方添加一个全屏的半透明层,监听遮罩层的点击事件来关闭弹出框。当弹出框显示时,同时显示遮罩层,点击遮罩层则隐藏两者。遮罩层的CSS样式需要设置合适的层级和透明度,确保不影响用户体验。这种方式在很多UI框架中都有现成的实现,如Element UI的`el-dialog`组件,它有一个`append-to-body`属性,配合遮罩层可以达到类似的效果。 这三种方法各有优缺点。基础的手动监听法简单易懂,但可能需要在多个地方重复代码;自定义指令提高了代码复用性,但需要对Vue指令有一定了解;而遮罩层方案则适用于那些需要全局响应的场景,但可能会引入额外的DOM元素和样式调整。开发者可以根据实际项目需求和团队技术水平选择合适的方法。
![](https://csdnimg.cn/release/download_crawler_static/12933526/bg1.jpg)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 7
- 资源: 909
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- BSC关键绩效财务与客户指标详解
- 绘制企业战略地图:从财务到客户价值的六步法
- BSC关键绩效指标详解:财务与运营效率评估
- 手持移动数据终端:常见问题与WIFI设置指南
- 平衡计分卡(BSC):绩效管理与战略实施工具
- ESP8266智能家居控制系统设计与实现
- ESP8266在智能家居中的应用——网络家电控制系统
- BSC:平衡计分卡在绩效管理与信息技术中的应用
- 手持移动数据终端:常见问题与解决办法
- BSC模板:四大领域关键绩效指标详解(财务、客户、运营与成长)
- BSC:从绩效考核到计算机网络的关键概念
- BSC模板:四大维度关键绩效指标详解与预算达成分析
- 平衡计分卡(BSC):绩效考核与战略实施工具
- K-means聚类算法详解及其优缺点
- 平衡计分卡(BSC):从绩效考核到战略实施
- BSC:平衡计分卡与计算机网络中的应用
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)