可拖拽的元素的一个javascript实现方法

通过添加捕捉事件来完成监听偏移量
可以直接下载附件浏览器打开。
没有考虑 IE的兼容问题

<!doctype html>
<html>
<head></head>
<body>
    <div style="width:100px;height:100px;position:absolute;top:0px;left:0px;background-color:red;cursor:default" onmousedown="drag(this,event)">
        拖动我
    </div>
</body>
<script type="text/javascript">
function drag(element,event) {

    // 鼠标起始坐标
    var 
    startX = event.clientX,
    startY = event.clientY,
    // 元素相对于document的位置
    orignX = element.offsetLeft,
    orignY = element.offsetTop,

    // 获取鼠标相对元素的位置(在mousemove事件中,元素始终保持和鼠标的绝对偏移量不变)
    oX = startX - orignX,
    oY = startY - orignY;

    // 注册监听事件为捕捉(true),这里事件要传递句柄名称
    if(document.addEventListener) {
        document.addEventListener('mousemove',moveHandler,true);
        document.addEventListener('mouseup',upHandler,true);
    }

    // 这里定义了两个事件句柄 

    // 这个e为mousemove事件,不再是mousedown触发的drag
    function moveHandler(e) {
        element.style.left = e.clientX - oX + 'px';
        element.style.top = e.clientY - oY + 'px';
    }
    // 
    function upHandler(e) {
        document.removeEventListener('mousemove',moveHandler,true);
        document.removeEventListener('mouseup',upHandler,true);
    }
}
</script>
</html>

转载于:https://www.cnblogs.com/osinger/p/6015314.html

以下是一个简单的实现可以拖动的元素JavaScript 代码: HTML: ```html <div id="myElement">我可以被拖动</div> ``` CSS: ```css #myElement { width: 200px; height: 200px; background-color: blue; color: white; text-align: center; line-height: 200px; cursor: move; } ``` JavaScript: ```javascript // 获取被拖动的元素 var myElement = document.getElementById("myElement"); // 当鼠标按下时,开始拖动 myElement.addEventListener("mousedown", function(event) { // 阻止默认事件,避免选中文字等影响拖动 event.preventDefault(); // 记录鼠标按下位置和被拖动元素的初始位置 var startX = event.clientX; var startY = event.clientY; var initialX = myElement.offsetLeft; var initialY = myElement.offsetTop; // 当鼠标移动时,更新被拖动元素的位置 function move(event) { // 计算鼠标移动距离 var deltaX = event.clientX - startX; var deltaY = event.clientY - startY; // 更新被拖动元素的位置 myElement.style.left = initialX + deltaX + "px"; myElement.style.top = initialY + deltaY + "px"; } // 当鼠标释放时,停止拖动 function stop() { document.removeEventListener("mousemove", move); document.removeEventListener("mouseup", stop); } // 将 move 和 stop 函数绑定到 document 上 document.addEventListener("mousemove", move); document.addEventListener("mouseup", stop); }); ``` 这段代码会让 `myElement` 元素变成一个可以拖动的元素,当鼠标按下时,记录鼠标位置和元素初始位置,然后在鼠标移动时更新元素位置,最后当鼠标释放时停止拖动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值