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获取提交的字符串的字节数
Feb 09 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
Mar 04 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
Feb 13 Javascript
javascript创建含数字字母的随机字符串方法总结
Aug 01 Javascript
jQuery编写网页版2048小游戏
Jan 06 Javascript
jquery.zclip轻量级复制失效问题
Jan 08 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
微信小程序button组件使用详解
Jan 31 Javascript
laydate只显示时分 不显示秒的功能实现方法
Sep 28 Javascript
vue npm install 安装某个指定的版本操作
Aug 11 Javascript
JS sort排序详细使用方法示例解析
Sep 27 Javascript
webpack的移动端适配方案小结
Jul 25 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(视频)Http下载
2006/12/12 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
简析Python的闭包和装饰器
2016/02/26 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
详解python中的 is 操作符
2017/12/26 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
django静态文件加载的方法
2018/05/20 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
int和Integer有什么区别
2013/05/25 面试题
关于运动会广播稿300字
2014/10/05 职场文书
医学生自荐信范文
2015/03/05 职场文书
团结友爱主题班会
2015/08/13 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
SQL Server表分区删除详情
2021/10/16 SQL Server
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python