123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <style>
- #box1 {
- width: 100px;
- height: 100px;
- background-color: red;
- position: absolute;
- }
- #box2 {
- width: 100px;
- height: 100px;
- background-color: yellow;
- position: absolute;
- left: 200px;
- top: 200px;
- }
- </style>
- <script>
- window.onload = function () {
- /**
- * 拖拽box1元素
- * -拖拽的流程
- * 1.当鼠标在被拖拽元素上按下时,开始拖拽 onmousedown
- * 2.当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove
- * 3.当鼠标松开时,被拖拽元素固定在当前位置 onmouseup
- */
- //获取box1和box2
- var box1 = document.getElementById("box1");
- var box2 = document.getElementById("box2");
- var img1 = document.getElementById("img1");
-
- //开启box1的拖拽
- drag(box1);
- //开启box2的拖拽
- drag(box2);
- drag(img1);
- };
- /**
- * 提取一个专门用来设置拖拽的函数
- * 参数:
- */
- function drag(obj){
- //为box1绑定一个鼠标按下事件
- obj.onmousedown = function (event) {
- //设置box1捕获所有鼠标按下的事件
- /**
- * setCapture()
- * -只有IE支持,但是在火狐中调用时不会报错,
- * 而如果使用Chrome调用,会报错
- */
- // if (box1.setCapture) {
- // box1.setCapture();
- // };
- //也可以写成下面的格式,更简洁
- obj.setCapture && obj.setCapture();
- // box1.setCapture();//Edge不可用
- event = event || window.event;
- //div的偏移量 鼠标.clientX - 元素.offsetLeft
- //div的偏移量 鼠标.clientY - 元素.offsetTop
- var ol = event.clientX - obj.offsetLeft;
- var ot = event.clientY - obj.offsetTop;
- //为document绑定一个onmousemove事件
- document.onmousemove = function (event) {
- event = event || window.event;
- //当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove
- //获取鼠标的坐标
- var left = event.clientX - ol;
- var top = event.clientY - ot;
- //修改box1的位置
- obj.style.left = left + "px";
- obj.style.top = top + "px";
- };
- //为元素绑定一个鼠标松开事件
- document.onmouseup = function () {
- //当鼠标松开时,被拖拽元素固定在当前位置 onmouseup
- //取消document的onmousemove事件
- document.onmousemove = null;
- //取消document的onmouseup事件
- document.onmouseup = null;
- // alert("鼠标松开了");
- //当鼠标松开时,取消对事件的捕获
- obj.releaseCapture && obj.releaseCapture();
- };
- /**
- * 当我们拖拽一个网页中的内容时,浏览器会默认去搜索引擎中搜索内容,
- * 此时会导致拖拽功能的异常,这个是浏览器提供的默认行为
- * 如果不希望发生这个行为,则可以通过return false来取消默认行为
- *
- * 但是这个方法对IE8不起作用
- */
- return false;
- };
- }
- </script>
- </head>
- <body>
- 我是一段文字
- <div id="box1"></div>
- <div id="box2"></div>
- <img src="img/zly.jpeg" id="img1" style="position: absolute;"/>
- </body>
- </html>
|