안녕하세요! YB 김채은입니다.
2주차 과제를 하면서 모달창 구현 방법에 대해 찾아보다 <dialog> 태그를 알게 되었는데요, 아주 편리하게 모달창을 만들 수 있어 소개해보려 합니다 !!
먼저 <dialog> 요소는 HTML5에 추가된 대화 상자 요소로, 기존의 <div>로 만든 대화 상자보다 접근성, 스타일링 측면에서 장점이 많습니다. 예를 들어, 별도의 라이브러리 없이도 모달 창을 쉽게 구현할 수 있고, 페이지의 흐름을 차단하는 모달 모드와 일반 대화 상자로 사용할 수 있어 다양한 사용자 경험을 지원할 수 있습니다.
<dialog> 요소의 기본 구조와 사용법
<dialog> 요소는 초기에는 보이지 않고, JavaScript의 show()와 showModal() 메서드를 통해 화면에 표시할 수 있습니다.
- open 속성: <dialog> 요소가 화면에 나타나는 상태를 설정하는 속성. open 속성을 추가하면 대화 상자가 보이고, 제거하면 숨겨집니다.
- show() 메서드: 페이지의 흐름을 차단하지 않고 대화 상자를 열 때 사용하는 메서드. 대화 상자가 화면에 나타나지만, 페이지의 다른 요소와 여전히 상호작용이 가능합니다. 알림 메시지나 잠시 화면에 표시할 내용이 있을 때 사용할 수 있습니다.
- showModal() 메서드: 대화 상자를 모달 형식으로 띄워줍니다. 모달 창은 사용자에게 특정 작업을 유도하거나 중요한 정보를 표시하는 데 유용하며, 대화 상자가 열리면 페이지의 나머지 요소는 비활성화됩니다.
- close() 메서드: 열린 대화 상자를 닫을 때 사용하는 메서드로, show() 또는 showModal()로 열렸던 대화 상자를 닫습니다. 닫힐 때마다 close 이벤트가 발생해, 대화 상자가 닫힌 후의 추가 작업을 처리할 수 있습니다.
기본적인 사용 예제
<dialog> 요소를 사용하여 간단한 대화 상자를 열고 닫는 방법을 살펴보겠습니다.
<dialog id="myDialog">
<p>여기는 대화 상자! 필요한 메시지를 표시하거나 입력을 받을 수 있습니다.</p>
<button onclick="document.getElementById('myDialog').close()">닫기</button>
</dialog>
<button onclick="document.getElementById('myDialog').show()">대화 상자 열기</button>
<button onclick="document.getElementById('myDialog').showModal()">모달 열기</button>
show()와 showModal() 버튼을 클릭하면 각각 일반 대화 상자와 모달 대화 상자를 열 수 있고, 내부의 닫기 버튼을 통해 close() 메서드를 호출하여 대화 상자를 닫을 수 있습니다.
스타일링과 접근성
<dialog> 요소는 접근성을 고려하여 제작되었고, 시각 장애가 있는 사용자도 쉽게 접근할 수 있습니다. CSS로 추가적인 스타일링을 할 수도 있으며, 특히 ::backdrop을 사용해서 모달 창의 배경 스타일을 쉽게 조정할 수 있습니다.
dialog::backdrop {
background-color: rgba(72, 72, 72, 0.5);
}
이 CSS 코드는 모달 대화 상자가 열릴 때 배경을 어둡게 만들어 사용자가 대화 상자에 집중할 수 있게 돕습니다.
close 이벤트 활용하기
<dialog> 요소는 close 이벤트를 제공하여 대화 상자가 닫힌 이후의 작업을 처리할 수 있습니다. 예를 들어, 폼 제출 후 대화 상자가 닫힐 때 추가 작업을 하거나, 대화 상자가 닫힌 후 사용자에게 알림을 띄우는 등의 처리가 가능합니다.
const dialog = document.getElementById('myDialog');
dialog.addEventListener('close', () => {
console.log('대화 상자 닫힘!');
});
이 코드는 close 이벤트를 사용해 대화 상자가 닫힌 후 메시지를 출력합니다.
폼과의 결합
<dialog> 요소는 사용자 입력을 처리하는 폼과도 자주 사용됩니다. <form> 요소와 함께 사용하면 폼 제출 후 대화 상자가 자동으로 닫히도록 설정할 수 있습니다.
<dialog id="formDialog">
<form method="dialog">
<p>이름을 입력하세요:</p>
<input type="text" name="name">
<button type="submit">확인</button>
</form>
</dialog>
<button onclick="document.getElementById('formDialog').showModal()">폼 모달 열기</button>
method="dialog"를 사용하면, 폼이 제출되고 대화 상자가 자동으로 닫힙니다. 즉, 사용자 입력을 받고 종료할 수 있는 창을 간단하게 구성할 수 있습니다.
'2주차' 카테고리의 다른 글
자바스크립트 - 배열 고차 함수 (0) | 2024.12.02 |
---|---|
JavaScript의 식별자 (0) | 2024.10.30 |
[JavaScript] 자바스크립트의 데이터 타입에 대해.araboza (0) | 2024.10.29 |
[JS] 스코프(Scope) (0) | 2024.10.29 |
🤫 NaN을 조심하세요... (0) | 2024.10.29 |