javascript - 使用javascript隐藏弹出窗口
问题描述
我有一个页面实现了多个仅 CSS 的弹出窗口。单击“X”时弹出窗口工作正常并关闭。但是,当用户单击页面上的任何位置时,我希望它们关闭。为此,我实现了一个简短的 javascript 代码,它会在任何点击时关闭它们,但它们不会再次打开(直到页面刷新)。我猜该状态被保存为“无”。我该如何解决?
编码:
window.onclick = function(event) {
if (event.target.className === "overlay") {
event.target.style.display = "none";
}
}
<div class="editbutton">
<a class="btn btn-link" href="#popupedit">Edit</a></div>
<div id="popupedit" class="overlay">
<div class="popup10">
<a class="close" href="#"></a>
........
</div>
</div>
<div class="editbutton">
<a class="btn btn-link" href="#popupedit1">Edit</a></div>
<div id="popupedit1" class="overlay">
<div class="popup10">
<a class="close" href="#"></a>
........
</div>
</div>
<div class="editbutton">
<a class="btn btn-link" href="#popupedit2">Edit</a></div>
<div id="popupedit2" class="overlay">
<div class="popup10">
<a class="close" href="#"></a>
........
</div>
</div>
CSS 代码:
.overlay {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.7);
transition: opacity 500ms;
visibility: hidden;
opacity: 0;
z-index: 2000;
}
.overlay:target {
visibility: visible;
opacity: 1;
}
.popup10 {
margin: 70px auto;
padding: 20px;
background: #fff;
border-radius: 5px;
width: 50%;
position: relative;
transition: all 5s ease-in-out;
}
.popup10 h2 {
margin-top: 0;
color: #333;
font-family: Tahoma, Arial, sans-serif;
}
.popup10 .close {
position: absolute;
top: 8px;
right: 10px;
transition: all 200ms;
font-size: 30px;
font-weight: bold;
text-decoration: none;
color: #333;
}
.popup10 .close:hover {
color: #06D85F;
}
.popup10 .content {
max-height: 30%;
overflow: auto;
}
解决方案
这是您应该在 javascript 中更新的代码。
window.onclick = function(event) {
if (event.target.className === "btn btn-link") {
document.getElementById('popupedit').style.display = "block";
}
if (event.target.className === "overlay") {
event.target.style.display = "none";
}
}
弹窗没有再次打开的原因是你在点击部件时设置了覆盖部件,display: none
但没有设置回display: block
.
display: block
因此,您应该在单击编辑按钮时再次将弹出布局设置回。
请查看结果:https ://jsfiddle.net/254xmyv7/3/
希望这会有所帮助。:)
推荐阅读
- r - 将多输出函数应用于R中的向量
- c - 基于链表的函数中的分段错误
- c++ - C++:这两种将数字写入矩阵的方式之间是否存在显着的速度差异?
- javascript - IE 11 上的 InvalidCharacterError
- python - python中的二维矩阵值更新
- javascript - 如何向 p 标签添加一些类?
- regex - 使用正则表达式检查自定义字段是否包含 h2 标题
- angular - microsoft graph 发出无效令牌
- reactjs - 一个函数实例可以持久存在于 React 函数组件中吗?
- python - 使用 Pyserial,为什么在实例化 Serial 类和用于写入数据的 Serial 对象之间需要延迟?