这是代码完成的效果,按下abcd会出现对应的架子鼓音乐的效果。css
简单的介绍下代码思路,html和css部分就很少说了。html
重要的是js部分。git
大体是这样的,es6
首先获取到全部的按钮为一个数组,而后遍历整个数组,增长监听函数,若是按钮的其一被按下,就会播放相应的声音。github
<script> function removeTransition(e) { if (e.propertyName !== 'transform') return; //若是当前的元素变化的属性名称不是transform,return若是if条件成立的话,return并终止运行,若是条件不成立会运行下一行代码。 e.target.classList.remove('playing'); //移除每一个名playing class } function playsound(e) { const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`); //es5的获取元素的方法并不推荐,并非说很差,而是es6的办法的却更简单一些,其中使用了es6的模板字符串。 const key = document.querySelector(`div[data-key="${e.keyCode}"]`); if (!audio) return; //同上,if(aduio!=null)=if(!aduio),若是audio不为空的话,一样终止执行,反之会执行下面的代码。 key.classList.add('playing'); //添加class名为playing audio.currentTime = 0; //播放延迟为0 audio.play(); //播放函数 } const keys = Array.from(document.querySelectorAll('.key')); //获取全部class未key的数组集合 keys.forEach(function(key) { //这段代码能够改为es6的语法的,key => key.addEventListener('transitionend',removeTransition) key.addEventListener('transitionend', removeTransition); console.log(key); //为了简单写成es5,监听到每一个key执行removeTransition //key就是每一个keys }); window.addEventListener('keydown', playsound); //addEventListener,监听键盘的动向调用playsound函数 </script>
最后附上github地址 http://link.zhihu.com/?target...数组