`
lgx2351
  • 浏览: 175914 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

js常用功能-drag功能总结

阅读更多

在做web开发中,拖动一个元素是很常见的功能,特别是对于浮动层,最经常的操作就是去拖动它。这里列出了拖动的代码,作个总结,以备忘。代码如下:

function drag(elementToDrag, event) {
    var startX = event.clientX, startY = event.clientY;
    var origX = elementToDrag.offsetLeft, origY = elementToDrag.offsetTop;
    var deltaX = startX - origX, deltaY = startY - origY;
    if (document.addEventListener) {  // DOM Level 2 event model
        document.addEventListener("mousemove", moveHandler, true);
        document.addEventListener("mouseup", upHandler, true);
    }
    else if (document.attachEvent) {  // IE 5+ Event Model
        elementToDrag.setCapture( );
        elementToDrag.attachEvent("onmousemove", moveHandler);
        elementToDrag.attachEvent("onmouseup", upHandler);
        elementToDrag.attachEvent("onlosecapture", upHandler);
    }
    else {  // IE 4 Event Model
        var oldmovehandler = document.onmousemove; // used by upHandler( )
        var olduphandler = document.onmouseup;
        document.onmousemove = moveHandler;
        document.onmouseup = upHandler;
    }

    if (event.stopPropagation) event.stopPropagation( );  // DOM Level 2
    else event.cancelBubble = true;                      // IE

    if (event.preventDefault) event.preventDefault( );   // DOM Level 2
    else event.returnValue = false;                     // IE

    function moveHandler(e) {
        if (!e) e = window.event;  // IE Event Model
        elementToDrag.style.left = (e.clientX - deltaX) + "px";
        elementToDrag.style.top = (e.clientY - deltaY) + "px";
        if (e.stopPropagation) e.stopPropagation( );  // DOM Level 2
        else e.cancelBubble = true;                  // IE
    }
    function upHandler(e) {
        if (!e) e = window.event;  // IE Event Model

        if (document.removeEventListener) {  // DOM event model
            document.removeEventListener("mouseup", upHandler, true);
            document.removeEventListener("mousemove", moveHandler, true);
        }
        else if (document.detachEvent) {  // IE 5+ Event Model
            elementToDrag.detachEvent("onlosecapture", upHandler);
            elementToDrag.detachEvent("onmouseup", upHandler);
            elementToDrag.detachEvent("onmousemove", moveHandler);
            elementToDrag.releaseCapture( );
        }
        else {  // IE 4 Event Model
            document.onmouseup = olduphandler;
            document.onmousemove = oldmovehandler;
        }

        if (e.stopPropagation) e.stopPropagation( );  // DOM Level 2
        else e.cancelBubble = true;                  // IE
    }
}
 

以上的代码都挺简单了,都是js的一些位置和事件的相关方法,具体的方法说明请参照js总结笔记的相关文章。注意的是浏览器的兼容性的写法。以上代码在另一篇关于浮动层的博客文章里有用到。

分享到:
评论

相关推荐

    angularjs-html5-drag-and-drop:AngularJS HTML5 拖放

    在现代Web应用开发中,用户交互体验的提升是关键之一,而拖放(Drag and Drop)功能就是其中一种常用的增强用户体验的手段。AngularJS,作为一款强大的前端JavaScript框架,通过结合HTML5的拖放API,可以轻松实现...

    js拖拽一些常见的思路方法整理

    在Web开发中,拖拽功能是一项常用且实用的功能,它可以为用户提供更加直观的操作体验。JavaScript提供了原生的API来支持这一操作,同时也可以利用第三方库来简化开发流程。 #### 二、基本原理 在实现拖拽功能时,...

    jquery_drag.rar

    总结,jQuery的Draggable和Droppable插件为开发者提供了简单易用的拖放功能,通过配置选项和事件处理,可以实现丰富的交互设计。结合jb51.net提供的资源,你可以进一步学习和实践,提升你的网页交互体验设计能力。

    【JavaScript源代码】原生js拖拽功能制作滑动条实例代码.docx

    ### JavaScript 拖拽功能制作滑动条实例详解 #### 一、项目概述 本案例主要介绍了如何使用原生 JavaScript 实现一个具有拖拽功能的滑动条。滑动条是一种常用的用户界面组件,用于直观地调整数值或者选择某个范围内...

    div模拟窗口操作

    在JavaScript中,尤其是结合jQuery库(如`jquery-1.4.2.min.js`和`jquery-drag-min.js`),可以实现`<div>`的拖动功能。jQuery简化了DOM操作,使得绑定事件和改变元素属性变得更加简单。例如,可以通过`mousedown`...

    HTML5中实现拖放效果无须借助javascript.docx

    通过以上介绍,我们可以看到HTML5的Drag and Drop API提供了一种简单有效的方式来实现拖放功能,无需额外的JavaScript代码。这不仅简化了开发流程,还提高了网页性能。当然,在实际应用中,可能还需要结合JavaScript...

    程序员常用JavaScript特效

    总结,JavaScript特效在网页设计中扮演着至关重要的角色,它们提升了网页的互动性、美观度和功能性。掌握这些特效的实现原理和应用技巧,是每个前端程序员必备的技能。通过不断学习和实践,我们可以利用JavaScript...

    js div拖动完美版

    总结来说,这个“js div拖动完美版”是一个利用JavaScript实现的Div元素拖放功能,它包括了范围限制和纯JavaScript事件处理,提供了用户友好的交互体验。通过分析和学习这个示例,开发者可以深入理解JavaScript事件...

    非常实用的JS页面特效

    在网页设计中,JavaScript(JS)是一种至关重要的脚本语言,它为网页添加了动态功能和交互性。本文将深入探讨“非常实用的JS页面特效”,包括滑动门特效、树形导航菜单、仿Google首页导航菜单、鼠标感应效果以及可...

    计算机网站

    ##### 2.3 JavaScript 功能实现 - **`fileUploadPreview` 函数**:用于处理文件预览的函数。 - 检查是否支持 `FileReader` API。 - 使用循环遍历所有文件,并为每个文件创建一个新的 `FileReader` 实例。 - 使用 ...

    tree 树形菜单总结

    下面是对`tree`树形菜单的详细总结: 1. **基本概念**: - **节点(Node)**:树形菜单中的每个元素称为节点,可以包含数据和子节点。 - **根节点(Root Node)**:树的起始节点,没有父节点。 - **子节点...

    JS特效总结

    在本篇“JS特效总结”中,我们将探讨一些广泛应用于网页制作的JS特效,并提供相关的实践示例。 1. **滑动效果**:滑动效果是网页中最常见的特效之一,如滑动门、滑动菜单、图片轮播等。通过改变元素的位置或透明度...

    DIV 拖拉大小 移动位置

    总结来说,通过使用`interact.js`库,我们可以轻松地实现`DIV`元素的拖放和调整大小功能,从而创建出更具互动性的前端应用。在实际项目中,开发者可以根据具体需求对`interact.js`进行配置和扩展,以实现更复杂的...

    zTree v2.6+API

    《zTree v2.6 API详解与...总结,zTree v2.6作为一个功能强大的jQuery树形插件,提供了丰富的API和示例,使得开发者能够轻松构建交互式树形结构。通过深入理解和熟练运用这些API,可以提升Web应用的用户体验和功能性。

    Jquery区域拖拽

    总结,jQuery的`draggable()`功能极大地简化了Web应用中的拖动操作,通过配置选项和事件处理,我们可以实现各种复杂的拖动效果,包括自定义形状变换。实践是检验真理的唯一标准,动手尝试创建自己的拖拽效果,你会...

    基于jQuery实现的简单鼠标拖拽移动拼图游戏代码.zip

    总结来说,这个项目提供了一个学习和实践jQuery拖放功能以及基础游戏逻辑的好机会,适合初学者或希望加深对jQuery理解的开发者。通过分析和理解这个代码,开发者可以了解到如何用JavaScript和jQuery创建一个简单的...

Global site tag (gtag.js) - Google Analytics