JavaScript Drag/Drop a Div on a Web Page
本问题已经有最佳答案,请猛点这里访问。
我正在尝试编写一些 JavaScript 代码,以允许我在网页上移动 div。也就是说,我想这样做,以便您可以单击并将 div 从页面上的一个位置拖动到另一个位置。我的 JavaScript 似乎不合作。但是,我觉得我犯了一个非常简单的错误。也许另一双眼睛可以发现我的问题?
感谢任何评论。
下面是我的 JS、CSS 和 HTML:
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | function getStyle(object, styleName) { if (window.getComputedStyle) { return document.defaultView.getComputedStyle(object, null).getPropertyValue(styleName); } else if (object.currentStyle) { return object.currentStyle[styleName]; } } function grabCalculator(e) { var evt = e || window.event; calculator = evt.target || evt.srcElement; var mousex = evt.clientX; var mousey = evt.clientY; diffx = parseInt(calculator.style.left) + mousex; diffy = parseInt(calculator.style.top) + mousey; addEvent(document,"mousemove", moveCalculator, false); addEvent(document,"mouseup", dropCalculator, false); } function moveCalculator(e) { var evt = e || window.event; var mousex = evt.clientX; var mousey = evt.clientY; calculator.style.left = mousex + diffx +"px"; calculator.style.top = mousey + diffy +"px"; } function addEvent(obj, eventType, fnName, cap) { alert("TEST"); if (obj.attachEvent) { obj.attachEvent("on" + eventType, fnName); } else { obj.addEventListener(eventType, fnName, cap); } } function removeEvent(obj, eventType, fnName, cap) { if (obj.attachEvent) { obj.detachEvent("off" + eventType, fnName); } else { obj.removeEventListener(eventType, fnName, cap); } } function dropCalculator(e) { removeEvent(document,"mousemove", moveCalculator, false); removeEvent(document,"mouseup", dropCalculator, false); } function init() { diffx = null; diffy = null; calculator = document.getElementById("calculator"); //store top and left values of calculator calculator.style.top = getStyle(calculator,"top"); calculator.style.left = getStyle(calculator,"left"); calcButtonState = true; } window.onload = init; |
CSS:
1 2 3 4 5 6 7 8 9 10 11 12 | #calculator { position: absolute; z-index: 1; left: 37%; top: 25%; border: solid; border-color: red; background: black; width: 25%; height: 45%; } |
这只是相关的 CSS。
HTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <!DOCTYPE HTML> <html> <head> <link type="text/css" rel="stylesheet" href="style.css"> <script type="text/javascript" src="javascript.js"> </head> <body> <!--Calculator--> <!--End calculator--> <header> Conversion Formulas </header> <nav> </nav> <footer> </footer> </body> </html> |
请注意,我的其他 HTML 标记已经到位,但是,stackoverflow 似乎不能很好地处理 HTML,因此它们不会出现。
首先,您的
尝试在此行之后添加
希望你能理解我的想法
你看过 jquery library draggable http://jqueryui.com/draggable/ 和 droppable http://jqueryui.com/droppable/ 吗?
我使用这些库取得了巨大的成功。
超级超级容易实现。
W3Schools 有一个关于使用 HTML5 和 javascript 拖放的很棒的教程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <!DOCTYPE HTML> <html> <head> function allowDrop(ev){ ev.preventDefault(); } function drag(ev){ ev.dataTransfer.setData("Text",ev.target.id); } function drop(ev){ ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); } </head> <body> <img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69"> </body> </html> |