Измените вашу toggle()
функцию на open()
. Вместо того, чтобы переключать ваши классы, просто удалите класс .active
из всех кнопок, а затем добавьте его в поле, соответствующее кнопке, на которую вы нажали. Таким образом, вы можете добавить размытие фона в функции open()
и удалить его в close()
.
Я бы также предложил использовать один блок для всех ваших всплывающих окон и просто изменить источник видео и <h2>
текст, в соответствии с которым была нажата кнопка. (Возможно, сохраните эту информацию в атрибутах data-
.) Таким образом, вы можете легко расположить ее под кнопками и по-прежнему получать доступ к другим кнопкам, когда она открыта.
document.querySelectorAll(".button a").forEach((a) => {
a.addEventListener("click", open);
});
document.querySelectorAll(".popup a:last-child").forEach((a) => {
a.addEventListener("click", close);
});
function open() {
document.querySelectorAll(".button a").forEach((a) => {
a.parentElement.nextElementSibling.classList.remove("active");
});
this.parentElement.nextElementSibling.classList.add("active");
//popup is sibling of a's parent element
document.querySelector('.background').classList.add('blurred');
}
function close() {
this.parentElement.classList.remove("active"); // .popup
document.querySelector('.background').classList.remove('blurred');
}
body {
margin: 0;
}
.background {
background-image: url(https://live.staticflickr.com/1618/23872051484_6f199fa269_b.jpg);
background-size: cover;
width: 100%;
height: 100vh;
padding: 2em;
z-index: 0;
position: absolute;
top: 0;
}
.container {
z-index: 1;
position: relative;
}
.box {
border: 1px solid;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
font-family: "Glacial Indifference", sans-serif;
font-size: 30px;
padding: 10px;
border-radius: 5px;
border-color: #FFFFFF;
background-color: rgba(255,255,255,0.5);
margin: 10px auto;
width: 50%;
}
.popup {
display: none;
visibility: hidden;
position: fixed;
left: 50%;
transform: translate(-50%, -50%);
width: 80%;
padding: 50px;
box-shadow: 0 5px 30px rgba(0, 0, 0, .30);
background: #A6A6A6;
}
.active {
display: block;
top: 50%;
visibility: visible;
left: 50%;
}
.blurred {
filter: blur(8px);
-webkit-filter: blur(8px);
}
<div class="container">
<div class="box button">
<a href="#">OPEN1</a>
</div>
<div class="popup">
<h2>HEADER</h2>
<video src="video1.mov" controls></video>
<p>
content
</p>
<a href="#" style="border: 2px solid; padding: 5px;">CLOSE</a>
</div>
<div class="box button">
<a href="#">OPEN2</a>
</div>
<div class="popup">
<h2>HEADER</h2>
<video src="video2.mov" controls></video>
<p>
content
</p>
<a href="#" style="border: 2px solid; padding: 5px;">CLOSE</a>
</div>
<div class="box button">
<a href="#">BUTTON3</a>
</div>
<div class="popup">
<h2>HAEADER3</h2>
<video src="video3.mov" controls></video>
<p>
content
</p>
<a href="#" style="border: 2px solid; padding: 5px;">CLOSE</a>
</div>
<div class="box button">
<a href="#">BUTTON</a>
</div>
<div class="popup">
<h2>HEADER4</h2>
<video src="video4.mov" controls></video>
<p>
content
</p>
<a href="#" style="border: 2px solid; padding: 5px;">CLOSE</a>
</div>
</div>
<div class="background"></div>