拖拽盒子实现

本文介绍如何通过HTML、CSS和JavaScript实现拖拽盒子的交互效果。包括HTML结构设定、CSS样式设置和JavaScript事件监听及处理,提供详细的代码示例。

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

一、效果图

在这里插入图片描述

二、使用步骤

1.html代码

代码如下(示例):

<div id="parent">
        <div id="child"></div>
    </div>

1.css代码

代码如下(示例):

 * {
            padding: 0;
            margin: 0;
        }

        #parent {
            position: relative;
            margin: auto;
            width: 800px;
            height: 600px;
            border: 20px solid blue;
        }

        #child {
            position: absolute;
            width: 50px;
            height: 50px;
            background-color: red;
        }

2.js代码

代码如下(示例):

var parent = document.getElementById('parent')
    var child = document.getElementById('child')
    var leftObj = 0
    var topObj = 0
    // 添加事件 按下
    child.onmousedown = function () {
        console.log('测试');
        // 给文档绑定移动事件
        document.onmousemove = function (event) {
            console.log('移动了');
            var event = event || window.event
            //        鼠标距离左侧的距离-最外层盒子距离左侧的距离-最外层盒子的边框-小盒子宽度的一半
            leftObj = event.clientX - parent.offsetLeft - parent.clientLeft - child.clientWidth / 2
            topObj = event.clientY - parent.offsetTop - parent.clientTop - child.clientHeight / 2
            // 判断临界值
            var MaxX = parent.clientWidth - child.clientWidth
            var MaxY = parent.clientHeight - child.clientHeight
            if (leftObj > MaxX) {
                leftObj = MaxX
            }
            if (leftObj < 0) {
                leftObj = 0
            }
            if (topObj > MaxY) {
                topObj = MaxY
            }
            if (topObj < 0) {
                topObj = 0
            }
            child.style.top = topObj + 'px'
            child.style.left = leftObj + 'px'
        }
    }
    // 清除移动事件
    document.onmouseup = function () {
        document.onmousemove = null
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值