You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

键盘项目中addEventListener实现求助:按键联动显示与背景变色

实现物理键盘按键触发页面按钮样式变化

HTML结构

先创建模拟键盘的按钮,给每个按钮加上data-key属性,值对应物理键盘按键的字符(比如字母、数字、特殊键的名称):

<div class="keyboard">
  <button data-key="a">A</button>
  <button data-key="s">S</button>
  <button data-key="d">D</button>
  <button data-key="f">F</button>
  <!-- 其他按键按这个格式添加 -->
  <button data-key="shift">Shift</button>
  <button data-key="enter">Enter</button>
</div>

CSS样式

定义按钮的默认样式,以及按下时的高亮样式:

.keyboard button {
  width: 50px;
  height: 50px;
  margin: 5px;
  border: none;
  border-radius: 4px;
  background-color: #e0e0e0;
  font-size: 16px;
  transition: background-color 0.1s;
}

.keyboard button.active {
  background-color: #4CAF50;
  color: white;
}

JavaScript逻辑

添加键盘事件监听,匹配对应按钮并切换样式:

// 按键按下时触发高亮
document.addEventListener('keydown', (e) => {
  // 统一转小写,避免大小写匹配问题
  const key = e.key.toLowerCase();
  const button = document.querySelector(`button[data-key="${key}"]`);
  if (button) {
    button.classList.add('active');
  }
});

// 按键松开时恢复原样式
document.addEventListener('keyup', (e) => {
  const key = e.key.toLowerCase();
  const button = document.querySelector(`button[data-key="${key}"]`);
  if (button) {
    button.classList.remove('active');
  }
});

注意事项

  • 特殊按键(如Shift、Enter、Backspace)的data-key值要和event.key返回值一致,可通过console.log(e.key)在控制台查看具体按键名称
  • 若需处理按住按键持续触发的场景,可添加防抖逻辑避免样式频繁切换

内容的提问来源于stack exchange,提问作者Murteza Mohasseliy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:22:03