JavaScript 实现简易钢琴特效:按键监听与音频播放
作者:青柠时间:2026-10-23 14:13:31浏览:155
本文介绍如何使用 JavaScript 实现一个简易的音乐钢琴特效。通过监听 keydown 键盘按下事件,获取当前按键的 keyCode,并映射到对应的钢琴键元素。当用户按下指定按键时,触发视觉反馈并播放对应的音频文件,实现交互式的音乐体验。
JavaScript 实现简易钢琴特效:按键监听与音频播放
本文分享了一个使用 JavaScript 实现音乐钢琴特效的完整代码示例,供读者参考学习。
核心知识点
核心知识点
主要涉及以下技术点: 1. 使用 keydown 事件监听键盘按下操作。 2. 通过 ev['keyCode'] 获取当前按下的按键代码。 3. 引入必要的工具库以辅助开发。
运行效果展示
数字键 1 到 9 可用于控制对应的钢琴按键。

具体代码实现如下
代码实现与运行效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin: 0;
padding: 0;
}
div{
height: 50px;
width: 630px;
/*background-color: red;*/
position: absolute;
top: 300px;
left: 50%;
transform: translateX(-50%);
}
ul{
height: 100%;
width: 100%;
list-style: none;
display: flex;
overflow: hidden;
border: 1px solid #000;
}
li{
height: 100%;
width: 100%;
/*background-color: yellow;*/
position: relative;
border-right: 1px dashed #000;
}
li:last-child{
border-right:none
}
span{
width: 70px;
height: 50px;
background-color: skyblue;
position: absolute;
left: 0;
top: 50px;
z-index: -1;
}
a{
text-decoration: none;color: #000;
line-height: 50px;
position: absolute;
left: 50%;
transform: translateX(-50%);
font-size: 20px;
cursor: default;
}
</style>
</head>
<body>
<div id="box">
<ul id="ul">
<li><a href="">1</a><span></span>
<audio src="source/a1.mp3"></audio></li>
<li><a href="">2</a><span></span>
<audio src="source/a2.mp3"></audio></li>
<li><a href="">3</a><span></span>
<audio src="source/a3.mp3"></audio></li>
<li><a href="">4</a><span></span>
<audio src="source/a4.mp3"></audio></li>
<li><a href="">5</a><span></span>
<audio src="source/a5.mp3"></audio></li>
<li><a href="">6</a><span></span>
<audio src="source/a6.mp3"></audio></li>
<li><a href="">7</a><span></span>
<audio src="source/a7.mp3"></audio></li>
<li><a href="">8</a><span></span>
<audio src="source/a8.mp3"></audio></li>
<li><a href="">9</a><span></span>
<audio src="source/a9.mp3"></audio></li>
</ul>
</div>
<script src="MyTools.js"></script>
<script>
var allLis = myTool.$('ul').children;
document.addEventListener('keydown',function (ev) {
var keyCode = ev['keyCode'] - 49;
myTool.slowMoving(allLis[keyCode].children[1], {"top": 0}, function () {
myTool.slowMoving(allLis[keyCode].children[1], {"top": 50});
// 2.3 播音乐
allLis[keyCode].children[2].play();
allLis[keyCode].children[2].currentTime = 0;
});
},false);
</script>
</body>
</html>
以上就是本文的全部内容,希望能为读者的学习提供有益帮助,同时也欢迎大家继续支持本站。
作者最新文章
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
JavaScript新手常犯的编码错误与最佳实践指南
2026-11-04 22:12:38
