div+css+js实现老式三维磁带声音机录音机按下播放音乐效果代码

代码语言:html

所属分类:动画

代码描述:div+css+js实现老式三维磁带声音机录音机按下播放音乐效果代码

代码标签: div css js 老式 三维 磁带 声音机 录音机 按下 播放 音乐

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

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">



    <style>
        /***********************/
        /***********************/
        /***********************/
        *,
        *::after,
        *::before {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
          transform-style: preserve-3d;
          user-select: none;
          -webkit-tap-highlight-color: transparent;
          appearance: none;
          font-family: cursive;
        }
        
        /***********************/
        /***********************/
        body {
          display: flex;
          justify-content: center;
          align-items: center;
          height: 100vh;
          width: 100%;
          overflow: hidden;
          cursor: grab;
          background-color: #fffff9;
        }
        
        .face {
          position: absolute;
        }
        
        .flex {
          display: flex;
          justify-content: center;
          align-items: center;
        }
        
        /***********************/
        /***********************/
        .main {
          position: absolute;
          width: 70vmin;
          height: 49vmin;
          transform: perspective(700vmin) rotateX(60deg) rotateZ(40deg) translateZ(-10.5vmin);
          transition: transform 350ms ease-out;
        }
        
        .shadows {
          position: absolute;
          top: 0;
          left: -2%;
          width: 102%;
          height: 100%;
          transform: translateZ(-0.175vmin);
          background-color: #a67e6e;
        }
        
        .shadow {
          position: absolute;
        }
        .shadow-1 {
          top: 100%;
          width: 100%;
          height: 7vmin;
          transform-origin: top left;
          transform: skewX(-5deg);
          background-image: linear-gradient(to bottom, #a67e6e, #b39284, #bda094 40%);
        }
        .shadow-2 {
          left: 100%;
          width: 1.75vmin;
          height: 100%;
          transform-origin: top left;
          transform: skewY(40deg);
          background-image: linear-gradient(to right, #a67e6e, #bda094);
        }
        
        .waves {
          position: absolute;
          top: 112%;
          left: 0;
          display: grid;
          grid-auto-flow: column;
          width: 100%;
          height: 100%;
        }
        
        .is-wave-playing {
          display: none;
        }
        
        .wave {
          height: 0vmin;
          width: 7vmin;
          background-color: #bda094;
        }
        .wave:nth-of-type(2) {
          animation: wave 500ms ease-in alternate infinite 200ms;
        }
        .wave:nth-of-type(3) {
          animation: wave 500ms ease-in alternate infinite 300ms;
        }
        .wave:nth-of-type(4) {
          animation: wave 500ms ease-in alternate infinite 400ms;
        }
        .wave:nth-of-type(5) {
          animation: wave 500ms ease-in alternate infinite 500ms;
        }
        .wave:nth-of-type(6) {
          animation: wave 500ms ease-in alternate infinite 600ms;
        }
        .wave:nth-of-type(1), .wave:nth-of-type(7) {
          height: 0vmin;
          animation: wave-2 600ms ease-in alternate infinite 4250ms;
        }
        
        @keyframes wave {
          0%, 100% {
            height: 7vmin;
          }
          24% {
            height: 10.5vmin;
          }
          25%, 30% {
            height: 11.375vmin;
          }
          55%, 60% {
            height: 7.875vmin;
          }
          61%, 65% {
            height: 11.55vmin;
          }
          80%, 82% {
            height: 6.125vmin;
          }
          83%, 90% {
            height: 5.25vmin;
          }
          95% {
            height: 5.6875vmin;
          }
        }
        @keyframes wave-2 {
          0%, 50% {
            height: 0vmin;
          }
          75%, 100% {
            height: 8.75vmin;
          }
        }
        .a {
          width: 66.5vmin;
          height: 47.25vmin;
          position: absolute;
          top: 0.875vmin;
          left: 0;
        }
        .a__front {
          width: 66.5vmin;
          height: 1.75vmin;
          transform-origin: bottom left;
          transform: rotateX(-90deg) translateZ(45.5vmin);
        }
        .a__back {
          width: 66.5vmin;
          height: 1.75vmin;
          transform-origin: top left;
          transform: rotateX(-90deg) rotateY(180deg) translateX(-66.5vmin) translateY(-1.75vmin);
        }
        .a__right {
          width: 47.25vmin;
          height: 1.75vmin;
          transform-origin: top left;
          transform: rotateY(90deg) rotateZ(-90deg) translateZ(66.5vmin) translateX(-47.25vmin) translateY(-1.75vmin);
        }
        .a__left {
          width: 47.25vmin;
          height: 1.75vmin;
          transform-origin: top left;
          transform: rotateY(-90deg) rotateZ(90deg) translateY(-1.75vmin);
        }
        .a__top {
          width: 66.5vmin;
          height: 47.25vmin;
          transform-origin: top left;
          transform: translateZ(1.75vmin);
        }
        .a__bottom {
          width: 66.5vmin;
          height: 47.25vmin;
          transform-origin: top left;
          transform: rotateY(180deg) translateX(-66.5vmin);
        }
        .a__front {
          background-image: linear-gradient(to bottom, #988193, #bfb1bc);
        }
        .a__back {
          background-image: linear-gradient(to bottom, #be9eb9, #d7c3d3);
        }
        .a__left {
          background-image: linear-gradient(to bottom, #988193, #bfb1bc);
        }
        .a__right {
          background-image: linear-gradient(to bottom, #aa97a6, #c1b3be);
        }
        .a__top {
          background-color: #e7dbe5;
        }
        .a__bottom {
          background-color: #aa97a6;
          box-shadow: 0 0 1.3125vmin 0.875vmin #62473c;
        }
        
        .b {
          width: 70vmin;
          height: 49vmin;
          position: absolute;
          top: 0;
          left: 0;
          transform: translateZ(1.75vmin);
        }
        .b__front {
          width: 70vmin;
          height: 5.25vmin;
          transform-origin: bottom left;
          transform: rotateX(-90deg) translateZ(43.75vmin);
        }
        .b__back {
          width: 70vmin;
          height: 5.25vmin;
          transform-origin: top left;
          transform: rotateX(-90deg) rotateY(180deg) translateX(-70vmin) translateY(-5.25vmin);
        }
        .b__right {
          width: 49vmin;
          height: 5.25vmin;
          transform-origin: top left;
          transform: rotateY(90deg) rotateZ(-90deg) translateZ(70vmin) translateX(-49vmin) translateY(-5.25vmin);
        }
        .b__left {
          width: 49vmin;
          height: 5.25vmin;
          transform-origin: top left;
          transform: rotateY(-90deg) rotateZ(90deg) translateY(-5.25vmin);
        }
        .b__top {
          width: 70vmin;
          height: 49vmin;
          transform-origin: top left;
          transform: translateZ(5.25vmin);
        }
        .b__bottom {
          width: 70vmin;
          height: 49vmin;
          transform-origin: top left;
          transform: rotateY(180deg) translateX(-70vmin);
        }
        .b__front {
          background-image: linear-gradient(to top, #2c2514, #3d341c);
          border-top: 0.35vmin solid #62532c;
          border-bottom: 0.35vmin solid #2b2513;
        }
        .b__front::after {
          content: "";
          position: absolute;
          top: 55%;
          left: 50%;
          transform: translateX(-50%) translateY(-50%);
          width: 7.875vmin;
          height: 2.1875vmin;
          background-image: linear-gradient(to right, #0c0a05, black, #0c0a05);
        }
        .b__back {
          background-image: linear-gradient(to bottom, #2c2514, #3d341c);
          border-top: 0.35vmin solid #62532c;
          border-bottom: 0.35vmin solid #3a311a;
        }
        .b__left {
          background-image: linear-gradient(to top, #2c2514, #3d341c);
          border-top: 0.35vmin solid #62532c;
          border-bottom: 0.35vmin solid #2c2514;
        }
        .b__right {
          background-image: linear-gradient(to top, #1d190d, #2f2815);
          border-top: 0.35vmin solid #4e4324;
          border-bottom: 0.35vmin solid #0c0a05;
        }
        .b__top {
          background-color: #211c0f;
        }
        .b__bottom {
          background-color: #0c0a05;
        }
        
        .c {
          width: 38.325vmin;
          height: 48.3vmin;
          position: absolute;
          top: 0.175vmin;
          left: 0.175vmin;
          transform: translateZ(7.175vmin);
        }
        .c__front {
          width: 38.325vmin;
          height: 1.75vmin;
          transform-origin: bottom left;
          transform: rotateX(-90deg) translateZ(46.55vmin);
        }
        .c__back {
          width: 38.325vmin;
          height: 1.75vmin;
          transform-origin: top left;
          transform: rotateX(-90deg) rotateY(180deg) translateX(-38.325vmin) translateY(-1.75vmin);
        }
        .c__right {
          width: 48.3vmin;
          height: 1.75vmin;
          transform-origin: top left;
          transform: rotateY(90deg) rotateZ(-90deg) translateZ(38.325vmin) translateX(-48.3vmin) translateY(-1.75vmin);
        }
        .c__left {
          width: 48.3vmin;
          height: 1.75vmin;
          transform-origin: top left;
          transform: rotateY(-90deg) rotateZ(90deg) translateY(-1.75vmin);
        }
        .c__top {
          width: 38.325vmin;
          height: 48.3vmin;
          transform-origin: top left;
          transform: translateZ(1.75vmin);
        }
        .c__bottom {
          width: 38.325vmin;
          height: 48.3vmin;
          transform-origin: top left;
          transform: rotateY(180deg) translateX(-38.325vmin);
        }
        .c__front {
          background-image: linear-gradient(to top, #674e40, #96725d);
          border-top: 0.2625vmin solid #b99681;
          border-bottom: 0.2625vmin solid #785846;
        }
    .........完整代码请登录后点击上方下载按钮下载查看

网友评论0