Javascript 通过击键动态移动div
我正在浏览器中构建一个简单的海盗克隆,并使用没有库的常规javascript尝试学习基础知识。我试图移动一个相对定位的div,它是我的游戏精灵,在一个绝对定位的div中,它是游戏板。我有所有的代码,直到实际移动div为止,我只是找不到更改div相对位置的命令 以下是我所拥有的:Javascript 通过击键动态移动div,javascript,2d-games,Javascript,2d Games,我正在浏览器中构建一个简单的海盗克隆,并使用没有库的常规javascript尝试学习基础知识。我试图移动一个相对定位的div,它是我的游戏精灵,在一个绝对定位的div中,它是游戏板。我有所有的代码,直到实际移动div为止,我只是找不到更改div相对位置的命令 以下是我所拥有的: function move(e){ var x=e.keyCode; var keychar=String.fromCharCode(x); if (x === "a") { //
function move(e){
var x=e.keyCode;
var keychar=String.fromCharCode(x);
if (x === "a") {
// What goes here?
}
};
您应该能够通过修改
el.style.left
和el.style.top
来移动它,其中el
是对您定位的DIV的引用您应该能够通过修改el.style.left
和el.style.top
来移动它,其中el
是对您定位的引用DIV
更改(增加或减少)以像素为单位的divElement.style.left
值。更改(增加或减少)以像素为单位的divElement.style.left
值。您可以更改style.left
和style.top
var d = document.getElementById("idselector");
d.style.left = "30px";
d.style.top = "40px";
您可以更改style.left
和style.top
var d = document.getElementById("idselector");
d.style.left = "30px";
d.style.top = "40px";
首先,您的内部div应该具有位置:绝对
,而不是相对
。外面的那个也可以。然后只需在每次击键时设置style.top
和style.left
:
function move(e){
var x=e.keyCode;
var keychar=String.fromCharCode(x).toLowerCase();
var div = document.getElementById('mydiv');
if (x === "a") {
var currentLeft = parseInt(div.style.left, 10);
// to move left:
div.style.left = (currentLeft-5) + 'px';
}
};
这应该是可行的,但你的雪碧可能不会像你预期的那样平稳移动。在这种情况下,您可能需要一个动画循环和一个击键缓冲区 首先,您的内部div应该具有位置:绝对,而不是相对。外面的那个也可以。然后只需在每次击键时设置style.top
和style.left
:
function move(e){
var x=e.keyCode;
var keychar=String.fromCharCode(x).toLowerCase();
var div = document.getElementById('mydiv');
if (x === "a") {
var currentLeft = parseInt(div.style.left, 10);
// to move left:
div.style.left = (currentLeft-5) + 'px';
}
};
var div = document.getElementById("divId");
if(x == "a"){
div.position.left = (parseInt(div.style.left) - 10) + "px";
}
else if(x == "d"){
div.position.left = (parseInt(div.style.left) + 10) + "px";
}
// similar code for other keys with div.style.top
这应该是可行的,但你的雪碧可能不会像你预期的那样平稳移动。在这种情况下,您可能需要一个动画循环和一个击键缓冲区 那应该是if(keychar==“a”)
那应该是if(keychar==“a”)
你是对的,我完全颠倒了绝对/相对的东西,我刚刚意识到它。非常感谢。你说得对,我完全颠倒了绝对/相对的概念,我才意识到这一点。谢谢。
var div = document.getElementById("divId");
if(x == "a"){
div.position.left = (parseInt(div.style.left) - 10) + "px";
}
else if(x == "d"){
div.position.left = (parseInt(div.style.left) + 10) + "px";
}
// similar code for other keys with div.style.top