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 相关文章推荐
setAttribute 与 class冲突解决
Feb 17 Javascript
JS判断是否360安全浏览器极速内核的方法
Jan 29 Javascript
js获取表格的行数和列数的方法
Oct 23 Javascript
javascript生成随机数方法汇总
Nov 12 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
Feb 09 Javascript
基于JavaScript实现复选框的全选和取消全选
Feb 09 Javascript
linux 后台运行node服务指令方法
May 23 Javascript
js中Object.defineProperty()方法的不详解
Jul 09 Javascript
用node开发并发布一个cli工具的方法步骤
Jan 03 Javascript
JavaScript 性能提升之路(推荐)
Apr 10 Javascript
vue权限问题的完美解决方案
May 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
Protoss建筑一览
2020/03/14 星际争霸
php实现用于计算执行时间的类实例
2015/04/18 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
jquery滚动加载数据的方法
2015/03/09 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
PyQt5每天必学之关闭窗口
2018/04/19 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
python如何爬取网页中的文字
2020/07/28 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
行政文员岗位职责
2013/11/08 职场文书
财务总监岗位职责
2014/03/07 职场文书
羽毛球比赛策划方案
2014/06/13 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
稽核岗位职责范本
2015/04/13 职场文书
投资合作意向书范本
2015/05/08 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL