拖拽

2 篇文章 0 订阅
2 篇文章 0 订阅
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>拖拽</title>
    <style>
        *{margin: 0;padding: 0;}
        #box{
            position:absolute;width: 100px;
            height:100px;
        background: red;}
    </style>
    <script src="js-拖拽.js">
    var obox=document.getElementById('box');

    obox.onmousedown=function (ev) {
        var e=ev || window.event;

        var li=e.clientX-obox.offsetLeft;  //鼠标点击的位置到div左边框的距离
        var lT=e.clientY-obox.offsetTop;   //鼠标点击的位置到div上边框的距离

        // 针对低版本IE的方法,setCapture方法在oBox元素和下面的元素中间添加了一个透明层
        if(obox.setCapture)
        {
            obox.setCapture();
        }

        document.onmousemove=function (ev) {
            var e = ev || window.event;

            var il = e.clientX - li;   //计算移动之后的div到浏览器左边的距离(left)
            var Tl = e.clientY - lT;   //计算移动之后的div到浏览器上边的距离(top)

            var MaxW=document.documentElement.clientWidth-obox.offsetWidth;  //浏览器视窗宽度-元素实际宽度
            var MaxH=document.documentElement.clientHeight-obox.offsetHeight; //浏览器视窗高度-元素实际高度
            //不超过左边的边框
            if(il<0)
            {
                il=0;
            }
            //不超过上边的边框
            if(Tl<0)
            {
                Tl=0;
            }

            //不超过右边的边框
            if(il>MaxW)
            {
                il=MaxW;
            }
            //不超过下边的边框
            if(Tl>MaxH)
            {
                Tl=MaxH;
            }


            //将值附给obox
            obox.style.left = il + 'px';
            obox.style.top = Tl + 'px';

        };

            document.onmouseup=function () {

                //销毁机制
                document.onmousemove=null;
                document.onmouseup=null;

                //取消透明层
                if(obox.releaseCapture)
                {
                    obox.releaseCapture();
                }
            };
        return false;  //阻止浏览器的默认行为,会选中文字
    }


</script>
</head>
<body>
    <div id="box"></div>
    
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值