<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>简单拖拽实现</title>
<style type="text/css">
*{margin:0;padding:0;}
#box{ margin:20px auto; position:relative; width:400px; height:400px; background:#ccc; border:1px solid #333; postion:relative; }
#dragBox{ width:50px; height:50px; text-align:center; line-height: 50px;position: absolute; background:blue; cursor:move; font-size:12px; color:#fff;}
</style>
</head>
<body>
<div id="box">
<div id="dragBox">拖我</div>
</div>
<script type="text/javascript">
var VVG = {}; //命名空间
VVG.DOM = {
$: function(id) { //创建方便的选择符
return typeof id == "string" ? document.getElementById(id) : id;
},
bindEvent: function(node, type, func) { //事件绑定方法
if (node.addEventListener) {
node.addEventListener(type, func, false);
} else if (node.attachEvent) {
node.attachEvent("on" + type, func);
} else {
node["on" + type] = func;
}
},
getEvent: function(event) { //获取事件
return event ? event : window.event;
},
getTarget: function(event) { //获取事件目标
return event.target || event.srcElement;
}
}
var DragDrop = function() { //新建一个返回对象的函数
var box = VVG.DOM.$("box"); //获取外围BOX
var dragBox = VVG.DOM.$("dragBox");//获取需要拖动的BOX
var dragging = null; //初始化对象
function drag(event) { //事件执行函数
event = VVG.DOM.getEvent(event);
var target = VVG.DOM.getTarget(event);
switch (event.type) {//判断事件类型
case "mousedown":
if(target.id == "dragBox"){ //当事件对象的ID等于要拖动的BOX的ID时
dragging = target; //赋值到拖动目标
}
break;
case "mousemove":
if(dragging){ //当有拖动目标时执行
sTop = document.documentElement.scrollTop || document.body.scrollTop; //当有滚动条的时候卷去页面的高度
dragging.style.left = (event.clientX - box.offsetLeft - dragBox.offsetWidth/2) + "px";
dragging.style.top = (event.clientY + sTop - box.offsetTop - dragBox.offsetHeight/2 ) + "px";
var left = parseInt(dragging.style.left);
var top = parseInt(dragging.style.top);
//console.log("left:"+left+"-----top:"+top + "-------sTop:"+sTop);
// 比较坐标是否超出外围的BOX
if(left < 0){
dragging.style.left = 0 +"px";
}
if(top < 0){
dragging.style.top = 0+"px";
}
if(left > box.offsetWidth - dragBox.offsetWidth){
dragging.style.left = (box.offsetWidth - dragBox.offsetWidth - 2 )+"px";
}
if(top > box.offsetHeight - dragBox.offsetHeight){
dragging.style.top =( box.offsetHeight - dragBox.offsetHeight - 2 )+"px";
}
}
break;
case "mouseup":
// 清空拖动目标
dragging = null;
break;
}
};
return {
dragStart: function() {
// 绑定事件
VVG.DOM.bindEvent(document, "mousedown", drag);
VVG.DOM.bindEvent(document, "mousemove", drag);
VVG.DOM.bindEvent(document, "mouseup", drag);
}
}
}();
DragDrop.dragStart();
</script>
</body>
</html>
转自:http://www.cnblogs.com/NNUF/archive/2012/04/02/2430132.html
该网址内有完成后的效果
分享到:
相关推荐
本文将详细介绍如何使用JavaScript结合鼠标事件(`mousedown`、`mousemove`、`mouseup`)来实现一个简单的拖拽效果。 #### 原理分析 拖拽功能主要依赖于以下三个基本步骤: 1. **捕获点击事件**:通过监听`...
虽然`mousemove`文件名没有提供具体的代码,但在JavaScript前端鼠标拖动事件实例中,`mousemove`事件扮演了关键角色,它是实现元素拖动的核心部分。通过监听和处理`mousemove`事件,我们可以创建出丰富的交互式网页...
在JavaScript中,鼠标事件主要分为两类:鼠标动作事件和鼠标按钮事件。动作事件通常与鼠标移动有关,而按钮事件则与鼠标的点击操作相关。以下是一些基本的鼠标事件: 1. `mousemove`:当鼠标在元素上移动时触发。...
在JavaScript中,我们可以监听用户的鼠标动作,如`mousedown`(鼠标按键被按下)、`mousemove`(鼠标移动)和`mouseup`(鼠标按键被释放)等。当用户对某个元素执行拖拽操作时,通常是在`mousedown`事件中记录初始...
首先,我们需要监听鼠标的`mousedown`、`mousemove`和`mouseup`事件。当用户按下鼠标左键(`mousedown`)时,记录下起始坐标;在鼠标移动过程中(`mousemove`)更新选区的大小和位置;当用户释放鼠标(`mouseup`)时...
接下来,我们需要在JavaScript中添加事件监听器,监听鼠标的`mousedown`、`mousemove`和`mouseup`事件。当鼠标按下时开始拖动,移动时更新div的位置,松开鼠标时停止拖动: ```javascript var draggable = document...
4. 鼠标拖拽:使用`mousedown`、`mousemove`和`mouseup`事件,可以实现元素的拖放功能。 五、JavaScript库和框架 为了简化开发过程,许多开发者选择使用JavaScript库和框架,如jQuery、React、Vue等。它们提供了...
JavaScript拖拽框架是一种用于创建交互式用户界面的技术,它允许用户通过鼠标或其他输入设备将元素在屏幕上自由移动,常用于构建可自定义的GUI组件、拖放功能等。本篇文章将详细探讨“简易而又灵活的Javascript拖拽...
总结来说,本文详细讲解了实现拖拽效果的基本原理和步骤,通过`mousedown`、`mousemove`、`mouseup`三个事件的合理使用和逻辑处理,能够实现一个简单的拖拽功能。这个功能是前端开发者必须掌握的基础技能之一,它的...
本篇文章将深入探讨Eclipse的快捷键大全以及JavaScript中的鼠标事件。 首先,让我们来看看Eclipse,这是一个广泛使用的开源Java IDE,但同时也支持多种其他编程语言。Eclipse的快捷键设计旨在帮助程序员快速执行...
总的来说,实现“鼠标拖动图片”和“图片放大缩小”功能,需要掌握JavaScript事件处理、CSS布局以及可能涉及的触摸事件处理。这个过程中,需要注意浏览器兼容性问题,以及在拖动和缩放过程中保持图片的流畅性和用户...
开发者可能使用`mousedown`事件来开始拖动操作,`mousemove`事件来跟踪光标移动,而`mouseup`事件则用于结束拖动。这可以用于创建可拖动的滑块,调整音量或在虚拟光盘上进行浏览。 至于`ab.html`,它可能是一个锚点...
鼠标拖动功能是通过监听鼠标的`mousedown`、`mousemove`和`mouseup`事件来实现的。当用户按下鼠标按钮(`mousedown`)时,记录下鼠标当前位置,然后在鼠标移动(`mousemove`)时,根据鼠标的移动量调整窗口的位置。...
在jQuery中,没有直接提供一个名为“拖动”(drag)的事件,但我们可以结合`mousedown`、`mousemove`和`mouseup`事件来模拟实现拖动行为。这三个事件分别对应于鼠标的按下、移动和释放,通过它们我们可以创建出动态...
总之,JavaScript中的鼠标事件和适当的事件处理程序可以帮助我们实现页面元素的拖拽功能。通过不断优化和扩展,我们可以创建出更加流畅和易用的用户界面。在实际项目中,也可以参考和利用开源库如`dragjs-master`...
在JavaScript中,实现拖动层类的关键在于监听鼠标事件,包括`mousedown`(鼠标按下)、`mousemove`(鼠标移动)和`mouseup`(鼠标释放)。下面我们将深入探讨这些关键步骤: 1. **初始化设置**: 在创建拖动层类时...
在这里,我们需要监听鼠标按下(mousedown)和释放(mouseup)事件来实现拖拽,以及双击(dblclick)事件来开启拖拽功能。 3. **鼠标事件对象**:在事件处理器函数中,可以访问到一个事件对象,其中包含了关于事件...
在本练习中,我们使用 Event 类来处理鼠标事件,包括 mouseDown、mouseUp 和 mouseMove 事件。 五、 Applet 类的应用 Applet 类是 Java 语言中用于创建 applet 的类。在本练习中,我们使用 Applet 类来创建一个...
1. **事件监听**:首先,我们需要监听鼠标事件,如`mousedown`(鼠标按下),`mousemove`(鼠标移动)和`mouseup`(鼠标释放)。在`mousedown`事件中,记录下鼠标按下的位置和当前行的高度。 2. **计算偏移量**:当...
在实现鼠标拖动功能时,JavaScript主要通过监听鼠标的`mousedown`(鼠标按钮按下)、`mousemove`(鼠标移动)和`mouseup`(鼠标按钮释放)事件来追踪用户的鼠标动作。当`mousedown`事件触发时,程序记录下鼠标初始...