Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS로 오버레이(Overlay) 효과 만드는 방법 – 예제 코드로 배우기

CSS로 오버레이(Overlay) 효과를 구현하는 방법을 소개합니다. 오버레이는 화면 전체를 어둡게 덮는 반투명 레이어로, 검색창·모달 창·이미지 라이트박스 등 다양한 UI에서 널리 활용되는 패턴입니다.

핵심 원리

오버레이 효과의 핵심은 다음 세 가지 CSS 속성입니다.

  • position: fixed; — 스크롤 위치와 관계없이 화면 전체에 고정
  • z-index: 1; — 기존 콘텐츠보다 위쪽 레이어에 배치
  • display: none / block; — JavaScript로 오버레이를 열고 닫는 전환 제어

전체 예제 코드

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/fontawesome.min.css">
<style>
body {
   font-family: Arial;
   }
   * {
      box-sizing: border-box;
   }
   .showBtn {
      background: #008b0c;
      border: none;
      color:white;
      padding: 10px 15px;
      font-size: 20px;
      cursor: pointer;
      opacity: 0.8;
   }
   .showBtn:hover {
      opacity: 1;
   }
   .overlay {
      height: 100%;
      width: 100%;
      display: none;
      position: fixed;
      z-index: 1;
      top: 0;
      left: 0;
      background-color: rgba(0, 0, 0, 0.747);
   }
   .overlay .hideBtn {
      position: absolute;
      top: 20px;
      right: 45px;
      font-size: 60px;
      cursor: pointer;
      color: rgb(255, 0, 0);
      opacity: 0.8;
   }
   .overlay .hideBtn:hover {
      opacity: 1;
   }
   .overlay input[type=text] {
      padding: 15px;
      font-size: 17px;
      border: none;
      float: left;
      width: 80%;
      background: white;
   }
   .overlay input[type=text]:hover {
      background: #f1f1f1;
   }
   .overlay button {
      float: left;
      width: 20%;
      padding: 15px;
      background: rgb(54, 21, 241);
      font-size: 17px;
      border: none;
      color:white;
      cursor: pointer;
      opacity: 0.8;
   }
   .overlay button:hover {
      opacity: 1;
   }
</style>
</head>
<body>
<div class="overlay" >
<span class="hideBtn">×</span>
<div class="searchBar">
<form >
<button type="submit">Close Overlay</button>
</form>
</div>
</div>
<h1>Overlay Effect Example</h1>
<button class="showBtn">Turn Overlay On</button>
<h2>Click on the above button to try overlay effect</h2>
<script>
   document.querySelector('.hideBtn').addEventListener('click',hideSearch);
   document.querySelector('.showBtn').addEventListener('click',showSearch);
   function showSearch() {
      document.querySelector('.overlay').style.display = "block";
   }
   function hideSearch() {
      document.querySelector('.overlay').style.display = "none";
   }
</script>
</body>
</html>

코드 설명

  • .overlay — width와 height를 100%로 지정하고 rgba()로 반투명한 검정 배경을 적용해 화면 전체를 덮습니다.
  • .hideBtn — 오버레이 우측 상단에 배치된 닫기(X) 버튼으로, 클릭 시 displaynone으로 바뀌며 오버레이가 사라집니다.
  • .showBtn — 본문의 초록색 버튼으로, 클릭 시 displayblock으로 바뀌며 오버레이가 나타납니다.
  • :hover 효과 — 마우스를 올리면 opacity가 0.8에서 1로 변해 자연스러운 인터랙션을 제공합니다.

실행 결과

위 코드를 실행하면 다음과 같은 초기 화면이 출력됩니다.

CSS로 오버레이(Overlay) 효과 만드는 방법 – 예제 코드로 배우기

"Turn Overlay On"(오버레이 켜기) 버튼을 클릭하면 화면 전체에 어두운 오버레이가 펼쳐지며, 우측 상단의 X 버튼을 눌러 닫을 수 있습니다.

CSS로 오버레이(Overlay) 효과 만드는 방법 – 예제 코드로 배우기