转行学开发,代码100天——2018-04-08
<!doctype html> <html> <head> <meta charset="utf-8"> <title>修改代码,右边会自动显示结果</title> <!--适应移动端--> <meta name="viewport" content="width=device-width, initial-scale=1"> <!--css样式--> <style> body{background-color: #EBEBEB} #aaa{ background-color: #CB4F51; padding: 10px; display: block; width:100px; height:100px; font-size:12px; text-align:center; line-height:100px; overflow:hidden; cursor:move; } </style> <!--引用jquery库--> <script src="https://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script> </head> <body> <h3>这是一个简单的拖拽效果</h3> <div id="aaa"> 时光,拖着我走! </div> <script type="text/javascript"> $(document).ready(function(){ var box= document.getElementById("aaa"); dragMove(box); function dragMove(obj){ obj.onmousedown = function(e){ //鼠标按下事件 e = e||window.event; var x_down = e.clientX; //鼠标按下x坐标 var y_down = e.clientY; //鼠标按下y坐标 var left = this.offsetLeft; //盒子当前的left位置 var top = this.offsetTop; //盒子当前的top位置 // alert(x_down+":"+y_down+":"+left+":"+top); document.onmousemove = function(e){ e = e||window.event; //鼠标移动坐标 var x_move = e.clientX; var y_move = e.clientY; //移动距离计算:移动距离=移动的坐标-按下的坐标 var x_now = x_move-x_down; var y_now = y_move-y_down; //赋值给box对象 obj.style.left = left+x_now+"px"; obj.style.top = top+y_now+"px"; } document.onmouseup = function(e){ //清除移动和抬起事件 this.onmousemove = this.onmouseup = null; } return false;//阻止默认事件 } } }); </script> </body> </html>
这样完成代码后,发现并不能出现预期的拖动效果,检查鼠标事件的坐标值也都输出正常,奇怪?!
注:需要移动的元素必须绝地定位!!!
最后查了资料,发现div盒子的css中未设置绝对定位,即position:absolute;
增加该项后,拖动效果出现了。。
#aaa{ background-color: #CB4F51; padding: 10px; display: block; width:100px; height:100px; font-size:12px; text-align:center; line-height:100px; overflow:hidden; cursor:move; position:absolute; }
注:需要移动的元素必须绝地定位!!!
注:需要移动的元素必须绝地定位!!!
注:需要移动的元素必须绝地定位!!!