Я пытаюсь создать фотогалерею, в которой можно щелкнуть фотографии, чтобы открыть модальное описание фотографии.Кнопка закрытия работает, однако мне нужно иметь возможность щелкать снаружи, на заднем плане, чтобы также закрыть модальное окно.У меня есть следующий код:
function stylemodals() {
var modalarray = document.body.getElementsByClassName("modal");
for (var i = 0; i < modalarray.length; i++) {
modalarray[i].setAttribute("style", "display: none; position: fixed; z-index: 1; left: 0; top: 0; width: 100%; height: 100%; color:black; overflow: auto; background-color: rgba(0, 0, 0, .4);");
}
}
stylemodals();
function stylemodalcontent() {
var modalcontentarray =
document.body.getElementsByClassName("modal-content");
for (var i = 0; i < modalcontentarray.length; i++) {
modalcontentarray[i].setAttribute("style", "background-color: #FFFFFF; margin: 15 % auto; border: 1 px solid #888;width: 70%;");
}
}
stylemodalcontent();
//set 1
var mdl1 = document.getElementById('mdl1');
var btn1 = document.getElementById("btn1");
var close1 = document.getElementById("close1");
btn1.onclick = function() {
mdl1.style.display = "block";
};
close1.onclick = function() {
mdl1.style.display = "none";
};
window.onclick = function(event) {
if (event.target == mdl1) {
mdl1.style.display = "none";
}
};
<table>
<tr>
<td>
<!-- Trigger/Open The Modal NEEDS AN IMAGE -->
<input type="image" src="" alt="ib-image" id="btn1">
<!-- The Modal -->
<div id="mdl1" class="modal">
<!-- Modal content NEEDS CONTENT-->
<div class="modal-content">
<span id="close1" style="color: rgb(31, 31, 31); float: right;
font-size: 28px; font-weight: bold;">×</span>
<p>CONTENT</p>
</div>
</div>
</td>
</tr>
</table>
Я изучал, как это сделать, я скопировал и вставил это из w3schools, а затем изменил его в соответствии со своими потребностями, но я все еще не могу нажать за пределамимодальный, чтобы закрыть.Как мне это сделать?
- РЕДАКТИРОВАТЬ -
вот новый код:
var modal = document.getElementById("modal");
modal.setAttribute("style", "display: none; position: fixed; z-index: 1; left: 0; top: 0; width: 100%; height: 100%; color: black; overflow: auto; background-color: rgba(0, 0, 0, .4); ");
document.getElementById("modal-content").setAttribute("style", "background-color: #FFFFFF; margin: 15% auto; border: 1px solid #888; width: 70%;");
var actualmodalcontent = document.getElementById("actual-modal-content");
function modal1 (){
actualmodalcontent.innerHTML = "CONTENT1"
modal.style.display = "block";
};
var close = document.getElementById("close");
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
if (event.target == close) {
modal.style.display = "none";
}
};
<div id="modal">
<div id="modal-content">
<span id="close" onclick="close()" style="color: rgb(31, 31, 31); float: right; font-size: 28px; font-weight: bold;">×</span>
<p id="actual-modal-content">
CONTENT0
</p>
</div>
</div>
<input type="image" src="" alt="ib-image" id="btn1" onclick="modal1()">