|
用js制作拖曳 |
|
首先我们来分析一下拖曳的步骤,首先当然是你的鼠标在要拖曳的层上按下,然后的事情,可以想象:是一个鼠标跟随。最后,拖到了目的地,鼠标按键放开,拖曳结束。
如果你看过本站的事件驱动那你一定知道鼠标按下触发的是mousedown事件,鼠标放开的事件是mouseup,而实现事件驱动函数的方法是obj.onmousedown=func;取消的方法是obj.onmousedown=null;好了,知道了上面的知识,让我们来看看代码: <script> var offy; var offx;//offy,offx保存了鼠标按下的位置在被拖曳物体内的相对坐标 function drag() { alll.style.top=event.clientY+document.body.scrollTop-offy; alll.style.left=event.clientX+document.body.scrollLeft-offx; return true; }// 鼠标跟随用的函数 function start_drag() { offy=event.offsetY; offx=event.offsetX; document.onmousemove=drag; }//开始拖曳(使鼠标跟随有效) function stop_drag() { document.onmousemove=null; }//停止拖曳(使鼠标跟随失效) </script> <!--定义一个层alll <div id=alll style="height:200;width=200" onmousedown="start_drag()" onmouseup="stop_drag()" onmouseout="stop_drag()">这个层能被拖曳耶!</div> 注:当鼠标按下时开始跟随,鼠标放开或离开层时停止跟随,加入onmouseout是因为有时onmouseup的响应不太好。 |