0


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

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

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

  1. 创建弹出框组件

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

  1. <template>
  2. <div v-if="show" class="modal">
  3. <div class="modal-body">
  4. <slot></slot>
  5. <button @click="onClose">关闭</button>
  6. </div>
  7. </div>
  8. </template>
  9. <script>
  10. export default {
  11. props: ['show', 'onClose']
  12. }
  13. </script>
  1. 创建父组件

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

  1. <template>
  2. <div class="page">
  3. <button @click="showModal = true">弹出框</button>
  4. <modal :show="showModal" :onClose="closeModal">
  5. <p>这是弹出框的内容</p>
  6. </modal>
  7. </div>
  8. </template>
  9. <script>
  10. import Modal from './Modal.vue'
  11. export default {
  12. components: {
  13. Modal
  14. },
  15. data() {
  16. return {
  17. showModal: false
  18. }
  19. },
  20. created() {
  21. document.addEventListener('click', this.onClickOutside);
  22. },
  23. beforeDestroy() {
  24. document.removeEventListener('click', this.onClickOutside);
  25. },
  26. methods: {
  27. onClickOutside(event) {
  28. if (this.showModal && !this.$el.contains(event.target)) {
  29. this.closeModal();
  30. }
  31. },
  32. closeModal() {
  33. this.showModal = false
  34. }
  35. }
  36. }
  37. </script>

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

  1. 添加样式

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

  1. <style>
  2. .page {
  3. height: 100vh;
  4. display: flex;
  5. justify-content: center;
  6. align-items: center;
  7. }
  8. .modal {
  9. position: absolute;
  10. top: 0;
  11. left: 0;
  12. z-index: 1000;
  13. width: 100vw;
  14. height: 100vh;
  15. background-color: rgba(0, 0, 0, 0.5);
  16. }
  17. .modal-body {
  18. position: absolute;
  19. top: 50%;
  20. left: 50%;
  21. transform: translate(-50%, -50%);
  22. background-color: #fff;
  23. padding: 20px;
  24. }
  25. </style>

以上是Vue实现弹出框点击空白页弹框消失的全部代码实现。


本文转载自: https://blog.csdn.net/NIKKT/article/details/129954872
版权归原作者 NIKKT 所有, 如有侵权,请联系我们删除。

“VUE实现弹出框 点击空白页弹框消失”的评论:

还没有评论