Drag And Drop In Javascript
2008-02-04 11:59
357 查看
1. capture the mouse coordinates
function getMouseOffset(target, ev){
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e){
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
2. be clear when mouse button is pressed and when it is released
function mouseMove(ev){
ev = ev || window.event;
var mousePos = mouseCoords(ev);
if(dragObject){
dragObject.style.position = 'absolute';
dragObject.style.top = mousePos.y - mouseOffset.y;
dragObject.style.left = mousePos.x - mouseOffset.x;
return false;
}
}
function mouseUp(){
dragObject = null;
}
function mouseDown(ev,item){
dragObject = item;
mouseOffset = getMouseOffset(item, ev);
return false;
}
3. when mouseMove you should care about the mouse coordiate
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
now the whole code is :
<html>
<head>
<title>Show Mouse Coordinates</title>
<script language="javascript">...
document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
var dragObject = null;
var mouseOffset = null;
function getMouseOffset(target, ev)...{
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return ...{x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e)...{
var left = 0;
var top = 0;
while (e.offsetParent)...{
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return ...{x:left, y:top};
}
function mouseMove(ev)...{
ev = ev || window.event;
var mousePos = mouseCoords(ev);
if(dragObject)...{
dragObject.style.position = 'absolute';
dragObject.style.top = mousePos.y - mouseOffset.y;
dragObject.style.left = mousePos.x - mouseOffset.x;
return false;
}
}
function mouseUp()...{
dragObject = null;
}
function mouseDown(ev,item)...{
dragObject = item;
mouseOffset = getMouseOffset(item, ev);
return false;
}
function mouseCoords(ev)...{
if(ev.pageX || ev.pageY)...{
return ...{x:ev.pageX, y:ev.pageY};
}
return ...{
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
</script>
</head>
<body>
<div onmousedown="mouseDown(event,this)" onmouseup="mouseUp();" onmousemove="mouseMove(this)" id="club">
<img src="club.gif" />
</div>
<img src="diamond.gif" id="diamond"/>
<img src="heart.gif" id="heart"/>
<img src="spade.gif" id="spade"/>
</div>
</body>
</html>
function getMouseOffset(target, ev){
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e){
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
2. be clear when mouse button is pressed and when it is released
function mouseMove(ev){
ev = ev || window.event;
var mousePos = mouseCoords(ev);
if(dragObject){
dragObject.style.position = 'absolute';
dragObject.style.top = mousePos.y - mouseOffset.y;
dragObject.style.left = mousePos.x - mouseOffset.x;
return false;
}
}
function mouseUp(){
dragObject = null;
}
function mouseDown(ev,item){
dragObject = item;
mouseOffset = getMouseOffset(item, ev);
return false;
}
3. when mouseMove you should care about the mouse coordiate
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
now the whole code is :
<html>
<head>
<title>Show Mouse Coordinates</title>
<script language="javascript">...
document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
var dragObject = null;
var mouseOffset = null;
function getMouseOffset(target, ev)...{
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return ...{x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e)...{
var left = 0;
var top = 0;
while (e.offsetParent)...{
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return ...{x:left, y:top};
}
function mouseMove(ev)...{
ev = ev || window.event;
var mousePos = mouseCoords(ev);
if(dragObject)...{
dragObject.style.position = 'absolute';
dragObject.style.top = mousePos.y - mouseOffset.y;
dragObject.style.left = mousePos.x - mouseOffset.x;
return false;
}
}
function mouseUp()...{
dragObject = null;
}
function mouseDown(ev,item)...{
dragObject = item;
mouseOffset = getMouseOffset(item, ev);
return false;
}
function mouseCoords(ev)...{
if(ev.pageX || ev.pageY)...{
return ...{x:ev.pageX, y:ev.pageY};
}
return ...{
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
</script>
</head>
<body>
<div onmousedown="mouseDown(event,this)" onmouseup="mouseUp();" onmousemove="mouseMove(this)" id="club">
<img src="club.gif" />
</div>
<img src="diamond.gif" id="diamond"/>
<img src="heart.gif" id="heart"/>
<img src="spade.gif" id="spade"/>
</div>
</body>
</html>
相关文章推荐
- How to Drag and Drop in JavaScript
- How to Drag and Drop in JavaScript(怎样通过JavaScript拽动窗口)
- custom event and dragdrop solution in javascript
- Drag and Drop in WPF
- Drag and Drop Products to the Shopping Basket Using JavaScript
- Drag and Drop Items in a WPF ListView
- js拖拽和放置(javascript drag and drop)
- Custom Client Side Drag and Drop Behavior in ASP.NET AJAX
- Drag and drop with Javascript
- Create a Drag and Drop Puzzle in ActionScript 3.0
- JavaScript: DHTML API,Drag & Drop for Images and Layers
- Drag and drop in unity
- Simple Drag and Drop in ExtJS
- Basic drag and drop in WinForms
- Drag and Drop: New Data Transfer Capabilities in the JavaTM 2 Platform, Standard Edition (J2SETM), version 1.4
- Javascript, How to make a Dress Up Game (Drag and Drop)
- [Javascript + rxjs] Simple drag and drop with Observables
- Javascript Drag and drop for touch devices
- Drag and Drop text containing file in textbox.
- Drag and Drop support for column reordering in DataGrid control