JS技术

Javascript教程:网页拖放实现代码

字号+ 作者:H5之家 来源:H5之家 2015-09-10 12:04 我要评论( )

Javascript教程:网页拖放实现代码,学习Javascript教程:网页拖放实现代码,Javascript教程:网页拖放实现代码,查看Javascript教程:网页拖放实现代码,Javascript教程

Javascript教程:网页拖放实现代码

 

    拖放是一种非常流行的用户界面模式。它的概念很简单:点击某个对象,兵按住鼠标按钮不放,将鼠标移动到另一个区域,然后释放鼠标按钮讲对象“放”在这里。拖放功能也流行到了Web上,成为了一些更传统的配置界面的一种候选方案;
    拖放的基本概念:创建一个绝对定位的元素,使其可以用鼠标移动。这个技术源自一种叫做“鼠标拖尾”的经典网页技巧。
    鼠标拖尾是一个或者多个图片在页面上跟着鼠标指针移动。单元素鼠标拖尾的基本代码需要为文档设置一个onmousemove事件处理程序,它总是将指定元素移动到鼠标指针的位置,如下面的例子所示:

EventUtil.addHandler(document, "mousemove", function (event) { var myDiv = document.getElementById("myDiv"); myDiv.style.left = event.clientX + "px"; myDiv.style.top = event.clientY + "px"; });

    在这个例子中,元素的left和top坐标设置为了event对象的clientX和clientY属性,这就将元素放到了视口中指针的位置上。它的效果是一个元素始终跟随指针在页面上的移动。只要正确的时刻(当鼠标按钮按下的时候)实现该功能,并在之后删除它(当释放鼠标按钮时),就可以实现拖放了。最简单的拖放界面可以用以下代码实现:

var DragDrop = function () { var dragging = null; function handleEvent(event) { //获取事件和目标 event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event); //确定事件类型 switch (event.type) { case "mousedown": if (target.className.indexOf("draggable") > -1) { dragging = target; } break; case "mousemove": if (dragging !== null) { //获取事件 event = EventUtil.getEvent(event); //指定位置 dragging.style.left = event.clientX + "px"; dragging.style.top = event.clientY + "px"; } break; case "mouseup": dragging = null; break; } }; //公共接口 return { enable: function () { EventUtil.addHandler(document, "mousedown", handleEvent); EventUtil.addHandler(document, "mousemove", handleEvent); EventUtil.addHandler(document, "mouseup", handleEvent); }, disable: function () { EventUtil.removeHandler(document, "mousedown", handleEvent); EventUtil.removeHandler(document, "mousemove", handleEvent); EventUtil.removeHandler(document, "mouseup", handleEvent); } } }(); //启用拖放 DragDrop.enable();

    DragDrop对象封装了拖放的所有基本功能,这是一个单例对象,并使用了模块模式来隐藏某些实现细节。dragging变量起始是null,将会存放被拖动的元素,所以当该变量不为null时,就知道正在拖动某个东西。
    handleEvent()函数处理拖放功能中的所有的三个鼠标时间。它首先获取event对象和事件目标的引用。之后,用一个switch语句确定要触发那个事件样式。当mousedown时间发生时,会检查target的class是否包含“draggable”类,如果是,那么将target存放到dragging中,这个技巧可以很方便地通过标记语言而非JavaScript脚本来确定可拖动的元素。
    handleEvent()的mousemove情况和前面的代码一样,不过要检查dragging是否为null。当它不是null,就知道dragging就是要拖动的元素,这样就会把它放到恰当的位置上。mouseup情况就仅仅是将dragging重置为null,让mousemove事件中的判断失效。
    DragDrop还有两个公共方法:enable()和disable(),它们只是相应添加和删除所有的事件处理程序。这两个函数提供了额外的对拖放功能控制手段。
    要使用DragDrop对象,至啊哟在页面上包含这些代码并调用enable()。拖放会自动针对所有包含“draggable”类的元素启用,如下例所示:

<div class="draggable" style="position:absolute; background:red"></div>

    注意为了元素能被拖放,它必须是绝对定位的;

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JavaScript入门教程(二)_javascript教程教程

    JavaScript入门教程(二)_javascript教程教程

    2015-10-10 14:25

  • JavaScript入门教程(五)_javascript教程教程

    JavaScript入门教程(五)_javascript教程教程

    2015-10-10 14:21

  • JavaScript入门教程(四)_javascript教程教程

    JavaScript入门教程(四)_javascript教程教程

    2015-10-10 14:19

  • JavaScript入门教程(三)_javascript教程教程

    JavaScript入门教程(三)_javascript教程教程

    2015-10-10 14:17

网友点评