javascript - 正确的语义使模态叠加层在单击 div 时消失

标签 javascript html css overlay

我正在处理模态,我希望在单击背景时使模态覆盖消失。

function dismissModal() {
  document.getElementById("modal").classList.remove("modal-overlay");
}
.modal-overlay {
  background-color: rgba(0, 0, 0, .5);
  bottom: 0;
  display: block;
  left: 0;
  overflow: hidden;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 1;
}

.modal-content {
  background-color: #fff;
  height: 20em;
  width: 20em;
  margin: auto;
}
<section id="modal" class="modal-overlay" onclick="dismissModal()">
  <div class="modal-content">
    <h1>Example Code</h1>
  </div>
</section>

制作具有 onClick 属性的 div 或部分对于语义来说不是很好,但我不想将整个模式部分包装在按钮或 anchor 标记中。

在这样的用例中,人们通常会做什么来避免 div 或部分类中的 onClick?

最佳答案

希望以下代码段对您有所帮助。

function dismissModal() {
  document.getElementById("modal").classList.toggle("modal-overlay");
    document.getElementById("modal").classList.toggle("modal-hidden");
}
.modal-overlay {
  background-color: rgba(0, 0, 0, .5);
  bottom: 0;
  display: block;
  left: 0;
  overflow: hidden;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 1;
}

.modal-content {
  background-color: #fff;
  height: 20em;
  width: 20em;
  margin: auto;
}
.modal-hidden{
display:none;
}
<section id="modal" class="modal-overlay" onclick="dismissModal()">
  <div class="modal-content">
    <h1>Example Code</h1>
  </div>
</section>
<button onclick="dismissModal()">Show Modal</button>

关于javascript - 正确的语义使模态叠加层在单击 div 时消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52416083/

相关文章:

javascript - EcmaScript 规范中 classScope 的目的是什么?

javascript - 将 redux 存储保存到本地存储 - 使用 lit-element

javascript - 位置固定元素

css - div 垂直放置而不是水平放置 php css3

javascript - 新 ECMA5 Javascript 标准中的 argument.callee.name 替代方案

javascript - 如何将事件从父窗口发送到其子窗口?

javascript - 从选择中获取范围内的源代码片段?

html - 如何使用CSS制作不同的翻转动画?

css - 更改 Bootstrap 导航栏中一个元素的字体颜色

javascript - 无法使用 d3 创建曼哈顿图