Эффект открытия 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>

→ Ссылка