Javascript to achieve drumming effect

Javascript to achieve drumming effect

This article shares the specific code of Javascript to achieve drumming effect for your reference. The specific content is as follows

Press and hold the corresponding keyboard to display different sounds

<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 part:

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;
}

The first step is to press the keyboard to play the sound

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}"]`)
   // Initialize after each playback if (!audio) return;
    audio.currentTime = 0;
    audio.play();

     key.classList.add('playing');

     setTimeout(function(){
     key.classList.remove('playing');
     },70);
    
    //Move out the effect after pressing the key})

keyCode corresponding diagram

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • JS implements click drop effect

<<:  How to isolate users in docker containers

>>:  Summary of 11 common mistakes made by MySQL call novices

Recommend

Example of how to implement MySQL cascading replication

The so-called cascading replication is that the m...

Analysis of the process of building a cluster environment with Apache and Tomcat

In fact, it is not difficult to build an Apache c...

Basic steps to use Mysql SSH tunnel connection

Preface For security reasons, the root user of My...

Introduction to /etc/my.cnf parameters in MySQL 5.7

Below are some common parameters of /etc/my.cnf o...

Introduction to RHCE bridging, password-free login and port number modification

Table of contents 1. Configure bridging and captu...

...

21 MySQL standardization and optimization best practices!

Preface Every good habit is a treasure. This arti...

Linux system repair mode (single user mode)

Table of contents Preface 1. Common bug fixes in ...

Detailed analysis of the usage and application scenarios of slots in Vue

What are slots? We know that in Vue, nothing can ...

Hover zoom effect made with CSS3

Result:Implementation code: html <link href=&#...

Linux general java program startup script code example

Although the frequency of starting the shell is v...

Solve the conflict between docker and vmware

1. Docker startup problem: Problem Solved: You ne...

How to implement Echats chart large screen adaptation

Table of contents describe accomplish The project...

Solution to the problem that the mysql8.0.11 client cannot log in

This article shares with you the solution to the ...

Summary of knowledge points on using calculated properties in Vue

Computed properties Sometimes we put too much log...