模態框的拖拽 ( js小案例 )

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>模態框拖拽</title>
    <style>
        .click {
            text-align: center;
            cursor: pointer;
        }
        
        .login {
            text-align: right;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            display: none;
            cursor: move;
        }
        
        .x {
            display: block;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: aliceblue;
            text-align: center;
            position: absolute;
            top: -4%;
            right: -4%;
            cursor: pointer;
            box-shadow: 0 0 10px #ffffff;
            z-index: 1;
        }
        
        table {
            margin: auto;
            background-color: aliceblue;
            position: relative;
            box-shadow: 0 0 10px #ffffff;
            width: 270px;
            height: 100px;
        }
        
        th {
            text-align: center;
        }
        
        td {
            height: 30px;
        }
        
        input {
            outline: none;
        }
        
        .submit {
            text-align: center;
        }
        
        .submit input {
            cursor: pointer;
        }
        
        .gray {
            background-color: rgba(220, 220, 220, 1);
            background-color: gainsboro;
        }
    </style>
</head>

<body>
    <div class="click">點擊,彈出登錄框</div>
    <div class="login">
        <table>
            <div class="x">X</div>
            <tr>
                <th colspan="2">登錄會員</th>
            </tr>
            <tr>
                <td><label for="one">用戶名:</label></td>
                <td><input type="text" placeholder="請輸入用戶名" id="one"></td>
            </tr>
            <tr>
                <td><label for="two">登錄密碼:</label></td>
                <td><input type="password" placeholder="請輸入登錄密碼" id="two"></td>
            </tr>
            <tr>
                <td colspan="2" class="submit"><input type="submit" value="登錄會員"></td>
            </tr>
        </table>
        <script>
            var login = document.querySelector('.login');
            var x = document.querySelector('.x');
            var click = document.querySelector('.click');
            var body = document.body;
            var table = document.querySelector('table');
            click.addEventListener('click', function() {
                body.className = "gray";
                login.style.display = 'block';
            })
            x.addEventListener('click', function() {
                body.className = "";
                login.style.display = 'none';
                /* 關閉後初始化 */
                login.style.top = '50%';
                login.style.left = '50%';
            })


            table.addEventListener('mousedown', function(e) {
                var x = e.pageX - login.offsetLeft;
                var y = e.pageY - login.offsetTop;
                /* 盒子內的距離 */
                // console.log(x);
                // console.log(y);
                function move(e) {
                    // console.log(e.pageX - x);
                    // console.log(e.pageY - y);
                    /* 移動後盒子的距離 */
                    login.style.left = e.pageX - x + 'px';
                    login.style.top = e.pageY - y + 'px';
                }
                document.addEventListener('mousemove', move);

                document.addEventListener('mouseup', function() {
                	/* 鼠標擡起後移除事件mousemove */
                    document.removeEventListener('mousemove', move);
                })
            })
        </script>
    </div>
</body>

</html>

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章