1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <style type="text/css">
    9. .container{
    10. width: 200px;
    11. height: 360px;
    12. background-color: antiquewhite;
    13. position: relative;
    14. }
    15. .actvity_model{
    16. width: 20px;
    17. height: 20px;
    18. background-color: cornflowerblue;
    19. border: .3px solid #eee;
    20. box-sizing: border-box;
    21. position: absolute;
    22. }
    23. </style>
    24. </head>
    25. <body onload="init();">
    26. <!-- 背景容器 -->
    27. <div class="container">
    28. <!-- 块元素 -->
    29. <div class="actvity_model"></div>
    30. </div>
    31. <script>
    32. //创建一个常量控制步长
    33. const STEP = 20;
    34. //入口方法
    35. function init(){
    36. onKeyDown();
    37. }
    38. //监听用户键盘事件
    39. function onKeyDown(){
    40. document.onkeydown = function(evnet){
    41. switch(event.keyCode){
    42. case 38:
    43. console.log("上");
    44. move(0,-1);
    45. break;
    46. case 39:
    47. console.log("右");
    48. move(1,0);
    49. break;
    50. case 40:
    51. console.log("下");
    52. move(0,1);
    53. break;
    54. case 37:
    55. console.log("左");
    56. move(-1,0);
    57. break;
    58. }
    59. }
    60. }
    61. //控制块元素移动
    62. function move(x,y){
    63. var actvityModelEle = document.querySelector(".actvity_model");
    64. actvityModelEle.style.top = parseInt(actvityModelEle.style.top || 0) + y * STEP + "px";
    65. actvityModelEle.style.left = parseInt(actvityModelEle.style.left || 0) + x * STEP + "px";
    66. }
    67. </script>
    68. </body>
    69. </html>