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: sans-serif;
  font-size: 1.35625vmin;
  color: rgba(17, 37, 57, 0.75);
  text-transform: uppercase;
}

/***********************/
/***********************/
body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  width: 100%;
  font-weight: bolder;
  overflow: hidden;
  cursor: grab;
  background-color: #b7ecff;
}

.face {
  position: absolute;
}

.flex {
  display: flex;
  justify-content: center;
  align-items: center;
}

/***********************/
/***********************/
.main {
  position: absolute;
  width: 42vmin;
  height: 12.25vmin;
  transform: perspective(700vmin) rotateX(66deg) rotateZ(40deg) translateZ(-28vmin);
}

.shadows {
  position: absolute;
  width: 102%;
  height: 102%;
  left: -1%;
  bottom: -1%;
  background-image: radial-gradient(#639cb5, #41748a);
  box-shadow: 0 0 0.875vmin 0.2625vmin rgba(65, 116, 138, 0.5);
}
.shadows::after {
  content: "";
  position: absolute;
  width: 102%;
  height: 102%;
  left: -1%;
  top: -1%;
  background-color: #396579;
  box-shadow: 0 0 0.875vmin 0.4375vmin rgba(65, 116, 138, 0.5);
  border-radius: 0.4375vmin;
  filter: blur(0.2625vmin);
}
.shadows::before {
  content: "";
  position: absolute;
  bottom: 0;
  right: 0;
  width: 46.375vmin;
  height: 43.75vmin;
  border-bottom-left-radius: 14.875vmin;
  transform-origin: bottom left;
  transform: skewX(-15deg);
  background-image: linear-gradient(to top, #396579, #41748a 30%, #4a829b 50%, #639cb5);
  box-shadow: 0 0 0.875vmin 0.4375vmin rgba(65, 116, 138, 0.5);
  filter: blur(0.2625vmin);
}

.waves {
  position: absolute;
  top: 100%;
  left: 0;
  display: grid;
  grid-auto-flow: column;
  width: 100%;
  height: 100%;
  opacity: 0;
  visibility: hidden;
}

.is-wave-playing {
  visibility: visible;
  opacity: 1;
}

.wave {
  height: 0vmin;
  width: 6vmin;
  background-color: #639cb5;
}
.wave:nth-of-type(3) {
  animation: wave 525ms ease-in alternate infinite 300ms;
}
.wave:nth-of-type(4) {
  animation: wave 525ms ease-in alternate infinite 400ms;
}
.wave:nth-of-type(5) {
  animation: wave 525ms ease-in alternate infinite 500ms;
}
.wave:nth-of-type(2), .wave:nth-of-type(6) {
  height: 0vmin;
  animation: wave-2 262.5ms ease-in alternate infinite 425ms;
}
.wave:nth-of-type(1), .wave:nth-of-type(7) {
  height: 0vmin;
  animation: wave-3 525ms ease-in alternate infinite 850ms;
}

@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% {
    height: 5.25vmin;
  }
  100% {
    height: 10.5vmin;
  }
}
@keyframes wave-3 {
  0%, 50% {
    height: 0vmin;
  }
  75%, 100% {
    height: 8.75vmin;
  }
}
/***********************/
/***********************/
.a {
  width: 31.5vmin;
  height: 8.75vmin;
  position: absolute;
  top: 0;
  left: 0;
}
.a__front {
  width: 31.5vmin;
  height: 47.25vmin;
  transform-origin: bottom left;
  transform: rotateX(-90deg) translateZ(-38.5vmin);
}
.a__back {
  width: 31.5vmin;
  height: 47.25vmin;
  transform-origin: top left;
  transform: rotateX(-90deg) rotateY(180deg) translateX(-31.5vmin) translateY(-47.25vmin);
}
.a__right {
  width: 8.75vmin;
  height: 47.25vmin;
  transform-origin: top left;
  transform: rotateY(90deg) rotateZ(-90deg) translateZ(31.5vmin) translateX(-8.75vmin) translateY(-47.25vmin);
}
.a__left {
  width: 8.75vmin;
  height: 47.25vmin;
  transform-origin: top left;
  transform: rotateY(-90deg) rotateZ(90deg) translateY(-47.25vmin);
}
.a__top {
  width: 31.5vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: translateZ(47.25vmin);
}
.a__bottom {
  width: 31.5vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateY(180deg) translateX(-31.5vmin);
}
.a__front {
  background-color: #639bd1;
  padding: 3.5vmin;
}
.a__front::after {
  content: "";
  display: inline-block;
  width: 100%;
  height: 100%;
  background-color: #112539;
}
.a__back {
  background-color: #397fc3;
  background-image: linear-gradient(to bottom, transparent 70%, #17324d), linear-gradient(to right, transparent 70%, #73a5d6), linear-gradient(to left, transparent 70%, #73a5d6), linear-gradient(to top, transparent 70%, #73a5d6), linear-gradient(to top, #1c3f61, #285888, #2e659c 20%, #397fc3);
  background-size: 100% 1.75vmin, 1.75vmin 100%, 1.75vmin 100%, 100% 1.75vmin, 100% 7vmin;
  background-position: 0 100%, 100% 0, 0 0, 0 0, 0 100%;
  background-repeat: no-repeat;
}
.a__back::after {
  content: "stereo";
  position: absolute;
  top: 1.75vmin;
  left: 50%;
  transform: translateX(-50%);
  font-weight: bold;
  font-size: 5.25vmin;
  color: #397fc3;
  text-shadow: 0 0 0.175vmin #87b2dc;
}
.a__back::before {
  content: "";
  position: absolute;
  width: 26.25vmin;
  height: 17.5vmin;
  bottom: 0.175vmin;
  right: 0.175vmin;
  border-top-left-radius: 0.875vmin;
  background-image: linear-gradient(to bottom, rgba(51, 114, 176, 0.75), rgba(51, 114, 176, 0.1));
  border-top: 0.2625vmin solid #2e659c;
  border-left: 0.2625vmin solid #2e659c;
}
.a__left {
  background-color: #73a5d6;
  background-image: linear-gradient(to left, transparent 70%, #9ec1e3), linear-gradient(to top, #397fc3, #4c8cca 20%, #73a5d6), linear-gradient(to top, #73a5d6 70%, #93b9df);
  background-size: 1.75vmin 100%, 100% 7vmin, 100% 1.75vmin;
  background-position: 0% 100%, 0 100%, 0 0%;
  background-repeat: no-repeat;
}
.a__right {
  background-color: #4c8cca;
}
.a__top {
  background-color: #112539;
}
.a__bottom {
  background-color: #396579;
}

.b01__front,
.b02__front,
.b04__front,
.b03__front {
  background-color: #639bd1;
  background-image: linear-gradient(to top, transparent 70%, #aac9e6), linear-gradient(to top, #4f8ecc, #5b96cf 20%, #639bd1);
  background-size: 100% 1.75vmin, 100% 7vmin;
  background-position: 0 0, 0 100%;
  background-repeat: no-repeat;
}
.b01__back,
.b02__back,
.b04__back,
.b03__back {
  background-color: #397fc3;
  background-image: linear-gradient(to top, transparent 70%, #7fadd9), linear-gradient(to top, #3372b0, #377abb 20%, #397fc3);
  background-size: 100% 1.75vmin, 100% 7vmin;
  background-position: 0 0, 0 100%;
  background-repeat: no-repeat;
}

.b01 {
  width: 9.275vmin;
  height: 12.25vmin;
  position: absolute;
  top: 0;
  left: 0;
  transform: translateZ(47.25vmin);
}
.b01__front {
  width: 9.275vmin;
  height: 8.75vmin;
  transform-origin: bottom left;
  transform: rotateX(-90deg) translateZ(3.5vmin);
}
.b01__back {
  width: 9.275vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateX(-90deg) rotateY(180deg) translateX(-9.275vmin) translateY(-8.75vmin);
}
.b01__right {
  width: 12.25vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateY(90deg) rotateZ(-90deg) translateZ(9.275vmin) translateX(-12.25vmin) translateY(-8.75vmin);
}
.b01__left {
  width: 12.25vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateY(-90deg) rotateZ(90deg) translateY(-8.75vmin);
}
.b01__top {
  width: 9.275vmin;
  height: 12.25vmin;
  transform-origin: top left;
  transform: translateZ(8.75vmin);
}
.b01__bottom {
  width: 9.275vmin;
  height: 12.25vmin;
  transform-origin: top left;
  transform: rotateY(180deg) translateX(-9.275vmin);
}
.b01__front {
  background-color: #639bd1;
  background-image: linear-gradient(to left, transparent 70%, #9ec1e3), linear-gradient(to top, transparent 70%, #aac9e6), linear-gradient(to top, #4f8ecc, #5b96cf 20%, #639bd1);
  background-size: 1.75vmin 100%, 100% 1.75vmin, 100% 7vmin;
  background-position: 0 100%, 0 0, 0 100%;
  background-repeat: no-repeat;
}
.b01__back {
  background-color: #397fc3;
  background-image: linear-gradient(to right, transparent 70%, #73a5d6), linear-gradient(to top, transparent 70%, #7fadd9), linear-gradient(to top, #3372b0, #377abb 20%, #397fc3);
  background-size: 1.75vmin 100%, 100% 1.75vmin, 100% 7vmin;
  background-position: 100% 0%, 0 0, 0 100%;
  background-repeat: no-repeat;
}
.b01__left {
  background-color: #73a5d6;
  background-image: linear-gradient(to right, transparent 70%, #9ec1e3), linear-gradient(to left, transparent 70%, #9ec1e3), linear-gradient(to top, #639bd1, #6ba0d4 20%, #73a5d6), linear-gradient(to top, #73a5d6 70%, #9abee2);
  background-size: 1.75vmin 100%, 1.75vmin 100%, 100% 7vmin, 100% 1.75vmin, 100% 100%;
  background-position: 100% 0, 0 100%, 0 100%, 0 0%, 0 0;
  background-repeat: no-repeat;
}
.b01__right {
  background-image: linear-gradient(to right, #4c8cca 20%, #112539 20% 60%, #4c8cca 60%);
}
.b01__top {
  background-color: #73a5d6;
}
.b01__bottom {
  background-color: #397fc3;
}

.b02 {
  width: 15.4vmin;
  height: 12.25vmin;
  position: absolute;
  top: 0;
  left: 16.1vmin;
  transform: translateZ(47.25vmin);
}
.b02__front {
  width: 15.4vmin;
  height: 8.75vmin;
  transform-origin: bottom left;
  transform: rotateX(-90deg) translateZ(3.5vmin);
}
.b02__back {
  width: 15.4vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateX(-90deg) rotateY(180deg) translateX(-15.4vmin) translateY(-8.75vmin);
}
.b02__right {
  width: 12.25vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateY(90deg) rotateZ(-90deg) translateZ(15.4vmin) translateX(-12.25vmin) translateY(-8.75vmin);
}
.b02__left {
  width: 12.25vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateY(-90deg) rotateZ(90deg) translateY(-8.75vmin);
}
.b02__top {
  width: 15.4vmin;
  height: 12.25vmin;
  transform-origin: top left;
  transform: translateZ(8.75vmin);
}
.b02__bottom {
  width: 15.4vmin;
  height: 12.25vmin;
  transform-origin: top left;
  transform: rotateY(180deg) translateX(-15.4vmin);
}
.b02__front {
  background-color: #639bd1;
  background-image: linear-gradient(to right, transparent 70%, #9ec1e3), linear-gradient(to top, transparent 70%, #aac9e6), linear-gradient(to top, #4f8ecc, #5b96cf 20%, #639bd1);
  background-size: 1.75vmin 100%, 100% 1.75vmin, 100% 7vmin;
  background-position: 100% 0%, 0 0, 0 100%;
  background-repeat: no-repeat;
}
.b02__back {
  background-color: #397fc3;
  background-image: linear-gradient(to left, transparent 70%, #73a5d6), linear-gradient(to top, transparent 70%, #7fadd9), linear-gradient(to top, #3372b0, #377abb 20%, #397fc3);
  background-size: 1.75vmin 100%, 100% 1.75vmin, 100% 7vmin;
  background-position: 0 100%, 0 0, 0 100%;
  background-repeat: no-repeat;
}
.b02__left {
  background-image: linear-gradient(to right, #4c8cca 30%, #112539 30% 80%, #4c8cca 80%);
}
.b02__right {
  background-color: #4c8cca;
}
.b02__top {
  background-color: #73a5d6;
  display: inline-flex;
  justify-content: center;
  gap: 1.3125vmin;
}
.b02__top::before, .b02__top::after {
  content: "";
  margin-top: 5.25vmin;
  width: 3.0625vmin;
  height: 3.0625vmin;
  border: 0.39375vmin solid #ffffff;
  outline: 0.35vmin solid #498d8b;
  border-radius: 50%;
  background-image: radial-gradient(circle at 50% 50%, #112539 50%, #94b8c1 50%);
}
.b02__bottom {
  background-color: #397fc3;
}

.b03 {
  width: 7.35vmin;
  height: 4.9vmin;
  position: absolute;
  top: 0;
  left: 9.1vmin;
  transform: translateZ(47.25vmin);
}
.b03__front {
  width: 7.35vmin;
  height: 8.75vmin;
  transform-origin: bottom left;
  transform: rotateX(-90deg) translateZ(-3.85vmin);
}
.b03__back {
  width: 7.35vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateX(-90deg) rotateY(180deg) translateX(-7.35vmin) translateY(-8.75vmin);
}
.b03__right {
  width: 4.9vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateY(90deg) rotateZ(-90deg) translateZ(7.35vmin) translateX(-4.9vmin) translateY(-8.75vmin);
}
.b03__left {
  width: 4.9vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateY(-90deg) rotateZ(90deg) translateY(-8.75vmin);
}
.b03__top {
  width: 7.35vmin;
  height: 4.9vmin;
  transform-origin: top left;
  transform: translateZ(8.75vmin);
}
.b03__bottom {
  width: 7.35vmin;
  height: 4.9vmin;
  transform-origin: top left;
  transform: rotateY(180deg) translateX(-7.35vmin);
}
.b03__front {
  background: #112539;
}
.b03__left {
  background-color: #73a5d6;
  display: none;
}
.b03__right {
  background-color: #4c8cca;
  display: none;
}
.b03__top {
  background-color: #73a5d6;
}
.b03__top::before {
  content: "hot line";
  display: inline-block;
  margin-top: 1.75vmin;
  padding: 0.4375vmin;
  color: #73a5d6;
  background-color: white;
  border-radius: 0.4375vmin;
}
.b03__bottom {
  background-color: #397fc3;
}

.b04 {
  width: 7.35vmin;
  height: 2.975vmin;
  position: absolute;
  bottom: 0;
  left: 9.1vmin;
  transform: translateZ(47.25vmin);
}
.b04__front {
  width: 7.35vmin;
  height: 8.75vmin;
  transform-origin: bottom left;
  transform: rotateX(-90deg) translateZ(-5.775vmin);
}
.b04__back {
  width: 7.35vmin;
  height: 8.75vmin;
  transform-origin: top left;
  transform: rotateX(-90deg).........完整代码请登录后点击上方下载按钮下载查看

网友评论0