Эффект открытия Popup окна
Подскажите пожалуйста, как реализовать подобный эффект открытия попап окна. Пример по ссылке(https://tympanus.net/Development/ModalWindowEffects) с названием "SLIP FROM TOP". Нужно ли создавать отдельно overley container и перекрывать содержимое? Прочесал инспектор, но не могу понять как сделать
Ответы (1 шт):
Автор решения: Айболит
→ Ссылка
Сам эффект то не сложный, используется perspective на родительском блоке, так же transform-origin которые в купе дают красивые переходы которые не доступны без них
Смотрим пример
let items = document.querySelector(".items");
let overlay = document.querySelector(".overlay");
let modal = document.querySelector(".modal");
let close = document.getElementById("close");
let button = document.getElementById("button");
function vision() {
items.classList.add("view");
overlay.classList.add("active");
modal.classList.add("active");
}
function unvision() {
items.classList.remove("view");
overlay.classList.remove("active");
modal.classList.remove("active");
}
button.addEventListener("click", vision);
close.addEventListener("click", unvision);
* {
margin: 0;
padding: 0;
}
button {
padding: 10px 20px;
}
#button {
position: fixed;
top: 30px;
left: 30px;
}
.items {
position: relative;
width: 100%;
height: 100vh;
perspective: 700px;
opacity: 0;
visibility: hidden;
color: #fff;
}
.items.view {
opacity: 1;
visibility: visible;
}
.overlay {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: tomato;
transform-origin: 50% 100%;
}
.overlay.active {
animation: an1 0.5s linear;
}
@keyframes an1 {
100% {
transform: rotateX(20deg);
}
}
.modal {
position: absolute;
width: 60%;
top: 50%;
left: 50%;
transform: translate(-50%, -1000px);
border: 1px solid;
padding: 20px;
}
.modal.active {
animation: an2 0.25s linear forwards;
}
@keyframes an2 {
100% {
transform: translate(-50%, -50%);
}
}
#close {
position: absolute;
top: 30px;
right: 30px;
}
<button id="button">Показать</button>
<div class="items">
<div class="overlay"></div>
<div class="modal">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Illo quibusdam dolor expedita nesciunt quas suscipit ducimus possimus magnam minus mollitia, incidunt fugiat dolore aspernatur quisquam numquam non, repellat id? Cupiditate?
</div>
<button id="close">Закрыть</button>
</div>