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 相关文章推荐
Javascript中产生固定结果的函数优化技巧
Jan 16 Javascript
JavaScript的Module模式编程深入分析
Aug 13 Javascript
JS去除数组重复值的五种不同方法
Sep 06 Javascript
学习JavaScript设计模式(单例模式)
Nov 26 Javascript
基于JavaScript实现类似于百度学术高级检索功能
Mar 02 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
May 03 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
Nov 27 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
node实现简单的增删改查接口实例代码
Aug 22 Javascript
Nautil 中使用双向数据绑定的实现
Oct 02 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
Apr 24 Javascript
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
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
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
简单的通用表达式求10乘阶示例
2014/03/03 Python
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
python中函数默认值使用注意点详解
2016/06/01 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
python实现一个简单的ping工具方法
2019/01/31 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
前台文员职责范本
2014/03/07 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
财务会计求职信范文
2015/03/20 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
MySQL分库分表详情
2021/09/25 MySQL