怎么用&#106avascript进行拖拽

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

怎么用javascript进行拖拽

本文译自:http://www.webreference.com/programming/javascript/mk/column2/index.html

所有版权归原文所有

Javascript的特点是dom的处理与网页效果,大多数情况我们只用到了这个语言的最简单的功能,比如制作图片轮播/网页的tab等等,这篇文章将向你展示如何在自己的网页上制作拖拽.

有很多理由让你的网站加入拖拽功能,最简单的一个是数据重组.例如:你有一个序列的内容让用户排序,用户需要给每个条目进行输入或者用select选择,替代前面这个方法的就是拖拽.或许你的网站也需要一个用户可以拖动的导航窗口!那么这些效果都是很简单:因为你可以很容易的实现!

网页上实现拖拽其实也不是很复杂.第一你需要知道鼠标坐标,第二你需要知道用户鼠标点击一个网页元素并实现拖拽,最后我们要实现移动这个元素.

运行代码框

<SCRIPT

src="/upfiles/20060720/drag_drop.js"

type=text/javascript></SCRIPT>

<STYLE type=text/css>LI {

MARGIN-BOTTOM: 10px

}

OL {

MARGIN-TOP: 5px

}

.DragContainer {

BORDER-RIGHT: #669999 2px solid; PADDING-RIGHT: 5px; BORDER-TOP: #669999 2px solid; PADDING-LEFT: 5px; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #669999 2px solid; WIDTH: 100px; PADDING-TOP: 5px; BORDER-BOTTOM: #669999 2px solid

}

.OverDragContainer {

BORDER-RIGHT: #669999 2px solid; PADDING-RIGHT: 5px; BORDER-TOP: #669999 2px solid; PADDING-LEFT: 5px; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #669999 2px solid; WIDTH: 100px; PADDING-TOP: 5px; BORDER-BOTTOM: #669999 2px solid

}

.OverDragContainer {

BACKGROUND-COLOR: #eee

}

.DragBox {

BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 10px; MARGIN-BOTTOM: 5px; PADDING-BOTTOM: 2px; BORDER-LEFT: #000 1px solid; WIDTH: 94px; CURSOR: pointer; PADDING-TOP: 2px; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: verdana, tahoma, arial; BACKGROUND-COLOR: #eee

}

.OverDragBox {

BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 10px; MARGIN-BOTTOM: 5px; PADDING-BOTTOM: 2px; BORDER-LEFT: #000 1px solid; WIDTH: 94px; CURSOR: pointer; PADDING-TOP: 2px; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: verdana, tahoma, arial; BACKGROUND-COLOR: #eee

}

.DragDragBox {

BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 10px; MARGIN-BOTTOM: 5px; PADDING-BOTTOM: 2px; BORDER-LEFT: #000 1px solid; WIDTH: 94px; CURSOR: pointer; PADDING-TOP: 2px; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: verdana, tahoma, arial; BACKGROUND-COLOR: #eee

}

.miniDragBox {

BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 10px; MARGIN-BOTTOM: 5px; PADDING-BOTTOM: 2px; BORDER-LEFT: #000 1px solid; WIDTH: 94px; CURSOR: pointer; PADDING-TOP: 2px; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: verdana, tahoma, arial; BACKGROUND-COLOR: #eee

}

.OverDragBox {

BACKGROUND-COLOR: #ffff99

}

.DragDragBox {

BACKGROUND-COLOR: #ffff99

}

.DragDragBox {

FILTER: alpha(opacity=50); BACKGROUND-COLOR: #ff99cc

}

LEGEND {

FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #666699; FONT-FAMILY: verdana, tahoma, arial

}

FIELDSET {

PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px

}

.History {

FONT-SIZE: 10px; OVERFLOW: auto; WIDTH: 100%; FONT-FAMILY: verdana, tahoma, arial; HEIGHT: 82px

}

#DragContainer8 {

BORDER-RIGHT: #669999 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #669999 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; BORDER-LEFT: #669999 1px solid; WIDTH: 110px; PADDING-TOP: 5px; BORDER-BOTTOM: #669999 1px solid; HEIGHT: 110px

}

.miniDragBox {

FLOAT: left; MARGIN: 0px 5px 5px 0px; WIDTH: 20px; HEIGHT: 20px

}

PRE {

BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #ccc 1px solid; BACKGROUND-COLOR: #f8f8f0

}

</STYLE>

<body>

<FIELDSET id=Demo4><LEGEND>样例- 拖拽页面元素</LEGEND>

<DIV>

<DIV class=DragContainer id=DragContainer4 overclass="OverDragContainer">

<DIV class=DragBox id=Item1 overclass="OverDragBox"

dragclass="DragDragBox">Item #1</DIV>

<DIV class=DragBox id=Item2 overclass="OverDragBox"

dragclass="DragDragBox">Item #2</DIV>

<DIV class=DragBox id=Item3 overclass="OverDragBox"

dragclass="DragDragBox">Item #3</DIV>

<DIV class=DragBox id=Item4 overclass="OverDragBox"

dragclass="DragDragBox">Item #4</DIV></DIV>

<DIV class=DragContainer id=DragContainer5 overclass="OverDragContainer">

<DIV class=DragBox id=Item5 overclass="OverDragBox"

dragclass="DragDragBox">Item #5</DIV>

<DIV class=DragBox id=Item6 overclass="OverDragBox"

dragclass="DragDragBox">Item #6</DIV>

<DIV class=DragBox id=Item7 overclass="OverDragBox"

dragclass="DragDragBox">Item #7</DIV>

<DIV class=DragBox id=Item8 overclass="OverDragBox"

dragclass="DragDragBox">Item #8</DIV></DIV>

<DIV class=DragContainer id=DragContainer6 overclass="OverDragContainer">

<DIV class=DragBox id=Item9 overclass="OverDragBox"

dragclass="DragDragBox">Item #9</DIV>

<DIV class=DragBox id=Item10 overclass="OverDragBox"

dragclass="DragDragBox">Item #10</DIV>

<DIV class=DragBox id=Item11 overclass="OverDragBox"

dragclass="DragDragBox">Item #11</DIV>

<DIV class=DragBox id=Item12 overclass="OverDragBox"

dragclass="DragDragBox">Item #12</DIV></DIV></DIV></FIELDSET>

</body>

</html>

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

获取鼠标移动信息

第一我们需要获取鼠标的坐标.我们加一个用户函数到document.onmousemove就可以了:

document.onmousemove = mouseMove;

function mouseMove(ev){

ev = ev || window.event;

var mousePos = mouseCoords(ev);

}

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>

function mouseMove(ev){

ev = ev || window.event;

var mousePos = mouseCoords(ev);

document.getElementById('xxx').value = mousePos.x;

document.getElementById('yyy').value = mousePos.y;

}

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

};

}

document.onmousemove = mouseMove;

</script>Mouse X Position:

<input id=xxx type=text>

<br>Mouse Y Position:

<input id=yyy type=text>

</body>

</html>

[1] [2] [3] [4] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航