美文网首页
原生js模态框

原生js模态框

作者: Peter_2B | 来源:发表于2023-10-15 14:16 被阅读0次
<body>
    <button class="open-btn">click</button>

    <div class="modal-wrapper">
        <div class="modal-content">
            <span class="close-btn">&times;</span>
            <p>Hello World</p>
        </div>
    </div>


    <script>
        let openBtn = document.querySelector('.open-btn');
        let closeBtn = document.querySelector('.close-btn');
        let modalWrapper = document.querySelector('.modal-wrapper');

        function toggleShow() {
            modalWrapper.classList.toggle('show');
        }

        openBtn.addEventListener('click', toggleShow);
        closeBtn.addEventListener('click', toggleShow);
        window.addEventListener('click', function (e) {
            if (e.target === modalWrapper) toggleShow();
        });
    </script>
</body>
    <style>
        .modal-wrapper {
            position: fixed;
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
            background-color: rgba(0, 0, 0, 0.3);

            /* visibility有过渡动画效果 display:none(元素不存在) 都没有 */
            visibility: hidden;

            /* 初始时、移除show时过渡效果、时间 */
            transition: all 0.1s ease;
            transform: scale(1.1);
            opacity: 0;
        }

        /* 添加show进入时动画时,过渡效果、时间 */
        .show {
            visibility: visible;
            opacity: 1;
            /* 这如果没有transform,就是opacity: 1 -> 0效果 */
            transform: scale(1);
            transition: all 0.1s ease;
        }

        .modal-content {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            width: 900px;
            background-color: #fff;
            border-radius: 5px;
            padding: 20px;
        }

        .close-btn {
            float: right;
            color: lightgray;
            cursor: pointer;
        }

        .close-btn:hover {
            color: #000;
        }
    </style>

相关文章

网友评论

      本文标题:原生js模态框

      本文链接:https://www.haomeiwen.com/subject/fkptidtx.html