拖放元素可以移动 x 但不能移动 y
Drag/drop in element can move by x but not y?
所以我正在尝试在javascript中对元素进行拖放。我使用的视频教程在这里;https://www.youtube.com/watch?v=KTlZ4Hs5h80。我已经完全按照它所说的编码了它,我能够移动一个对象,它的 x 值而不是 y 值。所以,总而言之,每当我移动鼠标时,图像的位置都会改变 x,但对于 y 是恒定的,所以我只能左右移动我的图像,而不能上下移动。
这是我的 html 文件:
<!DOCTYPE html>
<html lang="en">
<html>
<head>
<LINK href="gameStyle.css" rel="stylesheet" type="text/css">
</head>
<body>
<section id="main">
<img id="bowl" src="images/bowl.gif">
<img id="egg" src="images/egg.gif">
</section>
<script type="text/javascript" src="gameScript2.js">
</script>
</body>
</html>
这是我的javascript文件:
function eggIntoBowl()
{
function Draggable(element, dragStart, dragDrop){
this.element = element;
this.dragStart = dragStart;
this.dragDrop = dragDrop;
this.element.classList.add('draggable');
var self = this;
var move = function(event){
event.stopPropagation();
event.preventDefault();
var originalX = parseInt(window.getComputedStyle(this).left);
var originalY = parseInt(window.getComputedStyle(this).top);
var mouseDownX = event.clientX;
var mouseDownY = event.clientY;
function dragEgg(event)
{
self.element.style.left = originalX + event.clientX - mouseDownX + "px"
self.element.style.top = originalY + event.clientY - mouseDownY + "py"
event.stopPropagation();
}
function dropEgg(event)
{
document.removeEventListener('mousemove', dragEgg, true);
document.removeEventListener('mouseup', dropEgg, true);
event.stopPropagation();
}
document.addEventListener('mouseup', dropEgg, true);
document.addEventListener('mousemove', dragEgg, true);
};
this.element.addEventListener('mousedown',move,false);
};
var egg = document.getElementById('egg');
var dragObject = new Draggable(egg);
};
window.addEventListener("load", eggIntoBowl, false);
这是我的 CSS:
body{
width: 896px;
height: 652px;
background: #fff url(images/eggsToBowlScene.jpg) no-repeat;
}
#egg{
position:absolute;
top:190px;
left:56px;
}
#bowl{
position:absolute;
top:141px;
left:231px;
}
.draggable:hover{
cursor: move;
}
有什么想法吗?我无法弄清楚我做错了什么。我过去使用过另一个拖放教程,发生了同样的事情,所以我尝试了另一个,因此我猜它与我的 html 文件或 css 有关..?
在dragEgg()
方法中,您使用"py"而不是"px"。这并不意味着x
和y
值,它是"像素"的缩写。浏览器不了解"py"是什么单位,因此它不会移动。将其更改为"px"将告诉浏览器在 Y 轴上偏移多少像素。
self.element.style.top = originalY + event.clientY - mouseDownY + "px";
如果你可以简单地使用 jQuery UI 可拖动的交互,为什么要使用此代码?
http://jqueryui.com/draggable/
相关文章:
- JS可以在Chrome中工作,但不能在Firefox中工作
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- 三角库可以与firefox一起使用,但不能在Chrome中使用
- Highcharts可以从服务器加载数据,但不能更新
- 刷新GoogleMaps tile服务器可以使用JavaScript,但不能使用GWT
- node.js可以识别字符模式,但不能识别数字模式
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- Json到CSV下载,可以在chrome中工作,但不能在IE浏览器中工作
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- Javascript可以在chrome中使用,但不能在其他浏览器中使用
- Iframe加载调整大小在Chrome中工作,但不能在IE或Firefox中工作
- Rails Production-可以工作,但不能编辑/删除/创建记录
- 能够在Highcharts中看到值,但不能看到图形
- Django,HTML,JS:<img src=“#">可以在HTML中工作,但不能在JS文件中工作
- 通过Javascript SDK登录Facebook可以在移动设备和本地主机上使用,但不能在台式机上使用
- JQuery 移动滑动切换效果是反向的,但不能向前工作
- 拖放元素可以移动 x 但不能移动 y
- Zurb Foundation 5-顶部栏-可在小型浏览器窗口上折叠,但不能在移动设备上折叠
- 动画 Div 左右移动,但不能上下移动