本文介绍如何利用 JavaScript 监听键盘事件来触发钢琴音效,并结合 CSS 类名切换实现按键高亮的视觉反馈。通过绑定按键与音频资源,模拟真实的钢琴演奏交互体验,适用于前端互动教学或趣味网页开发。
前言
本文通过监听键盘事件来播放对应的音乐文件,同时在页面中引入渐变的 active 类名。通过响应不同的鼠标或键盘操作,动态移动 active 类名以呈现钢琴键被按下的视觉特效。
关键代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
#box {
margin: 100px auto;
width: 900px;
height: 500px;
position: relative;
background: url(./keys.png) no-repeat;
background-size: contain;
}
li {
width: 100px;
height: 440px;
float: left;
}
.active {
background: linear-gradient(to bottom, #ffffff, #333);
opacity: 0.5;
}
</style>
</head>
<body>
<div id="box">
<ul>
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
// 思路:给li遍历上键盘事件,每个不同的li触发不同的音乐,再通过css添加上渐隐的效果。
var lis = document.querySelectorAll('li');
var box = document.querySelector('#box');
// console.log(box, lis);
document.addEventListener('keydown', function (e) {
e = e || window.event;
var k = e.key;
if (k >= '1' && k <= '9') {
var audio = new Audio(`./钢琴9键-mp3/d${k}.mp3`);
audio.play();
for (var i = 0; i < lis.length; i++) {
lis[i].classList.remove('active');
}
lis[k - 1].classList.add('active');
}
})
</script>
</body>
</html>页面效果:

总结
至此,关于使用 JavaScript 实现键盘控制钢琴音效的文章介绍完毕。如需了解更多 JS 键盘钢琴相关内容,欢迎查阅本站往期文章或继续浏览后续教程,感谢大家的支持!