JS事件中级 --- 拖拽
2024-09-05 10:51:03
http://bbs.zhinengshe.com/thread-1200-1-1.html
要求:实现div块的拖拽
原理:拖拽过程中鼠标点和div块的相对位置保持不变。
需要理解三点:
1. 为什么要把onmousemove,onmouseup加在document上面 ?
2. onmouseup要怎么使用 ?
3. 如何防止div块跑出边界 ?
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
#div1 {
width: 200px;
height: 200px;
background-color: red;
position: absolute;
}
</style>
<script>
window.onload = function () {
var oDiv = document.getElementById("div1"); var disX = 0;
var disY = 0; oDiv.onmousedown = function (event) {
disX = event.clientX - oDiv.offsetLeft;
disY = event.clientY - oDiv.offsetTop; document.onmousemove = function (event) { var divLeft = event.clientX - disX;
var divTop = event.clientY - disY; if (divLeft < 0) divLeft = 0;
if (divLeft > document.documentElement.clientWidth-oDiv.offsetWidth) {
divLeft = document.documentElement.clientWidth-oDiv.offsetWidth;
}
if (divTop < 0) divTop = 0;
if (divTop > document.documentElement.clientHeight - oDiv.offsetHeight) {
divTop = document.documentElement.clientHeight - oDiv.offsetHeight;
} oDiv.style.left = divLeft + "px";
oDiv.style.top = divTop + "px";
};
document.onmouseup = function () {
document.onmousemove = null;
document.onmouseup = null;
}
};
}
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>
运行效果:【点击这里】
最新文章
- Jexus web server V5.4.5 已经发布
- php/js互传cookie中文乱码的问题
- python--ulipad控制台中文输出乱码
- JSP中文乱码解决方案
- C++ Ouput Exactly 2 Digits After Decimal Point 小数点后保留三位数字
- NOIP 2014 普及组 T4 子矩阵
- ViewState的用法
- MongoDB索引(一) --- 入门篇:学习使用MongoDB数据库索引
- [Noi2015]小园丁和老司机
- Go 语言常量
- C++对象模型的那些事儿之二:对象模型(下)
- 洛谷P1494 【[国家集训队]小Z的袜子】
- 如何使用Beyond Compare 对比差异文件【制作Patch(补丁包)文件】
- 学习笔记43—Linux基础集
- Codeforces Round #506 (Div. 3) C. Maximal Intersection
- 属性动画和Activity、Fragment过渡动画等
- Netty 零拷贝(一)Linux 零拷贝
- 移植C/C++代码的十个技巧
- Python 面向对象编程——访问限制
- js里面return 和 return false的区别