tonejs实现一个卡通钢琴弹奏交互效果代码

代码语言:html

所属分类:多媒体

代码描述:tonejs实现一个卡通钢琴弹奏交互效果代码

代码标签: 卡通 钢琴 弹奏 交互 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>

  <meta charset="UTF-8">
  

<style>
@import url("https://fonts.googleapis.com/css2?family=Pragati+Narrow:wght@400;700&display=swap");
* {
  font-family: 'Pragati Narrow', sans-serif !important;
}

:root {
  --keyboard-mode: #FF6B6B;
  background: #4ECDC4;
  overflow: hidden;
}

.container {
  display: flex;
  justify-content: center;
  height: 100%;
}

.keyandnote {
  margin: 0 auto;
  position: absolute;
  bottom: 20%;
}

.keyboard {
  font-size: 12px;
  font-weight: 400;
  display: inline-table;
  padding: 24px;
  border-radius: 20px 20px 40px 40px;
  background: var(--keyboard-mode);
  min-width: 884px;
}
.keyboard button {
  outline: none;
  transition: all 100ms ease-out;
  margin: 0px;
  padding: 0px;
  border: none;
  color: rgba(26, 83, 92, 0.5);
  border-radius: 20px 20px 40px 40px;
  cursor: none;
}
.keyboard button.white {
  background: #F7FFF7;
  width: 40px;
  height: 140px;
  box-shadow: inset #E6F1E6 0 -10px 0 0;
  padding-top: 80px;
  margin: 1px;
}
.keyboard button.white:active {
  box-shadow: inset #E6F1E6 0 -2px 0 0;
  transform: translate(0, 4px);
  height: calc($keyboard-white-height - 8px);
}
.keyboard button.black {
  background: #1A535C;
  width: 32px;
  height: 90px;
  z-index: 99;
  position: absolute;
  transform: translate(-16px, -10px);
  box-shadow: inset #073B4C 0 -10px 0 0, var(--keyboard-mode) 0 0 0 2px;
}
.keyboard button.black:active {
  transform: translate(-16px, -2px);
  height: calc($keyboard-black-height - 8px);
  box-shadow: inset #073B4C 0 -2px 0 0, var(--keyboard-mode) 0 0 0 2px;
}

#notes {
  position: absolute;
  bottom: 160px;
}
#notes span {
  border-radius: 100px;
  position: absolute;
  z-index: -1;
  transform-origin: center bottom;
}
#notes span.user {
  background: var(--note-user);
  height: 40px;
}
#notes span.system {
  background: var(--note-system);
}
#notes span svg {
  width: 100%;
}

#paw {
  transform: scale(1.2);
  z-index: 999;
  position: absolute;
  bottom: -120px;
  left: 500px;
  transform: translate(-50%, 0);
  pointer-events: none;
  transition: bottom 100ms ease, left 50ms ease, transform 100ms ease-out;
}
#paw svg {
  display: none;
}
#paw.up {
  transform: translate(-50%, 0);
}
#paw.up #open {
  display: block;
}
#paw.down {
  transform: translate(-50%, 8px);
}
#paw.down #close {
  display: block;
}
</style>



</head>

<body translate="no" >
  <div class="container">
  <div class="keyandnote">
    <div id="notes"></div>
    <div class="keyboard" onmousemove="showCoords(event)" onmouseout="clearCoor()">
      <!--     <button class="white" data-note="A2">A2</button>
    <button class="black" data-note="A#2"></button>
    <button class="white" data-note="B2">B2</button> -->
      <button class="white" data-key="C3">C3</button>
      <button class="black" data-key="C#3"></button>
      <button class="white" data-key="D3">D3</button>
      <button class="black" data-key="D#3"></button>
      <button class="white" data-key="E3">E3</button>
      <button class="white" data-key="F3">F3</button>
      <button class="black" data-key="F#3"></button>
      <button class="white" data-key="G3">G3</button>
      <button class="black" data-key="G#3"></button>
      <button class="white" data-key="A3">A3</button>
      <button class="black" data-key="A#3"></button>
      <button class="white" data-key="B3">B3</button>
      <button class="white" data-key="C4">C4</button>
      <button class="black" data-key="C#4"></button>
      <button class="white" data-key="D4">D4</button>
      <button class="black" data-key="D#4"></button>
      <button class="white" data-key="E4">E4</button>
      <button class="white" data-key="F4">F4</button>
      <button class="black" data-key="F#4"></button>
      <button class="white" data-key="G4">G4</button>
      <button class="black" data-key="G#4"></button>
      <button class="white" data-key="A4">A4</button>
      <button class="black" data-key="A#4"></button>
      <button class="white" data-key="B4">B4</button>
      <button class="white" data-key="C5">C5</button>
      <button class="black" data-key="C#5"></button>
      <button class="white" data-key="D5">D5</button>
      <button class="black" data-key="D#5"></button>
      <button class="white" data-key="E5">E5</button>
      <button class="white" data-key="F5">F5</button>
      <button class="black" data-key="F#5"></button>
      <button class="white" data-key="G5">G5</button>
      <button class="black" data-key="G#5"></button>
      <button class="white" data-key="A5">A5</button>
      <button class="black" data-key="A#5"></button>
      <button class="white" data-key="B5">B5</button>
      <!--     <button class="white" data-key="C6">C6</button>
    <button class="black" data-key="C#6"></button>
    <button class="white" data-key="D6">D6</button> -->
    </div>
  </div>

</div>
<span id="paw" class="up">
  <svg id="close" width="62" height="155" viewBox="0 0 62 155" fill="none" xmlns="http://www.w3.org/2000/svg">
    <path d="M16.8211 45.4678C22.133 56.7758 14.8026 120.174 14.9088 135.074C14.9088 161.21 52.7296 155.876 52.7296 137.527C52.6234 125.081 46.8865 68.5106 51.7735 41.8407C55.3527 22.3079 52.5172 17.3044 45.6117 1.........完整代码请登录后点击上方下载按钮下载查看

网友评论0