Dialog vs Modal

created:
last-updated:

최근에 tailwind 와 DaisyUI 라이브러리, 시맨틱 태그 dialog 를 사용해 다이얼로그를 구현할 일이 있었다. 그 중에 DaisyUI가 제공하는 class가 modal, modal-box 인데 반해 사용하는 엘리먼트 태그는 dialog인 점, 이를 랩팽한 컴포넌트 명을 ~Dialog로 할지 ~Modal로 할지 고민하다가 알게 된 내용을 정리한다.

<dialog id="my_modal" class="modal">
  <div class="modal-box">
    <h3 class="font-bold text-lg">모달 제목</h3>
    <p>모달 내용</p>
    <form method="dialog">
      <button class="btn">닫기</button>
    </form>
  </div>
</dialog>

1. Dialog와 Modal의 의미

구분 Dialog Modal
정의 페이지 위에 떠서 메시지를 전달하거나 입력을 받는 대화창 사용자가 현재 인터랙션을 완료할 때까지 배경과의 상호작용을 차단하는 대화창
배경 상호작용 가능 차단됨
포커스 트랩 일반적으로 없음 필요함
시맨틱 의미 <dialog>로 명확하게 표현 가능 <dialog> + showModal()로 표현 가능

모든 모달은 다이얼로그이지만, 모든 다이얼로그가 모달인 것은 아니다.

dialog.show()

dialog.showModal()


정의:
모달은 애플리케이션에서 일시적으로 사용자와의 상호작용을 차단하고, 해당 모달과의 상호작용이 완료될 때까지 다른 인터페이스 요소와의 상호작용을 막는 UI 요소이다.

주요 특징:
메인 인터페이스와의 상호작용을 차단하여 사용자가 모달의 내용에 집중하도록 유도하는 역할을 한다.

일반적인 사용 사례:

예시:
문서를 편집하는 중 '변경 사항을 저장하시겠습니까?'와 같은 메시지가 나타나고, 사용자가 '예', '아니오', '취소' 중 하나를 선택해야만 다른 작업을 계속할 수 있는 경우가 이에 해당한다.


다이얼로그(dialog)

정의:
다이얼로그는 사용자와의 정보 교환이나 의사 결정을 위한 UI 요소로, 모달일 수도 있고 아닐 수도 있는 요소이다.

주요 특징:
반드시 메인 인터페이스와의 상호작용을 차단하지는 않는다. 즉, 다이얼로그가 열려 있어도 다른 애플리케이션 부분과의 상호작용이 가능한 경우도 존재한다.

일반적인 사용 사례:

예시:
워드 프로세서에서 글꼴 크기나 서식을 지정하는 다이얼로그 박스가 열려 있으면서도, 동시에 다른 메뉴나 도구와 상호작용이 가능한 경우이다.


주요 차이점

상호작용 차단 여부:

사용 목적:


https://dev.to/doccaio/modal-vs-dialog-2bb2