CSS Fade In & Fade Out 효과 구현하기

UI를 프레임워크를 사용해서 만들어진 UI를 사용하기도 하지만, 커스텀이 어려운 경우 직접 만들기도 하는데, 직접 만들어야 하는 경우가 최근에 있었기 때문에 정리를 한다.

<button id="open">
  모달 열기
</button>
<div class="modal">
  <div class="backdrop"></div>
  <div class="content">
    나 모달
    <button id="close">모달 닫기</button>
  <div>
</div>
.modal {
  position: fixed;
  left: 0;
  top: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
}

.modal.show {
  opacity: 1;
  visibility: visible;
}

.backdrop {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.75);
  transition: background 0.3s;
}

.content {
  position: relative;
  width: 400px;
  height: 150px;
  background: #fff;
  transition: opacity 0.3s ease-out;
}
const modal = document.querySelector('.modal')
const openButton = document.querySelector('#open')
const closeButton = document.querySelector('#close')

openButton.addEventListener('click', e => {
  modal.classList.add('show')
})

closeButton.addEventListener('click', e => {
  modal.classList.remove('show')
})

Leave a Comment