我一直有想出制作一拖的方式,并在网页上拖放区域的麻烦。我有多个可调整大小的<div>
s,我希望能够将这些拖到任何地方。想想它就像在桌面上拖动桌面图标并将其放置在任何地方。这将是很好,如果我可以添加按钮,这些<div>
s到改变自己的z索引,并让他们重叠。这是否需要使用<canvas>
?我目前使用<section>
作为拖拽区域。HTML5拖放
谢谢!
我一直有想出制作一拖的方式,并在网页上拖放区域的麻烦。我有多个可调整大小的<div>
s,我希望能够将这些拖到任何地方。想想它就像在桌面上拖动桌面图标并将其放置在任何地方。这将是很好,如果我可以添加按钮,这些<div>
s到改变自己的z索引,并让他们重叠。这是否需要使用<canvas>
?我目前使用<section>
作为拖拽区域。HTML5拖放
谢谢!
如果你想要做的阻力正放下了你自己,你可能希望有一个DIV包围可拖动DIV,所以你可以用较大的DIV的顶部,可拖动区域。
所以,你必须
<div id='draggablediv' style='backgroundcolor: blue;'>
<div class='draggable' style='position: relative; top: 5em; left: 0em;'>...
</div></div>
此代码是纯粹例如,将无法正常工作,顺便说一句。
所以,在draggablediv
你会把一个onclick
事件处理程序,这将启动一个onmousemove
处理程序和处理程序onmouseup
。最后一个是放弃,但你也可能想要有onblur
以防鼠标移出浏览器。
然后,随着鼠标移动,只需重新定位div,所以这些div需要被绝对定位,或相对定位(绝对会更容易)。
通过鼠标按钮松开时将它们设置为null,表示移除事件处理程序是很重要的。
如果不是在可投放区域,然后做出一定把DIV回到起点,所以你会希望有一个封闭,所以你能记住的div原顶部/左坐标。
你将要熟悉这个功能:
(function g(someval) {
var a = someval;
return h() {
}
})(origval);
举一个例子搜索getImgInPositionedDivHtml
在http://jibbering.com/faq/notes/closures/
为了改变z-index
,你可能需要有在一个+/- div和什么时候点击z-index被改变。
这里是谈论改变z-index
的页面。
http://msdn.microsoft.com/en-us/library/ms533005(v=vs.85).aspx
我不认为你可以做到这一点与HTML-只,然而,这是一个如何,你可以用JavaScript做一些例如:
<html>
<head>
<style>
.draggable {
position: absolute;
cursor: default;
background-color: purple;
top: 0px;
left: 0px;
}
</style>
</body>
<body onmouseup="stopMovement()">
<div id="draggable" class="draggable" onmousedown="startMovement(event)">
Drag me around :D
</div>
<script>
var drg = document.getElementById("draggable");
var xDisplacement = 0;
var yDisplacement = 0;
function startMovement(e) {
xDisplacement = e.pageX - getComputedStyle(drg).left.substring(0, getComputedStyle(drg).left.length - 2);
yDisplacement = e.pageY - getComputedStyle(drg).top.substring(0, getComputedStyle(drg).top.length - 2);
document.body.onmousemove = moveDraggable;
}
function stopMovement() {
document.body.onmousemove = null;
}
function moveDraggable(e) {
drg.style.top = e.pageY - yDisplacement;
drg.style.left = e.pageX - xDisplacement;
}
</script>
</body>
</html>
你不能使用jQuery可拖动, 例如? http://jqueryui.com/demos/draggable/ – 2011-05-22 19:56:47
使用body元素作为dropzone。捕捉你的(x,y)。使用drop事件来重新定位CSS。不完全是你想要的,但它可能很接近。 – 2011-06-28 17:09:45
看看这个视频w /演示即将到来的IE10。一个人在任何地方都会显示DnD,所以它一定可能。 http://www.pcmag.com/article2/0,2817,2387825,00.asp – 2011-06-30 12:52:19