js實現鍵盤控制移動div
阿新 • • 發佈:2019-01-10
簡單原理:
獲取鍵盤keyCode,按一定規則改變指定div的邊距實現控制指定div的移動。需注意的是要考慮div的溢位問題,要編寫函式限制移動範圍。
實現效果:
使用者通過鍵盤的指定鍵指定div在web頁面內移動。
程式碼塊
html程式碼
<body>
<div id="d1">
<pre>您可以使用鍵盤進行如下操作:
上:↑ 下:↓ 左:← 右:→
</pre>
</div>
<div id="d2">我可以移動</div>
</body>
javascriptt程式碼
window.onload=function (){
var div=document.getElementById('d2');
var keyT=keyB=keyL=keyR=false;//設定指定鍵初始值
setInterval(function(){//設定定時器,鍵盤按下每隔10毫秒執行一次移動操作
if(keyL){
div.style.left=div.offsetLeft-10+"px";
}
else if(keyR){
div.style.left=div.offsetLeft+10+"px";
}
if (keyT){
div.style.top=div.offsetTop-10+"px";
}
else if(keyB){
div.style.top=div.offsetTop+10+"px";
};
limit()//limit()函式限制div移動防止溢位
},10);
document.onkeydown=function(event){//keydown事件,keyCode繫結移動鍵位
var event=event||window.event;
switch (event.keyCode){
case 37:
keyL=true;//if語句執行,div左移動
return;
case 38:
keyT=true;
return;
case 39:
keyR=true;
return;
case 40:
keyB=true;
return;
}
}
document.onkeyup=function(event){//keyup事件,使用者鬆開按鍵時移動停止
var event=event||window.event;
switch(event.keyCode){
case 37:
keyL=false;
break;
case 38:
keyT=false;
break;
case 39:
keyR=false;
break;
case 40:
keyB=false;
break;
}
}
};
limit()函式
function limit(){
(div.offsetLeft<=0)&&(div.style.left=0);
//防止左溢位
(div.offsetTop<=0)&&(div.style.top=0);
//防止上溢位
(div.offsetLeft+div.offsetWidth>=document.documentElement.clientWidth)&&(div.style.left=document.documentElement.clientWidth-div.offsetWidth+"px");
//防止右溢位
(div.offsetTop+div.offsetHeight>=document.documentElement.clientHeight)&&(div.style.top=document.documentElement.clientHeight-div.offsetHeight+"px");
//防止下溢位
}