keyboard_box_move
<!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>
* {
padding: 0;
margin: 0;
}
#box {
position: relative;
margin: 100px auto;
width: 350px;
height: 500px;
overflow: hidden;
border: 2px solid #000;
}
#box #el {
position: absolute;
left: 0;
bottom: 0;
width: 10px;
height: 10px;
background-color: red;
}
</style>
</head>
<body>
<div id="box">
<div id="el"></div>
</div>
<script>
let keysArr = [];
let el = document.getElementById('el');
document.onkeydown = function(e) {
let keycode = e.keyCode;
if (keycode == 37 || keycode == 38 || keycode == 39 || keycode == 40) {
if (keysArr.indexOf(keycode) < 0) keysArr.push(keycode);
}
let top = el.offsetTop,
left = el.offsetLeft;
console.log(keysArr);
if (keysArr.indexOf(38) >= 0 && top > 0) {
el.style.top = top - 10 + 'px';
}
if (keysArr.indexOf(40) >= 0 && top < 490) {
el.style.top = top + 10 + 'px';
}
if (keysArr.indexOf(39) >= 0 && left < 340) {
el.style.left = left + 10 + 'px';
}
if (keysArr.indexOf(37) >= 0 && left > 0) {
el.style.left = left - 10 + 'px';
}
}
document.onkeyup = function(e) {
let keycode = e.keyCode;
if (keycode == 37 || keycode == 38 || keycode == 39 || keycode == 40) {
if (keysArr.indexOf(keycode) >= 0) keysArr.splice(keysArr.indexOf(keycode), 1);
}
}
</script>
</body>
</html>