当前位置: 首页 > news >正文

第三次作业

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

实现代码:

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</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 {
            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">
        <!-- 页头 -->
        <!-- <div class="header"></div> -->
        <!-- H5语义化标签,表示开发页头部分 -->
        <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 _close = document.getElementById("close");
        _close.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 + "px";
                let loginY = mouseY - offsetY + "px";
 
                // 给登录窗口设置样式
                _login_box.style.left = loginX;
                _login_box.style.top = loginY;
 
            }
 
        }
 
        // 鼠标按键抬起事件:什么都不做
        document.onmouseup = function () {
            // 清除了标题上的鼠标移动事件 - 什么都不做
          _header.onmousemove = null;
        }
    </script>
</body>
</html>

效果图展示:

相关文章:

  • 【详细指南】如何在银河麒麟操作系统上使用DeepSeek?
  • flutter 打包mac应用并安装过程
  • 42.水果销售系统(springbootvue的Java项目[含微信小程序])
  • LabVIEW外腔二极管激光器稳频实验
  • 基于SpringBoot的电影院售票管理系统
  • nextjs的基础了解
  • 【C/C++算法】从浅到深学习--- 二分查找(图文兼备 + 源码详解)
  • 第十一篇:EMC的“电磁护盾”——三电系统干扰抑制实战
  • 【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十四节】
  • 庞氏骗局(Ponzi Scheme):金融投资与公司经营中的隐形陷阱(中英双语)
  • 恒创科技:如何重新启动 Windows 服务器
  • Windows电脑笔记软件多 推荐几款好用的笔记工具
  • Android图片加载框架Coil,Kotlin
  • 企业的文档安全怎么防护?
  • 无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架
  • uniapp在地图上加载CAD图,标记区域网格,加载geojson数据
  • Git指南-从入门到精通
  • LabVIEW 用户界面设计基础原则
  • Node.js 连接 MongoDB
  • C# 封送和远程编程介绍
  • 网站建设佰首选金手指二八/app引导页模板html
  • 品牌策划案例范文/河南seo和网络推广
  • 做视频直播类型的网站/查看浏览过的历史记录百度
  • 互联网网站建设哪里好/天津网站排名提升多少钱
  • asp双语网站后台怎么用/武汉做网络推广的公司
  • 做婚恋网站要多少钱/优化大师win10