JavaScript 30 Day -- 01 JavaScript Drum Kit
2017-12-14 10:36
183 查看
实现效果:
关键点:
HTML:
javascript:
模拟一个打鼓的页面。用户在键盘上按下几个键时,页面上与字母对应的按钮变大变亮,对应的鼓点声音响起来。
关键点:
键盘事件-监听(addEventListener) 当按下键盘的时候 触发 transitionend 必须要有transition transform这两个css属性 获取对应的键document.querySelector(`audio[data-key="${e.keyCode}"]`);
HTML:
<div> <ul> <li data-key='65'>A</li> <li data-key='83'>S</li> <li data-key='68'>D</li> <li data-key='70'>F</li> <li data-key='71'>G</li> <li data-key='72'>H</li> <li data-key='74'>J</li> <li data-key='75'>K</li> <li data-key='76'>L</li> </ul> </div> <audio data-key='65' src="sounds/clap.wav"></audio> <audio data-key='83' src="sounds/hihat.wav"></audio> <audio data-key='68' src="sounds/kick.wav"></audio> <audio data-key='70' src="sounds/openhat.wav"></audio> <audio data-key='71' src="sounds/boom.wav"></audio> <audio data-key='72' src="sounds/ride.wav"></audio> <audio data-key='74' src="sounds/snare.wav"></audio> <audio data-key='75' src="sounds/tom.wav"></audio> <audio data-key='76' src="sounds/tink.wav"></audio>
javascript:
window.addEventListener('keydown', function(e) { const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`); const key = document.querySelector(`li[data-key="${e.keyCode}"]`); if (!audio) { return; } audio.currentTime = 0; // console.log(key); // console.log(audio); // console.log(e.keyCode); audio.play(); key.classList.add("playing"); // key.classList.remove("playing"); // key.classList.toggle("playing"); }); function foo(event) { if (event.propertyName !== 'transform') { return; } console.log(event.propertyName); this.classList.remove('playing'); // console.log(e.propertyName); // console.log(1); } // alert(removeTransition); const keys = Array.from(document.querySelectorAll('li')); keys.forEach(key => key.addEventListener('transitionend',foo)); // console.log(keys);
相关文章推荐
- JavaScript 30 Day -- 10 自定义视频播放器
- JavaScript 30 Day -- 07 彩虹画笔
- JavaScript 30 Day -- 09 Shift 的多选功能
- JavaScript 30 Day -- 15 文字阴影
- JavaScript 30 Day -- 06 Array
- JavaScript 30 Day -- 04 可伸缩的图片墙
- JavaScript 30 Day -- 11 键盘输入的验证
- JavaScript 30 Day -- 13 JS中的引用与复制
- JavaScript 30 Day -- 17 使用reduce进行时间累加
- JavaScript 30 Day -- 02 时钟
- JavaScript 30 Day -- 03 CSS Variables
- JavaScript 30 Day -- 05 快速匹配
- 30 Days of .NET [Windows Mobile Applications] - Day 01: Minutes to Midnight Countdown(午夜倒数器)
- JavaScript 30 Day -- 14 LocalStorage
- JavaScript 30 Day -- 12 图片的滑入滑出
- javascript详解 01
- day1 JavaScript Drum Kit 中文指南
- (30 hackdays day 26) Mailgun - 发Mail是个技术活儿
- (30 hackdays day 10) Material design - 可用的Material
- (30 hackdays day 22) Import.io - 最简单好用的网页爬虫服务