我正在关注如何创建模式的YouTube教程。这是video。困扰我的部分发生在21.10分钟。
我正在尝试创建一个模式,当我点击x按钮时,当我点击模态区域时,应该关闭模式,但当我点击内部时, NOT 。
当在JavaScript代码的底部e.target == modal
时,当光标在模态区域外部而不是在内部时,光标应该消失。
但是,在HTML文件中,id=simpleModal
为整个div
类设置,然后在JavaScript中将其作为变量modal
引用。
据我了解,e=modal
应该适用于整个模态部分,而不仅仅是外部部分,如果在任何点上点击,而不仅仅是外部,则应该关闭窗口。
我的问题是这个 - 我错过了什么?
//Get modal element
var modal = document.getElementById('simpleModal');
//Get open modal button
var modalBtn = document.getElementById('modalBtn');
//Get close button
var closeBtn = document.getElementsByClassName('closeBtn')[0];
//Listen for click
modalBtn.addEventListener('click', openModal);
//Listen for close clock
closeBtn.addEventListener('click', closeModal);
//Listen for outside click
window.addEventListener('click', outsideClick);
//Fucntion to open modal
function openModal() {
modal.style.display = 'block';
}
//Fucntion to close modal
function closeModal() {
modal.style.display = 'none';
}
function outsideClick(e) {
if (e.target == modal) {
modal.style.display = 'none';
}
}
.modal {
display: none;
position: fixed;
z-index=1;
left: 0;
top: 0;
height: 100%;
width: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.5);
}
.modal-content {
background-color: #f4f4f4;
margin: 20% auto;
padding: 20px;
width: 70%;
box-shadow: 10px 20px 40px rgba(0, 0, 0);
}
<button id="modalBtn" class="button">Click Here</button>
<div id="simpleModal" class="modal">
<div class="modal-content">
<span class="closeBtn">×</span>
<p>Hello...I am a modal</p>
</div>
</div>