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 call方法使用说明
Jan 11 Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 Javascript
js实现图片漂浮效果的方法
Mar 02 Javascript
Angular实现跨域(搜索框的下拉列表)
Feb 16 Javascript
浅谈原生JS中的延迟脚本和异步脚本
Jul 12 Javascript
weui框架实现上传、预览和删除图片功能代码
Aug 24 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
Sep 01 Javascript
javascript中神奇的 Date对象小结
Oct 12 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
Aug 16 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 Vue.js
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 UTF8 文件的签名问题
2009/10/30 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python获得文件创建时间和修改时间的方法
2015/06/30 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Python快速从注释生成文档的方法
2016/12/26 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
自我评价200字分享
2013/12/17 职场文书
护士长竞聘书
2014/03/31 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
农村文化建设标语
2014/10/07 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
活着观后感
2015/06/03 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书