← 오버레이

모달 Modal

화면 가운데 떠서 뒤 화면을 막고 응답을 요구하는 창

다른 이름: 팝업, 대화상자, 다이얼로그, Dialog, 레이어 팝업

미리보기
HTML 코드
<p class="bg">뒤쪽 화면</p>
<div class="dim">
  <div class="modal" role="dialog">
    <h3>정말 삭제할까요?</h3>
    <p>삭제한 파일은 복구할 수 없습니다.</p>
    <div class="act"><button>취소</button><button class="danger">삭제</button></div>
  </div>
</div>
<style>
.bg{color:var(--muted)}
.dim{position:fixed;inset:0;background:rgb(0 0 0 / .45);display:grid;place-items:center}
.modal{width:min(320px,90%);background:var(--bg);border-radius:14px;padding:20px;box-shadow:var(--shadow)}
.modal h3{margin:0 0 6px}
.modal p{margin:0 0 16px;color:var(--muted)}
.act{display:flex;justify-content:flex-end;gap:8px}
button{font:inherit;padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--fg)}
.danger{background:var(--danger);border-color:var(--danger);color:#fff}
</style>
AI에게 이렇게 요청하세요

삭제 버튼을 누르면 반투명 검정 배경 위 가운데에 제목·설명·'취소/삭제' 버튼이 뜨고 ESC나 배경 클릭으로 닫히는 확인 모달 띄워줘

<p class="bg">뒤쪽 화면</p>
<div class="dim">
  <div class="modal" role="dialog">
    <h3>정말 삭제할까요?</h3>
    <p>삭제한 파일은 복구할 수 없습니다.</p>
    <div class="act"><button>취소</button><button class="danger">삭제</button></div>
  </div>
</div>
<style>
.bg{color:var(--muted)}
.dim{position:fixed;inset:0;background:rgb(0 0 0 / .45);display:grid;place-items:center}
.modal{width:min(320px,90%);background:var(--bg);border-radius:14px;padding:20px;box-shadow:var(--shadow)}
.modal h3{margin:0 0 6px}
.modal p{margin:0 0 16px;color:var(--muted)}
.act{display:flex;justify-content:flex-end;gap:8px}
button{font:inherit;padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--fg)}
.danger{background:var(--danger);border-color:var(--danger);color:#fff}
</style>

언제 쓰나

삭제 확인, 로그인, 짧은 입력 폼처럼 지금 바로 결정해야 하는 상황.

비슷한 것과 차이

  • 드로어: 화면 옆에서 밀려 나오는 패널, 더 긴 내용·설정에 적합
  • 토스트: 응답이 필요 없는 가벼운 알림
  • 모달을 남발하면 흐름이 끊기니 꼭 필요한 곳에만

헷갈리는 컴포넌트