📅  最后修改于: 2023-12-03 15:25:34.656000             🧑  作者: Mango
弹出窗口在网站或应用程序中非常常见,但通常情况下,用户可以通过单击弹出窗口之外的任何地方来关闭窗口。这可能会影响用户的交互体验,特别是在需要用户专注于弹出窗口内容时。本文将介绍如何在Javascript中创建一个禁用点击外部关闭的弹出窗口,以便用户能够专注于内容。
首先,我们需要在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样式如下:
.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中创建一个完全自定义的弹出窗口并禁用外部单击事件来关闭窗口。