这篇文章将为大家详细讲解有关javascript实现简单小钢琴有声弹奏效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
前提条件
- 需要一个带有音频播放功能的浏览器,如 Chrome、Firefox 或 Safari。
HTML 标记
使用 <audio>
标签加载琴键的声音文件。每个琴键对应一个 <source>
元素,指定不同格式的文件(例如,MP3、OGG、WAV)。
<audio id="piano">
<source src="C4.mp3" type="audio/mpeg">
<source src="C4.ogg" type="audio/ogg">
<source src="C4.wav" type="audio/wav">
</audio>
JavaScript 代码
- 创建一个 JavaScript 数组来存储琴键的 HTML 元素。
- 为每个琴键添加事件监听器,用于在按下时播放声音。
const pianoKeys = document.querySelectorAll(".piano-key");
for (let i = 0; i < pianoKeys.length; i++) {
pianoKeys[i].addEventListener("click", playNote);
}
function playNote(e) {
const audio = document.getElementById("piano");
audio.src = e.target.dataset.note;
audio.play();
}
CSS 样式
使用 CSS 为琴键添加视觉样式,例如背景颜色、边框和阴影。
.piano-key {
width: 50px;
height: 100px;
background: white;
border: 1px solid black;
box-shadow: 2px 2px 5px #ccc;
cursor: pointer;
}
附加功能
- 禁用长按:在事件监听器中添加
e.preventDefault()
来禁用长按行为。 - 控制音量:使用
audio.volume
属性控制琴键的音量。 - 视觉反馈:在琴键按下时添加 CSS 类来提供视觉反馈。
- 多声道:使用多个
<audio>
标签来同时播放多个琴键的声音。
完整示例
<!DOCTYPE html>
<html>
<head>
<title>简单小钢琴</title>
<style>
body {
margin: 0;
padding: 0;
}
.piano {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
height: 100vh;
background: #efefef;
}
.piano-key {
width: 50px;
height: 100px;
background: white;
border: 1px solid black;
box-shadow: 2px 2px 5px #ccc;
cursor: pointer;
}
</style>
</head>
<body>
<div class="piano">
<div class="piano-key" data-note="C4"></div>
<div class="piano-key" data-note="D4"></div>
<div class="piano-key" data-note="E4"></div>
<div class="piano-key" data-note="F4"></div>
<div class="piano-key" data-note="G4"></div>
<div class="piano-key" data-note="A4"></div>
<div class="piano-key" data-note="B4"></div>
</div>
<script>
const pianoKeys = document.querySelectorAll(".piano-key");
for (let i = 0; i < pianoKeys.length; i++) {
pianoKeys[i].addEventListener("click", playNote);
}
function playNote(e) {
const audio = new Audio();
audio.src = e.target.dataset.note;
audio.play();
}
</script>
</body>
</html>
以上就是javascript实现简单小钢琴有声弹奏效果的详细内容,更多请关注编程学习网其它相关文章!