Javascript实现打鼓效果


Posted in Javascript onJanuary 29, 2021

本文实例为大家分享了Javascript实现打鼓效果的具体代码,供大家参考,具体内容如下

Javascript实现打鼓效果

按住响应的键盘显示不同的声音

<div class="keys">
  <div data-key="65" class="key">
   <kbd>A</kbd>
   <span class="sound">clap</span>
  </div>
  <div data-key="83" class="key">
   <kbd>S</kbd>
   <span class="sound">hihat</span>
  </div>
  <div data-key="68" class="key">
   <kbd>D</kbd>
   <span class="sound">kick</span>
  </div>
  <div data-key="70" class="key">
   <kbd>F</kbd>
   <span class="sound">openhat</span>
  </div>
  <div data-key="71" class="key">
   <kbd>G</kbd>
   <span class="sound">boom</span>
  </div>
  <div data-key="72" class="key">
   <kbd>H</kbd>
   <span class="sound">ride</span>
  </div>
  <div data-key="74" class="key">
   <kbd>J</kbd>
   <span class="sound">snare</span>
  </div>
  <div data-key="75" class="key">
   
   <kbd>K</kbd>
   <span class="sound">tom</span>
  </div>
  <div data-key="76" class="key">
   <kbd>L</kbd>
   <span class="sound">tink</span>
  </div>
  </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>

css部分:

html {
 font-size: 10px;
 background: url('../img/background.jpg') bottom center;
 background-size: cover;
}

body,html {
 margin: 0;
 padding: 0;
 font-family: sans-serif;
}

.keys {
 display: flex;
 flex: 1;
 min-height: 100vh;
 align-items: center;
 justify-content: center;
}

.key {
 border: .4rem solid black;
 border-radius: .5rem;
 margin: 1rem;
 font-size: 1.5rem;
 padding: 1rem .5rem;
 transition: all .07s ease;
 width: 10rem;
 text-align: center;
 color: white;
 background: rgba(0,0,0,0.4);
 text-shadow: 0 0 .5rem black;
}

.playing {
 transform: scale(1.1);
 border-color: #ffc600;
 box-shadow: 0 0 1rem #ffc600;
}

kbd {
 display: block;
 font-size: 4rem;
}

.sound {
 font-size: 1.2rem;
 text-transform: uppercase;
 letter-spacing: .1rem;
 color: #ffc600;
}

第一步实现按下键盘实现,声音的播放

window.addEventListener("keydown",function(e){
   console.log(e.keyCode);
   const audio=document.querySelector(`audio[data-key="${e.keyCode}"]`);
   const key=document.querySelector(`div[data-key="${e.keyCode}"]`)
   //每次播放完初始化
    if (!audio) return;
    audio.currentTime = 0;
    audio.play();

     key.classList.add('playing');

     setTimeout(function(){
     key.classList.remove('playing');
     },70);
    
    //按键之后移出效果
})

keyCode对应图

Javascript实现打鼓效果

Javascript实现打鼓效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让angularjs支持浏览器自动填表
Nov 10 Javascript
jQuery的one()方法用法实例
Jan 19 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
javascript日期计算实例分析
Jun 29 Javascript
JavaScript转换与解析JSON方法实例详解
Nov 24 Javascript
js手机号批量滚动抽奖实现代码
Apr 17 Javascript
JavaScript实现图片切换效果
Aug 12 Javascript
Node.js中环境变量process.env的一些事详解
Oct 26 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
Dec 18 Javascript
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
利用layer实现表单完美验证的方法
Sep 26 Javascript
vue-dplayer 视频播放器实例代码
Nov 08 Javascript
JS实现点击掉落特效
Jan 29 #Javascript
Javascript实现关闭广告效果
Jan 29 #Javascript
Vue 实例中使用$refs的注意事项
Jan 29 #Vue.js
vue 项目@change多个参数传值多个事件的操作
Jan 29 #Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 #Vue.js
聊聊vue 中的v-on参数问题
Jan 29 #Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 #Vue.js
You might like
php adodb操作mysql数据库
2009/03/19 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
JS 验证码功能的三种实现方式
2018/11/26 Javascript
vue中轮训器的使用
2019/01/27 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
Python学习之Django的管理界面代码示例
2018/02/10 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
收入及婚姻状况证明
2014/11/20 职场文书
银行求职自荐信范文
2015/03/04 职场文书
丧事主持词
2015/07/02 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis