前端 拖拽---------小计

本文介绍了一种使用HTML、CSS和JavaScript实现的拖拽功能,该功能允许用户在页面上自由拖动元素,并通过边界值限制防止元素超出可视区域。代码示例详细展示了如何捕捉鼠标事件并更新元素位置,同时确保元素不会移出窗口边界。

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

拖拽+边界值限定

 <style>
        html,body{
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }
        .move-box{
            width: 420px;
            height: 560px;
            background:#f40 ;
            position: absolute;
            margin: 0 auto;
            top: 30px;
            left: 30px;
        }
        .move-model{
            position: relative;
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
        <div class="move-box">宽100高100</div>
    <script>
        let draw = document.getElementsByClassName('move-box')[0]
            // 盒子宽高
            let width = draw.offsetWidth
            let height = draw.offsetHeight
            // 记录鼠标按下位置
            let dX,dY
            draw.onmousedown=function(e){
                dX = e.offsetX
                dY = e.offsetY
              // 小细节 移动事件绑定在 document 上
                document.onmousemove=function(eD){
                    let top = eD.pageY - dY
                    let left = eD.pageX - dX
                    // 边界值限定
                    let maxLeft = window.innerWidth - width - 30
                    let maxTop = window.innerHeight - height - 30
                    draw.style.top = top > maxTop ? maxTop + 'px' : (top > 30 ? top + 'px' : '30px')
                    draw.style.left = left > maxLeft ? maxLeft + 'px' : (left > 30 ? left + 'px' : '30px')
                    
                }
                document.onmouseup = function(e){
                    if(document.onmousemove && typeof document.onmousemove === 'function'){
                        document.onmousemove=null
                        document.onmouseup = null
                    }
                }
                // 阻止默认行为
                return false
            }
    </script>
</body>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值