VUE实现弹出框 点击空白页弹框消失

这篇具有很好参考价值的文章主要介绍了VUE实现弹出框 点击空白页弹框消失。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

VUE实现弹出框 点击空白页弹框消失

可以在Vue中实现弹出框然后通过点击空白页面来让弹窗隐藏。具体实现如下:

  1. 创建弹出框组件

在Vue中创建一个弹出框组件,用来呈现弹出框的内容和样式。该组件应该接受两个 props,一个是 show,表示弹出框是否显示,另一个是 onClose,表示弹出框的关闭函数。

<template>
  <div v-if="show" class="modal">
    <div class="modal-body">
      <slot></slot>
      <button @click="onClose">关闭</button>
    </div>
  </div>
</template>

<script>
export default {
  props: ['show', 'onClose']
}
</script>
  1. 创建父组件

在父组件中使用上述弹出框组件,同时在空白区域给document绑定点击事件,在点击非弹出框区域时关闭弹出框。

<template>
  <div class="page">
    <button @click="showModal = true">弹出框</button>
    <modal :show="showModal" :onClose="closeModal">
      <p>这是弹出框的内容</p>
    </modal>
  </div>
</template>

<script>
import Modal from './Modal.vue'

export default {
  components: {
    Modal
  },

  data() {
    return {
      showModal: false
    }
  },

  created() {
    document.addEventListener('click', this.onClickOutside);
  },

  beforeDestroy() {
    document.removeEventListener('click', this.onClickOutside);
  },

  methods: {
    onClickOutside(event) {
      if (this.showModal && !this.$el.contains(event.target)) {
        this.closeModal();
      }
    },

    closeModal() {
      this.showModal = false
    }
  }
}
</script>

在父组件中,我们使用 v-if 指令来判断弹出框是否显示。同时,我们在 created 钩子函数中给 document 绑定了一个点击事件,用来监听页面的点击事件。在 onClickOutside 方法中,如果当前弹出框显示,并且点击的元素不是弹出框内的元素,则关闭弹出框。在 closeModal 方法中,我们将 showModal 设置为 false,用来隐藏弹出框组件。

  1. 添加样式

最后,我们为弹出框和父组件添加一些简单的样式。

<style>
.page {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.modal {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1000;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.5);
}

.modal-body {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  padding: 20px;
}
</style>

以上是Vue实现弹出框点击空白页弹框消失的全部代码实现。文章来源地址https://www.toymoban.com/news/detail-618611.html

到了这里,关于VUE实现弹出框 点击空白页弹框消失的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • ios swift alert 自定义弹框 点击半透明部分弹框消失
  • vue实现弹出框内嵌页面展示,添加tab切换展示实时加载

    vue实现弹出框内嵌页面展示,添加tab切换展示实时加载

    最近做业务的时候,发现产品的原型图上有一个弹出框,上面包含了两个窗口要进行切换。 每个窗口都有分页列表展示、搜索、添加和删除,感觉就是两个完整的页面,如果全写在一个页面会很麻烦,还可能会出现一系列的问题,后期改起来比较麻烦,所以我就准备分开来写

    2024年02月16日
    浏览(7)
  • 前端echarts地图3D效果+点击地域出现弹出框可以有确定取消操作

    前端echarts地图3D效果+点击地域出现弹出框可以有确定取消操作

    效果图如下:    代码如下: 运行3D项目要安装一下echarts-gl依赖: 引入的jiangsu文件要单独下载json文件,附上两个网址: DataV.GeoAtlas地理小工具系列 POI数据|高德POI|高德兴趣点|高德POI数据|高德POI下载|高德POI数据库|高德POI分类|高德北京市POI|高德上海市POI|高德广州市POI|高德

    2024年02月11日
    浏览(20)
  • Element ui 取消点击空白处弹框关闭的效果

    Element ui 取消点击空白处弹框关闭的效果

    目录 属性: 描述  element组件库的Dialog对话框默认是可以通过点击 modal 关闭 Dialog,即点击空白处弹框可关闭。 在 el-dialog中close-on-click-modal含义是:点击空白处是否关闭,默认true;如果需要点击空白处不关闭弹框,只需要 :close-on-click-modal=“false” 即可

    2024年02月11日
    浏览(7)
  • el-dialog点击空白不允许关闭,只能点击关闭和取消按钮才消失

    el-dialog点击空白不允许关闭,只能点击关闭和取消按钮才消失

    使用场景 在使用Dialog组件时,当点击弹框外的空白处时,仍然会触发关闭弹框事件,一些业务场景不适合使用这种交互,需要只能点击关闭和取消按钮才消失。 方法一   方法二

    2024年02月11日
    浏览(17)
  • vue 弹出框 引入另一个vue页面

    vue 弹出框 引入另一个vue页面

    为什么要这么做,适用于在一个页面逻辑比较多的时候,可以搞多个页面,防止出错 index页面点击解约按钮,弹出框 进入jieyue.vue 核心代码 代码截图 jieyue.vue就是常规代码了 参考博客

    2024年02月12日
    浏览(8)
  • 如何在Vue.js中创建模态框(弹出框)

    如何在Vue.js中创建模态框(弹出框)

    模态框(弹出层对话框,Modal Popup)在大多数现代应用程序中非常常见。它们主要用于呈现简洁的信息,非常适合显示广告和促销内容。模态框提供了一种快速传达信息的方式,并提供了用户友好的关闭选项。 在本文中,我们将使用Vuejs构建一个弹出模态框。该模态框将包括

    2024年02月08日
    浏览(8)
  • jQuery实现简单弹出框

    jQuery实现简单弹出框

    1、点击“更多”出现弹出框 2、点击下拉列表触发回调 3、点击空白区域收起弹出框 PS:鼠标右键效果图`另存为`到本地 ,再将图片后缀gif改为rar即可得到完整代码压缩包。 1、提前声明弹出标识做判断; 2、通过jQuery的has()、is()或其他类似方法判断点击的是弹出层以外的空白

    2024年02月11日
    浏览(8)
  • 基于vue+Element Table Popover 弹出框内置表格的封装

    基于vue+Element Table Popover 弹出框内置表格的封装

    在选择数据的时候需要在已选择的数据中对比选择,具体就是点击一个按钮,弹出一个小的弹出框,但不像对话框那样还需要增加一个遮罩层,更加的轻量化,但是需要查看的数据很多需要一个列表来展示,列表的话还需要一个筛选功能。 我的思路是增加复选框列,将选择的

    2024年02月07日
    浏览(10)
  • vue3+element Plus实现弹框的拖拽、可点击底层页面功能

    vue3+element Plus实现弹框的拖拽、可点击底层页面功能

     1、template部分 必须加的属性         modal:是否去掉遮罩层         close-on-click-modal:是否可以通过点击modal关闭Dialog         draggable:开启拖拽功能 2、css部分 网上查找的资料,css需要修改pointer-events,主要的作用是 设置元素是否对鼠标事件做出反应   因为 .el-overlay-dialog的父

    2024年02月05日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包