拖拽中怎么修复bug

本文介绍了拖拽原理,通过设置Box元素的position为absolute,并获取鼠标坐标和元素相对父级的位置,计算出鼠标与盒子的偏移量。在鼠标按下事件中更新Box的即时坐标,实现拖动效果。提供了一个案例代码,由作者王华桥分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


拖拽原理

设被拖动盒子为“Box”;
设iEvent=ev || event;
给Box设position:absolute样式;

鼠标坐标(iEvent.clientXiEvent.clientY);
Box相对父级距离(Box.offsetLeftBox.offsetTop
计算出鼠标相对于盒子的距离(BoxX=iEvent.clientX-Box.offsetLeftBoxY=iEvent.clientY-Box.offsetTop


给Box添加鼠标按下事件:Box.οnmοusedοwn=function(){};

Box的即时坐标:
Box.style.left=iEvent.clientX-BoxX+’px’;
Box.style.top=iEvent.clientY-BoxY+’px’;


案列代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #box{
                width: 200px;
                height: 120px;
                background-color: crimson;
                position: absolute;
                cursor: pointer;
            }

        </style>
        <script type="text/javascript">
            window.onload=function(){
                var Box=document.getElementById('box');
                var divX=0;
                var divY=0;
                Box.onmousedown=function(ev){
                    var iEvent=ev || event;
                    divX=iEvent.clientX-Box.offsetLeft;
                    divY=iEvent.clientY-Box.offsetTop;
                    document.onmousemove=function(ev){
                        var iEvent=ev || event;                     
                        Box.style.left=iEvent.clientX-divX+'px';
                        Box.style.top=iEvent.clientY-divY+'px';                     
                    };                                      
                };
                Box.onmouseup=function(){
                    document.onmousemove=null;                                  
                };
            };
        </script>
    </head>
    <body>
        <div id="box"></div>
    </body>
</html>

每日清新
这里写图片描述

作者:王华桥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值