// ======================== 监听按键事件 ========================
// 当任何按键被“按下”时触发
document.addEventListener("keydown", event => {
  console.log(`key down is = ${event.key}`);
});
 
// 当按键被“松开”时触发
document.addEventListener("keyup", event => {
  console.log(`key up is = ${event.key}`);
});
 
// ======================== 改变元素内容和颜色 ========================
// 获取页面上 id 为 "myBox" 的元素(假设是一个方块)
const myBox = document.getElementById("myBox");
 
// 按下任意键时触发:更改方块内容和背景颜色
document.addEventListener("keydown", event => {
  myBox.textContent = "😭";               // 显示哭脸表情
  myBox.style.backgroundColor = "tomato"; // 变为红色
});
 
// 松开按键时触发:恢复方块样式
document.addEventListener("keyup", event => {
  myBox.textContent = "😄";               // 恢复笑脸表情
  myBox.style.backgroundColor = "lightblue"; // 变为浅蓝色
});
 
// ======================== 控制方块移动 ========================
// 每次移动的像素距离(单位:px)
const moveAmount = 10;
 
// 初始位置 (x, y)
let x = 0;
let y = 0;
 
// 当按下键盘时,判断是否为方向键
document.addEventListener("keydown", event => {
 
  // 判断按下的键是否以 "Arrow" 开头(例如 "ArrowUp")
  if (event.key.startsWith("Arrow")) {
 
    // 阻止默认行为(例如按方向键时页面滚动)
    event.preventDefault();
 
    // 根据按下的键名选择对应的移动方向
    switch (event.key) {
      case "ArrowUp":
        y -= moveAmount;   // 向上移动
        break;
      case "ArrowDown":
        y += moveAmount;   // 向下移动
        break;
      case "ArrowLeft":
        x -= moveAmount;   // 向左移动
        break;
      case "ArrowRight":
        x += moveAmount;   // 向右移动
        break;
    }
 
    // 更新方块的位置
    myBox.style.top = `${y}px`;   // 调整纵坐标
    myBox.style.left = `${x}px`;  // 调整横坐标
  }
});

🧠 键盘事件常用属性

属性名含义示例值
event.key键的名称”a”, “Enter”, “ArrowUp”
event.code物理键位代码”KeyA”, “ArrowLeft”
event.altKey是否按下 Alt 键true / false
event.ctrlKey是否按下 Ctrl 键true / false
event.shiftKey是否按下 Shift 键true / false