사용자 도구

사이트 도구


wiki:howto:how_to_-_css_js_modal

문서의 이전 판입니다!


HOW TO - CSS/JS Modal

  • description : How TO - CSS/JS Modal
  • author : 오션
  • email : shlim@repia.com
  • lastupdate : 2021-04-09


Ref

How TO - CSS/JS Modal

CSS 및 JavaScript로 모달 박스를 만드는 방법을 학습합니다.

How to Create a Modal Box

모달은 현재 페이지의 맨 위에 표시되는 대화 상자 / 팝업 창입니다.

Step 1) Add HTML:

HTML 예제

<h2>Modal Example</h2>
    <!-- Trigger/Open The Modal -->
    <button id="myBtn">Open Modal</button>
    <!-- The Modal -->
    <div id="myModal" class="modal">
        <!-- Modal Content -->
        <div class="modal-content">
            <span class="close">&times;</span>
            <p>Strike while the iron is hot!</p>
        </div>
    </div>


Step 2) Add CSS:

CSS 예제

<style>
        body {font-family: Arial, Helvetica, sans-serif;}
        /* The Modal (background) */
        .modal {
            display: none;      /* Hidden by default */
            position: fixed;    /* Stay in place */
            z-index: 1;         /* Sit on top */
            padding-top: 100px; /* Location of the box  */
            left: 0;
            top: 0;
            width: 100%;        /* Full width */
            height: 100%;       /* Full height */
            overflow: auto;     /* Enable scroll if needed */
            background-color: rgb(0, 0, 0);         /* Fallback color */
            background-color: rgba(0, 0, 0, 0.4);   /* Black with opacity */
        }
        /* Modal Content */
        .modal-content {
            background-color: #fefefe;
            margin: auto;
            padding: 20px;
            border: 1px solid #888;
            width: 80%;
        }
        /* The Close Button */
        .close {
            color: #aaaaaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
        }
        .close:hover,
        .close:focus {
            color: #000;
            text-decoration: none;
            cursor: pointer;
        }
    </style>


Step 3) Add JavaScript:

JavaScript 예제

    <script>
        // Ger the modal
        var modal = document.getElementById("myModal");
        // Get the button that opens the modal
        var btn = document.getElementById("myBtn");
        // Get the <span> element that closes the modal
        var span = document.getElementsByClassName("close")[0];
        // When the user clicks the button, open the modal
        btn.onclick = function () {
            modal.style.display = "block";
        }
        // When the user clicks on <span> (x), close the modal.
        span.onclick = function () {
            modal.style.display = "none";
        }
        // When the user clicks anwhere outside of the modal, close it.
        window.onclick = function (event) {
            if (event.target == modal) {
                modal.style.display = "none";
            }
        }
    </script>

modal-header, modal-body, modal-footer를 위한 클래스를 추가합니다.

HTML 예제

    <h2>Animated Modal with Header and Footer</h2>
    <!-- Trigger/Open The Modal -->
    <button id="myBtn">Open Modal</button>
    <!-- The Modal -->
    <div id="myModal" class="modal">
        <!-- Modal content -->
        <div class="modal-content">
            <div class="modal-header">
                <span class="close">&times;</span>
                <h2>Modal Header</h2>
            </div>
            <div class="modal-body">
                <p>Don't judge a book by its cover.</p>
                <p>Don't cross the bridge until you come to it.</p>
            </div>
            <div class="modal-footer">
                <h3>Modal Footer</h3>
            </div>
        </div>
    </div>


modal 헤더, 바디 그리고 풋터에 스타일을 지정하고 modal에 애니메이션 슬라이드를 추가합니다.

 

Bottom Modal ("Bottom sheets")

하단에서 슬라이드 되는 화면 전체 너비의 모달을 생성하는 방법에 관한 예제

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body {font-family: Arial, Helvetica, sans-serif;}
        /* The Modal (background) */
        .modal {
            display: none;      /* Hidden by default */
            position: fixed;    /* Stay in place */
            z-index: 1;         /* Sit on top */
            padding-top: 100px; /* Location of the box */
            left: 0;
            top: 0;
            width: 100%;        /* Full width */
            height: 100%;       /* Full height */
            overflow: auto;     /* Enable scroll if needed */
            background-color: rgb(0, 0, 0);     /* Fallback color */
            background-color: rgba(0, 0, 0, 0.4);/* Black with opacity */
        }
        .modal-content {
            position: relative;
            background-color: #fefefe;
            margin: auto;
            padding: 0;
            border: 2px solid crimson;
            width: 80%;
            box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
            -webkit-animation-name: animatetop;
            -webkit-animation-duration: 0.4s;
            animation-name: animatetop;
            animation-duration: 0.4s;
        }
        /* Add Animation */
        @-webkit-keyframes animatetop {
            from {top: -300px; opacity: 0}
            to {top: 0; opacity: 1}
        }
        @keyframes animatetop {
            from {top: -300px; opacity: 0}
            to {top: 0; opacity: 1}
        }
        /* The Close Button */
        .close {
            color: white;
            float: right;
            font-size: 28px;
            font-weight: bold;
        }
        .close:hover, .close:focus {
            color: #000;
            text-decoration: none;
            cursor: pointer;
        }
        /* Modal Header */
        .modal-header {
            padding: 2px 16px;
            background-color: #5cb85c;
            color: white;
        }
        /* Modal Body */
        .modal-body {
            padding: 2px 16px;
        }
        /* Modal Footer */
        .modal-footer {
            padding: 2px 16px;
            background-color: #5cb85c;
            color: white;
        }
    </style>
</head>
<body>
    <h2>Animated Modal with Header and Footer</h2>
    <!-- Trigger/Open The Modal -->
    <button id="myBtn">Open Modal</button>
    <!-- The Modal -->
    <div id="myModal" class="modal">
        <!-- Modal content -->
        <div class="modal-content">
            <div class="modal-header">
                <span class="close">&times;</span>
                <h2>Modal Header</h2>
            </div>
            <div class="modal-body">
                <p>Don't judge a book by its cover.</p>
                <p>Don't cross the bridge until you come to it.</p>
            </div>
            <div class="modal-footer">
                <h3>Modal Footer</h3>
            </div>
        </div>
    </div>
    <script>
        // Get the modal
        var modal = document.getElementById("myModal");
        // Get the button that opens the modal
        var btn = document.getElementById("myBtn");
        // Get the <span> element that closes the modal
        var span = document.getElementsByClassName("close")[0];
        // When the user clicks the button, open the modal
        btn.onclick = function () {
            modal.style.display = "block";
        }
        // When the user clicks on <span> (x), close the modal
        span.onclick = function () {
            modal.style.display = "none";
        }
        // When the user clicks anywhere outside of the modal, close it
        window.onclick = function (event) {
            if (event.target == modal) {
                modal.style.display = "none";
            }
        }
    </script>
</body>
</html>
/volume1/web/dokuwiki/data/attic/wiki/howto/how_to_-_css_js_modal.1617942054.txt.gz · 마지막으로 수정됨: 2022/03/10 19:52 (바깥 편집)