html - 单击外部时关闭模态 - 多个 ID

标签 html css

<分区>


想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post .

关闭 6 年前

我用这个Modal对于我网站一页上的多个链接。我需要的是一个脚本/代码,当用户在外部单击时关闭模式窗口。我找到了这个 post ,这有效,但仅适用于一个链接,因为脚本需要 id。有没有办法将此脚本应用于多个 ID?还是其他方法?

最佳答案

这是基于 id 的,因为它在 :target 之外工作,所以你需要做的是,为不同的模态提供一个通用的类和不同的 ID像这样:

window.onload = function () {
  var modals = document.getElementsByClassName("modal");
  var windows = document.getElementsByClassName("window");

  var clearModal = function () {
    location.hash = '';
  };

  for (var i = 0; i < modals.length; i++) {
    modals[i].addEventListener('click', clearModal, false);
  }
  for (var i = 0; i < windows.length; i++) {
    windows[i].addEventListener('click', function () {
      event.stopPropagation();
      event.cancelBubble = true;
    }, false);
  }
  document.body.addEventListener('keydown', function () {
    if (event.keyCode == 27) {
      location.hash = '';
      clearModal();
    }
  }, false);
};
* {
  margin: 0;
  padding: 0;
  list-style: none;
}
.modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0,0,0,0.25);
  z-index: 9999;
  pointer-events: none;
  opacity: 0;
}
.modal .window {
  background-color: #fff;
  position: absolute;
  top: 50%;
  left: 50%;
  width: 300px;
  height: 200px;
  margin: -100px 0 0 -150px;
  text-align: center;
  line-height: 120px;
}
.modal:target {
  opacity: 1;
  pointer-events: auto;
}
<div id="modal-1" class="modal">
  <div class="window">Modal Window 1<br /><a href="#">Close</a></div>
</div>
<div id="modal-2" class="modal">
  <div class="window">Modal Window 2<br /><a href="#">Close</a></div>
</div>
<div id="modal-3" class="modal">
  <div class="window">Modal Window 3<br /><a href="#">Close</a></div>
</div>
<div id="modal-4" class="modal">
  <div class="window">Modal Window 4<br /><a href="#">Close</a></div>
</div>
<div id="modal-5" class="modal">
  <div class="window">Modal Window 5<br /><a href="#">Close</a></div>
</div>
<a href="#modal-1">Open Modal 1</a><br />
<a href="#modal-2">Open Modal 2</a><br />
<a href="#modal-3">Open Modal 3</a><br />
<a href="#modal-4">Open Modal 4</a><br />
<a href="#modal-5">Open Modal 5</a>

关于html - 单击外部时关闭模态 - 多个 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41292278/

上一篇:html - 如何在没有视频流出的情况下在div中心制作<video></video>标签?

下一篇:javascript - 搜索特定文本的类并返回条目号

相关文章:

jquery - 为什么在使用 .hover()、.addClass() 和 .removeClass() 时将光标快速移动到目标选择器上时 CSS 类和 jQuery 会卡住?

javascript - 如何将 javascript 变量中的值输出到 html td 单元格中?

JavaScript。 Uncaught ReferenceError : (object) is not defined at HTMLInputElement. onchange

css - 在 Bootstrap 中,如何在视口(viewport)的远端制作侧边栏?

CSS 在 Laravel 中不起作用

javascript - 在没有表格标签的情况下,创建一个具有固定标题和第一列的表格

javascript - 如何将包含撇号的文本值传递给 javascript 函数

值字段的 JavaScript 警告消息

html - 内容溢出时左对齐

javascript - .htaccess AddType 不起作用