1. 程式人生 > >js實現鍵盤控制移動div

js實現鍵盤控制移動div

簡單原理:

獲取鍵盤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");
        //防止下溢位
        }