JavaScript,如何让一个div盒子随着鼠标移动

我们现在考虑一下如何使用一个div盒子随着鼠标的移动而移动。下面一段代码,我们开看一下:

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>hell0</title>
    <style>
        body {
            height: 1000px;
            width: 2000px;
        }

        #box1 {
            background-color: yellow;
            width: 99px;
            height: 99px;
            position: absolute;
        }
    </style>
    <script>
        window.onload = function () {
            var box1 = document.getElementById("box1");
            document.onmousemove = function (event) {
                event = event || window.event;
                var st1 = document.body.scrollTop;
                var st2 = document.documentElement.scrollTop;
                var st = st1 || st2;
                var sl1 = document.body.scrollLeft;
                var sl2 = document.documentElement.scrollLeft;
                var sl = sl1 || sl2;
                var left = event.clientX;
                var top = event.clientY;
                box1.style.left = left + sl + "px";
                box1.style.top = top + st + "px";
            }
        };
    </script>
</head>

<body>
    <div id="box1"></div>
</body>

</html>

在这里插入图片描述

在这里插入图片描述
在这里,这段代码主要实现的功能是将里面的那个黄色的div随着鼠标的移动而移动。刚开始黄色的div是在左上角的地方,但是随着鼠标的移动到中间的位置。现在我们主要看一下JS代码。
首先获取一个div的对象,var box1 = document.getElementById(“box1”);,之后我们就要给div添加点鼠标滑动的事件document.onmousemove = function (event)。
我们接着获取鼠标的坐标,通过event。(event = event || window.event;var left = event.clientX;var top = event.clientY;).如果我们要顺利实现鼠标可以左右上下随意移动,就要获取浏览器的滚动条scrollLeft属性(返回元素左边缘与视图之间的距离)和scrollTop(
返回元素上边缘与视图之间的距离。)得到滚动条滚动的距离。如果没有个浏览器的滚动条滚动的距离的话,我们的鼠标位置就不能一直位于方块的左上角的那个点上。窗口的大小和实际的页面大小不一致,实际上实际页面的高度和宽度都大于实际窗口的高度和宽度。而div是相对于页面的,其零点(0,0)也是也是相对于实际页面,也就是页面的左上角的点,而鼠标就是相对于浏览器窗口,零点(0,0)是在浏览器窗口的左上角的点。我们现在要做的就是要将页面的零点也就是div的零点对应上,代码实现如下:

var st1 = document.body.scrollTop;
var st2 = document.documentElement.scrollTop;
var st = st1 || st2;
var sl1 = document.body.scrollLeft;
var sl2 = document.documentElement.scrollLeft;
var sl = sl1 || sl2;
var left = event.clientX;
var top = event.clientY;
box1.style.left = left + sl + "px";
box1.style.top = top + st + "px";



在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例代码,可以实现鼠标点击、松开和移动时的效果: ```html <!DOCTYPE html> <html> <head> <title>鼠标事件示例</title> <style> #box { width: 100px; height: 100px; background-color: red; position: absolute; left: 0; top: 0; } </style> </head> <body> <div id="box"></div> <script> // 获取元素 var box = document.getElementById("box"); // 定义变量,记录鼠标是否按下 var isMouseDown = false; // 添加鼠标按下事件 box.addEventListener("mousedown", function(event) { // 将变量设置为 true isMouseDown = true; // 记录鼠标按下时的位置 var x = event.clientX; var y = event.clientY; // 添加鼠标移动事件 document.addEventListener("mousemove", moveHandler); // 添加鼠标松开事件 document.addEventListener("mouseup", function() { // 将变量设置为 false isMouseDown = false; // 移除鼠标移动事件 document.removeEventListener("mousemove", moveHandler); }); // 鼠标移动事件处理函数 function moveHandler(event) { if (isMouseDown) { // 计算鼠标移动的距离 var deltaX = event.clientX - x; var deltaY = event.clientY - y; // 更新盒子的位置 box.style.left = parseInt(box.style.left) + deltaX + "px"; box.style.top = parseInt(box.style.top) + deltaY + "px"; // 更新 x 和 y 的值 x = event.clientX; y = event.clientY; } } }); </script> </body> </html> ``` 这段代码定义了一个红色的正方形盒子(100px × 100px),当鼠标按下该盒子移动时,盒子跟随鼠标移动。当鼠标松开时,盒子停止跟随移动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值