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 相关文章推荐
JS分割字符串并放入数组的函数
Jul 04 Javascript
js获取指定日期前后的日期代码
Aug 20 Javascript
jquery实现的导航固定效果
Apr 28 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
Dec 24 Javascript
AngularJS实现Model缓存的方式
Feb 03 Javascript
JS获取屏幕高度的简单实现代码
May 24 Javascript
跨域请求的完美解决方法(JSONP, CORS)
Jun 12 Javascript
vuex的简单使用教程
Feb 02 Javascript
vue监听对象及对象属性问题
Aug 20 Javascript
Vue+Express实现登录状态权限验证的示例代码
May 05 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
May 30 Javascript
vue路由守卫及路由守卫无限循环问题详析
Sep 05 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
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
jquery 指南/入门基础
2007/11/30 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python二维列表一维列表的互相转换实例
2018/07/02 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
Python常用类型转换实现代码实例
2020/07/28 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
.NET面试问题集
2015/12/08 面试题
科室工作个人总结的自我评价
2013/10/29 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL