鼠标事件

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>

最新文章

  1. c语言中在引用math库后,编译出现错误(.text+0x9c):对‘sqrt’未定义的引用的解决办法
  2. 【转】linux 编译安装nginx,配置自启动脚本
  3. You can&#39;t specify target table &#39;charge&#39; for update in FROM clause
  4. js兼容性问题
  5. VC6配置OpenCV1.0
  6. 每天进步一点点——Linux
  7. java之坑-----List中的重复添加同一对象
  8. Storm官方帮助手册翻译(下)
  9. mysql优化专题」90%程序员都会忽略的增删改优化(2)
  10. nodejs学习笔记 —— 异步编程解决方案
  11. 【动画】JQuery实现冒泡排序算法动画演示
  12. EL表达式判断不能为空
  13. js关于new Date() 日期格式
  14. pytorch中文文档-torch.nn常用函数-待添加-明天继续
  15. uva11552
  16. java第一次考试
  17. 7.4 Models -- Pushing Records into the Store
  18. RESTORE 无法处理数据库 &#39;Students&#39;,因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
  19. 情感分析snownlp包部分核心代码理解
  20. 重装Ubuntu系统

热门文章

  1. 从零开始制作 Hexo 主题
  2. 02-MySQL基础
  3. 佳文赏析:How to uninstall Linux
  4. SpringCloud---熔断降级理解、Hystrix实战(五)
  5. golang项目练习
  6. Spring Mybatis多数据源配置范例
  7. python3中的 zip()函数 和python2中的 zip()函数 的区别
  8. [HNOI2001] 产品加工
  9. 常见的概率分布类型(Probability Distribution)
  10. .Net Core实践4 web 反向代理