Dialog vs Modal

최근에 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의 의미

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

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

dialog.show()

dialog.showModal()


모달(modal)

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

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

일반적인 사용 사례:

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


다이얼로그(dialog)

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

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

일반적인 사용 사례:

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


주요 차이점

상호작용 차단 여부:

사용 목적:


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

글 목록으로