多个div实现随意拖拽功能
鼠标事件
mousedown
mousemove
mouseup
注意事项:
被拖动的div的position属性值一定是absolute。切记不可使用margin-top:10px;而应该使用top:10px;
onmousedown事件需要在window.onload时加载。
如果被拖动的div上有文字会有自带的文字拖动效果,需要将改div上的所有拖动事件绑定在该div上,可以使用setCapture。
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tuozhuai</title>
<style>
* {
margin: 0px;
padding: 0px;
}
div {
width: 100px;
height: 100px;
background: red;
position: absolute;
top: 5%;
}
#div1 {
width: 100px;
height: 100px;
background: red;
position: absolute;
top: 10%;
left: 5%;
}
</style>
</head>
<body>
<div id="div1">
<input type="text" />
</div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>
<script>
function drag(id) {
var odiv = document.getElementById(id)
odiv.onmousedown = function(ev) {
var ev = ev || event;
var disX = ev.clientX - odiv.offsetLeft;
var disY = ev.clientY - odiv.offsetTop;
document.onmousemove = function(ev2) {
var ev2 = ev2 || event;
var left = ev2.clientX - disX;
var top = ev2.clientY - disY;
var w = document.documentElement.clientWidth || document.body.clientWidth;
var h = document.documentElement.clientHeight || document.body.clientHeight;
if(left > w - odiv.offsetWidth) {
left = w - odiv.offsetWidth
}
if(left < 0) {
left = 0;
}
if(top < 0) {
top = 0;
}
if(top > h - odiv.offsetHeight) {
top = h - odiv.offsetHeight
}
odiv.style.left = left + "px";
odiv.style.top = top + "px"
}
document.onmouseup = function(ev2) {
document.onmousemove = null
}
}
}
drag("div1")
drag("div2")
drag("div3")
drag("div4")
</script>
</body>
</html>
最新文章
- c语言中在引用math库后,编译出现错误(.text+0x9c):对‘sqrt’未定义的引用的解决办法
- 【转】linux 编译安装nginx,配置自启动脚本
- You can&#39;t specify target table &#39;charge&#39; for update in FROM clause
- js兼容性问题
- VC6配置OpenCV1.0
- 每天进步一点点——Linux
- java之坑-----List中的重复添加同一对象
- Storm官方帮助手册翻译(下)
- mysql优化专题」90%程序员都会忽略的增删改优化(2)
- nodejs学习笔记 —— 异步编程解决方案
- 【动画】JQuery实现冒泡排序算法动画演示
- EL表达式判断不能为空
- js关于new Date() 日期格式
- pytorch中文文档-torch.nn常用函数-待添加-明天继续
- uva11552
- java第一次考试
- 7.4 Models -- Pushing Records into the Store
- RESTORE 无法处理数据库 &#39;Students&#39;,因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
- 情感分析snownlp包部分核心代码理解
- 重装Ubuntu系统