`
yueguangyuan
  • 浏览: 337839 次
  • 性别: Icon_minigender_1
  • 来自: 新加坡
社区版块
存档分类
最新评论

使用JS实现拖动

阅读更多

下午研究了一下用JavaScript实现拖动效果,找来网上的代码分析了一下然后照抄了个最简单的,将慢慢将它完善

现状:目前还不支持FireFox

不支持项(已知项):pixelLeft、pixelTop、alpha(opacity=90)

PS:不知道为什么贴代码贴不全   管理员通知这个是Rich Editor的Bug,需要改用BBCode

<!---->



<meta content="EditPlus" name="Generator">
<meta content="" name="Author">
<meta content="" name="Keywords">
<meta content="" name="Description">
<style type="text/css">
*{font-size:12px}
.dragTable{
font-size:12px;
border-top:1px solid #3366cc;
margin-bottom: 10px;
width:100%;
background-color:#FFFFFF;
}
.dragTR{
cursor:move;
color:#7787cc;
background-color:#e5eef9;
}
td{vertical-align:top;}
#parentTable{
border-collapse:collapse;
letter-spacing:25px;
}
</style>
<script language="JavaScript" type="text/javascript">
/** 目标面板 */
var tarElement=null;
/** 实际被拖动面板 */
var dragElement=null;
/** 定义元素位置 */
var downX,downY,tmp_o_x,tmp_o_y;

var refElement=null;
var dragActive=0;
/** 是否在移动中 1为是 */
var draging=0;

function getEventElement (event){
 if(event == null){
  event = window.event;
 }
 return (event.srcElement ? event.srcElement : event.target);
}

/**
 * onMouseDown触发事件
 */
 function readyDrag(event) {
 dragActive = 1;

 var eventObj = getEventElement(event);
 // 非DIV元素不能被拖动
 if(eventObj.tagName != "DIV") return;

 // 将目标元素附给dragElement
 dragElement = eventObj.parentNode;
 // 复制一个tmpElement到目标面板
 tarElement = dragElement.cloneNode(true);
 // TODO alpha(opacity=50)仅被IE支持
 tarElement.style.filter="alpha(opacity=50)"
 tarElement.style.zIndex=2;
 dragElement.style.zIndxe=1;
 tarElement.style.position="absolute";

 if(dragElement.parentNode.tagName != "BODY"){
  // 当选中可拖动元素时,初始化拖动元素的初始位置
  // TODO pixelLeft仅被IE支持
  dragElement.style.left = dragElement.offsetLeft + dragElement.parentNode.style.pixelLeft;
  dragElement.style.top = dragElement.offsetTop + dragElement.parentNode.style.pixelTop;
 }

 //取得当前鼠标的绝对位置
 downX=event.clientX;
 downY=event.clientY;
 //取得拖动元素当前的绝对位置
 tmp_o_x=dragElement.style.pixelLeft;
 tmp_o_y=dragElement.style.pixelTop;
 tarElement.style.visibility="hidden";

 document.body.appendChild(tarElement);
 document.onmousemove=startDrag;
 }

document.onmouseup=endDrag;

/**
 * onMouseOver事件触发
 */
function startDrag(){
 if(dragActive==1&&event.button==1&&dragElement!=null&&tarElement!=null){
  //当拖动动作进行、mouse button pressed、拖动物件存在、目标面板存在的情况下
  tarElement.style.visibility="visible";
  tarElement.style.left=tmp_o_x+event.clientX-downX;
  tarElement.style.top=tmp_o_y+event.clientY-downY;
  dragElement.style.backgroundColor="#CCCCCC";
  //游标样式
  document.body.style.cursor="move";
  draging=1;
 }
}

/**
 * onMouseUp时间触发
 */
function endDrag(){
 if(dragActive==1&&tarElement!=null){
  //当拖动动作进行、目标面板存在的情况下
  if(draging==1){
   // 如果面板处于移动状态中,将原有面板移除
   dragElement.removeNode(true);
   draging=0;
  }

  tarElement.style.filter="alpha(opacity=100)";
  tarElement.style.zIndex=1;
  document.body.style.cursor="default";
 }

 dragElement=null;
 tarElement=null;
 dragActive=0;
}
</script>


 


 

  Window
 

 
Content




分享到:
评论

相关推荐

    原生JS使用Canvas实现拖拽式绘图功能

    原生JS使用Canvas实现拖拽式绘图功能的知识点涵盖了Canvas API的基础应用、面向对象编程思想在Canvas绘图中的运用以及鼠标事件的处理,以下是详细解析: 1. Canvas API基础知识 - Canvas元素:HTML5新增的Canvas...

    使用JS实现拖动 BBCode版

    【标题】"使用JS实现拖动 BBCode版"的知识点主要集中在JavaScript编程语言的应用上,特别是涉及到DOM操作、事件处理以及BBCode的解析与生成。BBCode是一种类似于HTML的标记语言,常见于论坛和留言系统中,允许用户...

    JS实现拖拽实例

    JS实现拖拽实例 JS实现拖拽实例 JS实现拖拽实例 JS实现拖拽实例

    原生JS实现拖拽排序(亲测可用)

    在JavaScript的世界里,拖拽排序是一项常见的交互功能,它允许用户通过鼠标拖动元素来改变它们的顺序。原生JS实现拖拽排序可以避免引入额外的库,从而提高页面性能和减少依赖。以下是一个详细的知识点说明,涵盖了...

    原生javascript实现拖拽改变table表格行高(html)

    原生JavaScript实现的拖拽功能能够为用户带来直观、便捷的操作体验。在这个特定的场景中,我们关注的是如何使用JavaScript来实现拖拽改变HTML表格(table)的行高。标题提到的“原生javascript实现拖拽改变table表格...

    【JavaScript源代码】JS实现圆形进度条拖拽滑动.docx

    ### JavaScript 实现圆形进度条拖拽滑动 #### 技术背景 在现代网页开发中,动态元素和交互式设计是提升用户体验的关键因素之一。其中,进度条是一种常见的UI组件,用于显示操作或任务的完成程度。传统的线性进度条...

    最新Js实现拖动效果代码

    以上就是关于使用JavaScript实现拖动效果的一些核心知识点。通过这些技术,开发者可以创建出丰富的交互式用户体验,让网页元素变得更加生动和直观。具体的实现细节会根据项目需求和设计选择有所不同,但上述原理是...

    js实现的拖拽功能

    以上就是使用JavaScript实现拖拽功能的基本步骤。通过结合CSS,我们可以进一步定制拖放行为,提高用户体验。在实际项目中,可能还需要考虑兼容性问题、多元素拖放、以及更复杂的逻辑处理,例如数据的序列化与反序列...

    js实现拖拽的实现js实现拖拽的实现

    本篇文章将详细探讨如何使用纯JavaScript实现拖拽功能。 首先,我们需要创建一个可拖动的元素,并为其添加`draggable`属性,设置为`true`。例如: ```html 这是一个可拖动的元素 ``` 接下来,我们需要监听`...

    自己学习用JS实现拖动

    ### JS实现拖动的关键点 #### 1. 事件监听与触发 在JavaScript中,拖动功能主要依赖于`mousedown`、`mousemove`和`mouseup`这三个事件。当用户按下鼠标按钮时触发`mousedown`事件,当鼠标移动时触发`mousemove`...

    纯js实现可拖拽和点击的悬浮球

    本文将深入讲解如何利用JavaScript实现这样的功能。 首先,我们需要创建HTML结构,用于显示悬浮球。一个简单的悬浮球可以由一个`&lt;div&gt;`元素来表示,我们可以通过CSS设置其样式,使其看起来像一个球体: ```html ...

    js实现拖拽功能(支持左右拖动、删除)

    概述:实现拖拽工作流程配置,可以鼠标左右移动元素,鼠标双击可以删除元素。 基本原理:就是根据鼠标的移动来移动被拖拽的元素。鼠标的移动也就是x、y坐标的变化;元素的移动就是style.position的 top和left的改变...

    JS时间拖动条

    在JavaScript(JS)编程中,实现一个时间拖动条功能是一项常见的需求,特别是在涉及到多媒体播放、视频剪辑或时间控制的场景中。本项目“JS时间拖动条”旨在模仿QQ影音中的视频剪辑拖动条,提供用户友好的交互体验。...

    Javascript jquery 实现 拖拽, 和吸附功能

    在JavaScript和jQuery的世界里,实现元素的拖拽(Draggable)和吸附(Docking)功能是一项常见的需求,尤其是在创建交互式用户界面时。本篇将深入讲解如何利用这两种技术来增强网页的动态性和用户体验。 首先,...

    js拖动、拖拽div大小,完美实现版

    js拖动 拖拽div大小,内部随意文件操作。完美实现版

    js实现网页中的拖拽

    在网页开发中,JavaScript...总的来说,使用JavaScript实现网页中的拖拽功能,涉及到事件监听、坐标计算和DOM操作等核心概念。通过实践,开发者可以更好地理解和掌握这些技能,为用户提供更加直观和有趣的交互体验。

    JavaScript实现超酷拖拽式列表

    JavaScript实现超酷拖拽式列表代码

    表格列自由拖动排序js代码

    而`js`文件则是实现拖动排序和点击排序功能的JavaScript代码。 在实际应用中,开发者可以将这些代码片段整合到自己的项目中,通过调整CSS样式适应不同的设计需求,或者对JavaScript代码进行优化以处理更复杂的表格...

    js中实现拖拽特效,文件图片可以随意拖动

    在JavaScript中实现拖拽特效是一项常见的交互设计技术,它可以增强用户在网页上的体验,使得文件或图片等元素能够像在桌面环境中一样自由移动。在这个场景中,我们将关注如何使用JavaScript来实现这一功能,同时结合...

Global site tag (gtag.js) - Google Analytics