欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Web第三次作业

Web第三次作业

2025/2/21 3:34:09 来源:https://blog.csdn.net/ILL_qq2142534554/article/details/145699013  浏览:    关键词:Web第三次作业

要求:
使用JS实现一个网页中登录窗口的显示/隐藏,页面中拖动移动,并且添加了边界判断的网页效果

HTML完整代码

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>BOMDOM综合案例</title>

    <style>

        * {

            margin: 0;

            padding: 0;

            box-sizing: border-box;

        }

        html,

        body {

            width: 100%;

            height: 100%;

        }

        .container {

            width: 100%;

            height: 100%;

            background-color: #f2f1f2;

        }

        header {

            width: 1200px;

            height: 50px;

            background-color: #fff;

            margin: 0 auto;

            display: flex;

            justify-content: space-between;

            align-items: center;

        }

        header div:nth-of-type(2) {

            display: flex;

            gap: 20px;

            cursor: pointer;

        }

        header div:nth-of-type(2) span:hover {

            font-weight: bolder;

            color: red;

        }

        .login-box {

            /* transition: 2s all; */

            display: none;

            overflow: hidden;

            width: 300px;

            height: 200px;

            background-color: #fff;

            border: solid 1px orangered;

            border-radius: 8px;

            box-shadow: rgba(255, 0, 0, 0.5) 5px 5px 5px;

            position: absolute;

            left: 1150px;

            top: 50px;

        }

        .login-box .header {

            height: 40px;

            background-color: orangered;

            display: flex;

            justify-content: space-between;

            align-items: center;

            color: white;

            cursor: pointer;

            padding: 0 10px;

        }

    </style>

</head>

<body>

    <div class="container">

        <header>

            <div>

                <span>欢迎访问OPENLAB EDU</span>

            </div>

            <div>

                <span id="login">登录</span>

                <span id="register">注册</span>

            </div>

            <div class="login-box" id="login-box">

                <div class="header" id="header">

                    <span>会员登录</span>

                    <span id="close">[关闭]</span>

                </div>

            </div>

        </header>

    </div>

    <script>

        // 获取登录按钮

        let _login = document.getElementById("login");

        let _login_box = document.getElementById("login-box");

        // 登录按钮添加事件

        _login.onclick = function () {

            //显示弹窗

            _login_box.style.display = "block";

        }

        // 获取关闭按钮

        let _colse = document.getElementById("close");

        _colse.onclick = function () {

            //隐藏弹窗

            _login_box.style.display = "none";

        }

        //__________________________

        //获取登录窗口标题

        let _header = document.getElementById("header");

        //文档中添加鼠标按下事件

        document.onmousedown = function (event) {

            //获取鼠标指针在标题上的偏移量(事件函数默认参数:事件对象)

            let offsetX = event.offsetX;

            let offsetY = event.offsetY;

            //给窗口标题,添加鼠标移动的事件

            _header.onmousemove = function(event2) {

                //鼠标移动,获取新的坐标

                let mouseX = event2.clientX;

                let mouseY = event2.clientY;

                // 计算登录窗口坐标

                let loginX = mouseX - offsetX;

                let loginY = mouseY - offsetY;

                // ----------------- 边界判断

                // 左边界

                if (loginX <= 0) {

                    loginX = 0;

                }

                // 上边界

                if (loginY <= 0) {

                    loginY = 0;

                }

                // 右边界

                let iw = window.innerWidth; // 浏览器窗口宽度

                let lw = getComputedStyle(_login_box).width; // 登录窗宽度

                lw = parseInt(lw); // 转换数据类型

                if (loginX >= (iw - lw)) {

                    loginX = iw - lw;

                }

                // 下边界

                let ih = window.innerHeight;

                let lh = getComputedStyle(_login_box).height; // 登录窗高度

                lh = parseInt(lh); // 转换数据类型

                if (loginY >= (ih - lh)) {

                    loginY = ih - lh;

                }

                //给登录窗口设置样式

                _login_box.style.left = loginX + "px";

                _login_box.style.top = loginY + "px";

            }

        }

        //鼠标抬起事件:什么都不做

        document.onmouseup = function () {

            //清除了标题上的鼠标移动事件 — 什么都不做

            _header.onmousemove = null;

        }

    </script>

</body>

</html>

实现效果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词