JavaScript實現(xiàn)通過鍵盤彈鋼琴的效果實例代碼
前言
本片文章通過觸發(fā)鍵盤事件來觸發(fā)對應(yīng)的音樂,而且給頁面添加了漸變的active類名,通過觸發(fā)不同的鼠標(biāo)事件,然后active類移動來實現(xiàn)按下鋼琴鍵的視覺效果。
關(guān)鍵代碼:
<!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觸發(fā)不同的音樂,再通過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>頁面效果:

總結(jié)
到此這篇關(guān)于JavaScript實現(xiàn)通過鍵盤彈鋼琴效果的文章就介紹到這了,更多相關(guān)JS通過鍵盤彈鋼琴內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Javascript點擊其他任意地方隱藏關(guān)閉DIV實例
這篇文章主要分享一個Javascript點擊其他任意地方隱藏關(guān)閉DIV實例,需要的朋友可以參考下。2016-06-06
JS實現(xiàn)禁止用戶使用Ctrl+鼠標(biāo)滾輪縮放網(wǎng)頁的方法
這篇文章主要介紹了JS實現(xiàn)禁止用戶使用Ctrl+鼠標(biāo)滾輪縮放網(wǎng)頁的方法,涉及javascript頁面元素與事件相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
js is_valid_filename驗證文件名的函數(shù)
有時候我們需要對文件名進(jìn)行控制,包括一些特殊命名的文件與特殊符號的文件名進(jìn)程替換,那么就可以使用下面的函數(shù)2017-07-07
Js 回車換行處理的辦法及replace方法應(yīng)用
當(dāng)我們在文本框里輸入文字敲下回車后,希望在提交后網(wǎng)頁也顯示是換行的效果,可往往并不能如愿以償啊,實在是憤怒啊自己寫了一個回車換行處理的函數(shù),感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01

