实现鼠标可以自由拖拽页面中的元素(比如div,图片等),首先为要拖动的元素设置 css 为绝对定位(或者使用transform,但使用绝对定位更常见),然后需要用到三个事件:mousedown, mousemove 和 mouseup。
实现思路:
a) 页面中添加一个div,作为容器,容易的class 设置为 container,并将其设置为相对定位;
b) 在 container 中添加一个div,作为拖拽的目标,并将其设置为绝对定位;
c) 给推拽目标添加 mousedown 事件,mousedown 事件记录鼠标按下的坐标;
d) mousedown 函数中,注册 mousemove 和 mouseup 事件;
e) mousemove 事件中,记录鼠标坐标,并与mousedown事件的起始坐标计算,得出移动的距离,根据这个距离重新给拖拽目标设置定位;
f) mouseup 事件中取消 mousemove、mouseup 事件。
具体实现
HTML
<div class="container"> <div class="el"></div> </div>
CSS
.container {
position: relative;
width: 100vw;
height: 100vh;
}
el {
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
background: red;
}JS
var el = document.querySelector('.el');
el.addEventListener('mousedown', mouseDown);
var startX, startY, offsetX, offsetY;
function mouseDown(e) {
startX = e.clientX;
startY = e.clientY;
offsetX = el.offsetLeft; //记录原始位置
offsetY = el.offsetTop;
document.addEventListener('mousemove', mouseMove);
document.addEventListener('mouseup', mouseUp);
}
function mouseMove(e) {
var x = e.clientX - startX;
var y = e.clientY - startY;
el.style.left = offsetX + x + 'px';
el.style.top = offsetY + y + 'px';
}
function mouseUp(e) {
document.removeEventListener('mousemove', mouseMove);
document.removeEventListener('mouseup', mouseUp);
}
匿名
2025-11-09
https://collaigo.com 免费在线拼图工具
匿名
2025-10-22
盖楼盖楼!
匿名
2025-08-11
沙发沙发
匿名
2025-08-10
https://at.oiik.cn/bing.html
匿名
2025-02-21
实用,我在开发https://minmail.app/时候使用到了
王飞翔
2024-12-30
亲爱的朋友:您好!中国疫情持续蔓延,很多人症状非常严重持久不愈,医院人满为患,各年龄段随地倒猝死的现象暴增,多省感染手足口、甲流、乙流、支原体、合胞及腺病毒的儿童不断攀升,目前各种天灾人祸,天气异象频发。古今中外的很多预言都说了这几年人类有大灾难,如刘伯温在预言中说 “贫者一万留一千,富者一万留二三”,“贫富若不回心转,看看死期到眼前”, 预言中也告诉世人如何逃离劫难的方法,真心希望您能躲过末劫中的劫难,有个美好的未来,请您务必打开下方网址认真了解,内有躲避瘟疫保平安的方法。网址1:https://github.com/1992513/www/blob/master/README.md?abhgc#1 网址2:bitly.net/55bbbb 网址3:https://d3ankibxiji86m.cloudfront.net/30gj 如打不开请多换几个浏览器试