设置定时器,解决div刚开始移动卡顿问题:
详细代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#box1 {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
}
</style>
<script>
/*
使div可以根据不同的方向移动
按左键,div向左移
按右键,div右移
...
*/
window.onload = function () {
//div在刚开始移动之前会卡顿一下,onkeydown事件同时控制速度和方向,进行修改只
控制方向
//开启一个定时器控制div的移动
//定义一个变量speed
var speed = 10;
//定义一个变量表示方向,通过修改dir来控制方向
var dir = 0;
//设置定时器,解决div刚开始移动卡顿问题
setInterval(function () {
/*
37是左
38上
39右
40下
*/
switch (dir) {
case 37:
box1.style.left = box1.offsetLeft - speed + "px";
break;
case 39:
box1.style.left = box1.offsetLeft + speed + "px";
break;
case 38:
box1.style.top = box1.offsetTop - speed + "px";
break;
case 40:
box1.style.top = box1.offsetTop + speed + "px";
break;
}
}, 30);
//为document绑定一个按键按下事件
document.onkeydown = function (event) {
event = event || window.event;
console.log(event.keyCode);
//如果按了ctrl以后,速度加快
if (event.ctrlKey) {
speed = 100;
} else {
speed = 10;
}
//使dir等于按键的值
dir = event.keyCode;
};
//当按键松开时按键不在移动,设置onkeyup事件
document.onkeyup = function () {
//设置方向为0
dir = 0;
};
};
</script>
</head>
<body>
<div id="box1"></div>
</body>
</html>
结果:
按下键进行移动:
按左键移动: