国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript Drum Kit 指南(純 JS 模擬敲鼓效果)

2024-05-06 15:13:58
字體:
來源:轉載
供稿:網友

核心代碼:

<script> function removeTransition(event) {  if (event.propertyName !== 'transform') return; // 過濾其中一種事件  event.target.classList.remove('playing'); // 移除高亮的樣式 } function playSound(event) {  const audio = document.querySelector(`audio[data-key="${event.keyCode}"]`); // 根據觸發按鍵的鍵碼,獲取對應音頻  const key = document.querySelector(`div[data-key="${event.keyCode}"]`); // 獲取頁面對應按鈕 DIV 元素  if (!audio) return; // 處理無效的按鍵事件  key.classList.add('playing'); // 改變樣式  audio.currentTime = 0; // 每次播放之后都使音頻播放進度歸零  audio.play(); // 播放相應音效 } const keys = Array.from(document.querySelectorAll('.key')); // 獲取頁面所有按鈕元素 keys.forEach(key => key.addEventListener('transitionend', removeTransition)); // 添加 transition 事件監聽 window.addEventListener('keydown', playSound);</script>

中文版本完整代碼:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>JS Drum Kit</title> <link rel="stylesheet" href="style.css" rel="external nofollow" rel="external nofollow" ></head><body> <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><script> function removeTransition(event) {  if (event.propertyName !== 'transform') return; // 過濾其中一種事件  event.target.classList.remove('playing'); // 移除高亮的樣式 } function playSound(event) {  const audio = document.querySelector(`audio[data-key="${event.keyCode}"]`); // 根據觸發按鍵的鍵碼,獲取對應音頻  const key = document.querySelector(`div[data-key="${event.keyCode}"]`); // 獲取頁面對應按鈕 DIV 元素  if (!audio) return; // 處理無效的按鍵事件  key.classList.add('playing'); // 改變樣式  audio.currentTime = 0; // 每次播放之后都使音頻播放進度歸零  audio.play(); // 播放相應音效 } const keys = Array.from(document.querySelectorAll('.key')); // 獲取頁面所有按鈕元素 keys.forEach(key => key.addEventListener('transitionend', removeTransition)); // 添加 transition 事件監聽 window.addEventListener('keydown', playSound);</script></body></html>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 隆尧县| 酒泉市| 正安县| 定结县| 湾仔区| 信宜市| 磐石市| 刚察县| 临邑县| 绥芬河市| 大石桥市| 邛崃市| 潼南县| 宝鸡市| 东明县| 长泰县| 黑山县| 灵台县| 双桥区| 朝阳市| 甘洛县| 逊克县| 大英县| 洛浦县| 济宁市| 龙胜| 普洱| 宁远县| 嵩明县| 呼和浩特市| 家居| 民县| 巴马| 额敏县| 石台县| 清远市| 大埔县| 汪清县| 新河县| 铜川市| 皋兰县|