📜  引导模式弹出窗口禁用点击外部 - Javascript(1)

📅  最后修改于: 2023-12-03 15:25:34.656000             🧑  作者: Mango

引导模式弹出窗口禁用点击外部 - Javascript

弹出窗口在网站或应用程序中非常常见,但通常情况下,用户可以通过单击弹出窗口之外的任何地方来关闭窗口。这可能会影响用户的交互体验,特别是在需要用户专注于弹出窗口内容时。本文将介绍如何在Javascript中创建一个禁用点击外部关闭的弹出窗口,以便用户能够专注于内容。

HTML代码

首先,我们需要在HTML中创建一个弹出窗口。可能的方案是使用 <div> 元素,例如:

<div id="popup" class="popup">
  <div class="popup-content">
    <p>这是一个弹出窗口的内容</p>
    <button id="close-btn">关闭</button>
  </div>
</div>

在这里,<div> 元素是我们的弹出窗口的容器,class="popup" 用于设置外观和样式。在这个DIV里,我们还用一个2级的DIV来容纳实际内容,其 class 是"popup-content"。

在内部DIV中,我们有一些内容和关闭按钮。按钮可以用来关闭弹出窗口。

CSS样式

现在,我们需要在CSS样式表中提供相应的样式。在这里,我们将使弹出窗口位于正中央,并为其添加透明度和边框。CSS样式如下:

.popup {
  background-color: rgba(0,0,0,.5);
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
  width: 100vw;
  display: flex;
  justify-content: center;
  align-items: center;
}

.popup-content {
  background-color: white;
  padding: 20px;
  border-radius: 5px;
  box-shadow: 0 0 10px rgba(0,0,0,.5);
}
禁用点击外部关闭

现在,我们需要使用Javascript来禁用在弹出窗口之外的单击事件。我们将检测点击事件是否发生在弹出窗口内部,如果是,则允许事件继续发生;否则,将禁止事件的继续传播。

我们将在 <script> 标签中使用事件监听器来监听单击事件。当用户单击弹出窗口之外的区域时,我们将禁止事件继续传播,从而防止用户关闭弹出窗口。

以下是Javascript代码:

var popup = document.getElementById('popup');
var closeButton = document.getElementById('close-btn');

popup.addEventListener('click', function(e) {
  if (e.target !== this)
    return; // 确认点击的区域是这个div本身
  popup.style.display = 'none';
});

closeButton.addEventListener('click', function() {
  popup.style.display = 'none';
});

至此,我们就可以在Javascript中创建一个完全自定义的弹出窗口并禁用外部单击事件来关闭窗口。