抓住一点:一系列的加减操作都是为了获取浮动框左上角应该停留在哪个位置
layer
找到原因了document.documentElement.clientWidth不能设置成全局变量
你这十有八九是是忘记监听mouseup事件并clearInterval定时器了
当然是0 你自己设置的。
按下事件还没执行呢
可能这个事件监听函数没有绑定成功,看看an(id)函数的参数是否是正确的id
没有看到全部代码因此不太清楚问题所在,我按照老师写的并没有问题。
有的,你仔细看,dialog里面有个class="dialogTile"
你写的代码贴出来啊,是不是获取了错误的对象,还是没有写宽度?
onmousemove这个事件绑定到document上 “document.onmousemove“
这是一个css样式,z-index是改变元素的层级,数值越大,层级越高。有一个很直观的方法,就是打开Chrome/Firefox中审查元素(F12),在这个开发者工具有一个叫3D视图的东西,点击它就能看到一个网页的立体视图,层级一目了然。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>慕课网-拖拽实现</title> <style type="text/css"> #draggable{ width: 100px;height: 100px; position: absolute;top: 100px;left: 100px;border: 1px solid #ccc;background: #eee;padding: 10px;cursor: move;} </style> </head> <body> <div id="draggable">拖我</div> <script type="text/javascript"> var oDrag = document.getElementById('draggable'); var isDraging = false; var startX = 0; var startY = 0; oDrag.addEventListener('mousedown',function(e){ //鼠标事件1 - 在标题栏按下(要计算鼠标相对拖拽元素的左上角的坐标 ,并且标记元素为可拖动) isDraging = true; startX = e.pageX - this.offsetLeft; startY = e.pageY - this.offsetTop; }) document.onmouseup = function(e){ //鼠标事件3 - 鼠标松开的时候(标记元素为不可拖动) isDraging = false; } document.onmousemove = function(e) { //鼠标事件2 - 鼠标移动时(要检测,元素是否标记为移动) var moveX = e.pageX - startX; var moveY = e.pageY - startY; var pageX = document.documentElement.clientWidth - oDrag.offsetWidth; var pageY = document.documentElement.clientHeight - oDrag.offsetHeight; moveX = Math.min(pageX, Math.max(0, moveX)); moveY = Math.min(pageY, Math.max(0, moveY)); if (isDraging) { oDrag.style.left = moveX + 'px'; oDrag.style.top = moveY + 'px'; } }; </script> </body> </html>
是的!
课程里面说将拖动事件(move)的对象写为document,而不是g('dialog').
把你写好的代码贴出来,看下,你是不是在 window.onresize 属性下面调用了 showDialog() 函数
点击课程视频下方的【资料下载】按钮就可以看到了。
这句代码是防止选中的。
onresize事件中,重新设置拖拽范围
完全没明白的啥意思
moveX<0,则moveX=0;moveX>maxX,则moveX=maxX; 0<moveX<maxX,moveX =moveX;
这个你不影响 你可以设置 css
.dialog{
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
}
都一样的
disply 少写了a