모달창

jinkyu Seok·2025년 1월 25일
post-thumbnail

모달창이란?

화면을 개발할 때 자주 나오는 구성 요소 중 하나가 모달(Modal)창입니다. 팝업(Popup)창과 약간 혼동해서 쓰는 경향이 있는데 Modal 과 Popup는 개념이 다릅니다, 팝업(Popup)은 현재 화면에 다른 화면을 하나의창(Browser)으로 보여주는 기능이고, 모달(Modal)은 화면 위에 하나의 작은 화면을 더 만들어 부가적인 일들을 처리할 수 있게 만드는 기능입니다.

먼저 html의 body에 아래와 같이 작성해줍니다.

modal창을 위한 div영역, modal창을 열고닫아줄 button을 하나 만들어줍니다.

<body>
    <div class="modal">
        <div class="modal_body">
            <h2>모달창 제목</h2>
            <p>모달창 내용 </p>
        </div>
    </div>
    <button class="btn-open-modal">Modal열기</button>
    
</body>
Modal열기

위와 같은 이런 효과들이 있습니다

다음으로 CSS를 작성해줍니다. 그 중에서도 먼저 .mdal을 통해 모달 창 배경화면을 덮는 스타일을 정의합니다.

즉 아래의 사진처럼 모달을 제외한 나머지 배경화면입니다.

Modal이 되는 대상의 postion을 absolute로 설정하고, 화면 전체 공간을 차지할 수 있도록 width, height를 100%로 설정합니다.

처음에 모달창은 보이지 않는 상태에서는 화면에 나타나지 않아야 하므로, display:none 속성을 기본적으로 추가해줍니다. 자바스크립트로는 버튼(button)을 클릭하면 Modal의 style.display값을 block으로 변경해줍니다.

추가적으로 .modal안의 background-color의 값은 무엇을 의미하냐면 모달창이 활성화되었을때 배경화면이 흐리게 보이게 하기 위함입니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>모달창연습</title>
    <style>
        .modal{
            position:absolute;
            display:none;
            
            justify-content: center;
            top:0;
            left:0;

            width:100%;
            height:100%;

            

            background-color: rgba(0,0,0,0.4);
        }
    </style>
</head>
<body>
    <div class="modal">
        <div class="modal_body">
            <h2>모달창 제목</h2>
            <p>모달창 내용 </p>
        </div>
    </div>
    <button class="btn-open-modal">Modal열기</button>
    <script>
        const modal = document.querySelector('.modal');
        const btnOpenModal=document.querySelector('.btn-open-modal');

        btnOpenModal.addEventListener("click", ()=>{
            modal.style.display="flex";
        });
    </script>
</body>
</html>

그리고 실행을 해보면

아래와 같이 모든 화면을 다 차지하면서 모달창이뜨게됩니다.

이제 modal의 body부분의 css를 설정해줍니다.

실질적으로 보여지는 모달화면이기 때문에 여기서 style에맞게 작성해주면됩니다.

아래의 코드를 실행시켜보면

.modal_body{
            position:absolute;
            top:50%; //모달을 화면가운데 놓기위함. 
        

            width:400px;  //모달의 가로크기 
            height:600px; //모달의 세로크기 

            padding:40px;  

            text-align: center;

            background-color: rgb(255,255,255); //모달창 배경색 흰색
            border-radius:10px; //테두리 
            box-shadow:0 2px 3px 0 rgba(34,36,38,0.15); //테두리 그림자 

            transform:translateY(-50%); //모듈창열었을때 위치설정 가운데로 
        }

아래처럼 화면 가운데 모달창이 나오고

일반적으로 볼 수 있는 모달화면이 보여집니다.

0개의 댓글