js解决onkeydown长按按键卡顿一下

据说造成卡顿的原因是window系统为了照顾手不利索的人实现的功能,网页上做动画,连续按键刚开始会卡顿一下,会感觉动画不流畅,解决方案如下代码

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>解决onkeydown卡顿问题</title>
    <style>
     #div1{
     	height: 100px;
     	width: 100px;
     	background-color: red;
     	position: absolute;
     	left: 0;
     	top: 0;
     }
    </style>
    <script type="text/javascript">
      window.οnlοad=function(){
      	var oDiv=document.getElementById("div1");
      	var direction={left:false,top:false,right:false,bottom:false};//左上右下 
      	var timer=null;

      	setInterval(function(){
      		if(direction.left){
      			oDiv.style.left=oDiv.offsetLeft-10+'px';
	      	}
	      	else if(direction.top){
	      			oDiv.style.top=oDiv.offsetTop-10+'px';
	      	}
	      	else if(direction.right){
	      			oDiv.style.left=oDiv.offsetLeft+10+'px';
	      	}
	      	else if(direction.bottom){
	      			oDiv.style.top=oDiv.offsetTop+10+'px';
	      	}
      	},50);

      	document.οnkeydοwn=function(ev){
      		var e=ev || event;

      		switch(e.keyCode){
      			case 37:
      			 direction.left=true;
      			break;
      			case 38:
      			 direction.top=true;
      			break;
      			case 39:
      			 direction.right=true;
      			break;
      			case 40:
      			 direction.bottom=true;
      			break;
      		}
      	   
      	}
      	document.οnkeyup=function(){
      		direction={left:false,top:false,right:false,bottom:false};
      	}
      }
    </script>
</head>
<body>
	<div id="div1"></div>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值