javasctipt闭包之拖拽

本文介绍了一种使用JavaScript闭包实现元素拖拽的方法。通过简单的代码示例,展示了如何利用闭包保存鼠标相对于元素的位置,并在鼠标移动时更新元素的位置。

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

 原文的传送门在这里http://bbs.51js.com/viewthread.php?tid=85895&extra=page%3D1

 

原文如下:(写的很不错,决定收藏了)

 

闭包 之 拖拽原来如此简单!!!

先运行效果看哈。不然,又有同学没有看帖子的欲望了。
所用公式:

拖动 = {
        Element.left = 鼠标.left - 鼠标拖动前距元素左边的距离(闭包);
        Element.top = 同理。
}

代码解释:

1. 兼容浏览器:
        var e = window.event || e; // ie || ff
        var _x = e.offsetX || e.layerX; // ie || ff
        var _y = e.offsetY || e.layerY; // ie || ff
        o.style.filter = 'Alpha(opacity=50)'; // ie
        o.style.opacity = '0.5'; // ff

2. 闭包:
        把 _x 和 _y 先存起来,当执行 onmousemove 时再用它。

3. 原理
        1) 当 div 执行 onmousedown 时,掉用 Drag 函数,传入参数 “元素”和“事件”;
        2) 保存 鼠标距元素 left 和 top 的距离,等待执行 onmousemove 和 onmouseup;
        3) onmousemove 时,修改元素“透明度”和“坐标值”;
        4) onmouseup 时,清空 “onmousemove 的指向” 和 “透明度的值”;

结束篇:
        申明:本人不是搞前端的,是纯粹的js爱好者。
        发贴的原因:
                1.周末没事干。
                2.老是潜水不道德:P。
                3.向学js的同学们回馈下所学的内容,希望对他们有所帮助。
        期望:有帐号的同学多拍砖,多提意见。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值