javascript - 单击外部时关闭模式
问题描述
单击 x 图标和按下退出按钮时,我能够关闭我的模式。在模式之外(即页面的正文?)单击时,我怎样才能使其关闭?谢谢
document.querySelectorAll(".modal-trigger").forEach((trigger) => {
const modal = document.querySelector(trigger.dataset.modal);
const closeBtn = modal.querySelector(".modal-close");
function open() {
modal.classList.add("show-modal");
trigger.blur();
document.body.style.overflow = "hidden";
document.body.addEventListener("keydown", escapeClose);
}
function close() {
modal.classList.remove("show-modal");
document.body.style.overflow = "auto";
document.body.removeEventListener("keydown", escapeClose);
}
function escapeClose(event) {
if (event.keyCode === 27) {
close();
}
}
trigger.addEventListener("click", open);
closeBtn.addEventListener("click", close);
});
解决方案
这就是我最终做的事情。谢谢!
document.querySelectorAll(".modal-trigger").forEach((trigger) => {
const modal = document.querySelector(trigger.dataset.modal);
const closeBtn = modal.querySelector(".modal-close");
function open(event) {
modal.classList.add("show-modal");
trigger.blur();
document.body.style.overflow = "hidden";
document.body.addEventListener("keydown", escapeClose);
modal.addEventListener("click", outsideClose);
event.stopPropagation();
}
function close() {
modal.classList.remove("show-modal");
document.body.style.overflow = "auto";
document.body.removeEventListener("keydown", escapeClose);
modal.removeEventListener("click", outsideClose);
}
function escapeClose(event) {
if (event.keyCode === 27) {
close();
}
}
function outsideClose(event) {
if (
event.target === modal ||
event.target.classList.contains("close-modal")
) {
close();
}
}
trigger.addEventListener("click", open);
closeBtn.addEventListener("click", close);
});
推荐阅读
- python - SVM 决策边界绘图中的错误
- javascript - 在javascript中生成随机数
- ruby-on-rails - Ruby/Ruby on Rails 中的密码散列
- javascript - 我的 h1 标签字体系列突然从 css 中的原始字体系列改变了
- javascript - JQueryUi 自动完成组合框有时无法在 Firefox 中正确加载
- database - Laravel - 在 config/database.php 中做逻辑
- sql - 使用分组和聚合函数
- jmeter - HTTP 请求包含等于复选框不能取消选中
- sharepoint - 如何在 SharePoint Online 中减小英雄横幅 webpart 的大小?
- java - 使用 multipart 上传多个图像时出错