js实现可拖拽正方体内粒子发光三维效果代码

代码语言:html

所属分类:三维

代码描述:js实现可拖拽正方体内粒子发光三维效果代码

代码标签: 正方 体内 粒子 发光 三维 效果

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

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

<head>

  <meta charset="UTF-8">

  
  
  
<style>
* {
  box-sizing: border-box;
  -webkit-transform-origin: 50% 50%;
          transform-origin: 50% 50%;
  -webkit-backface-visibility: visible;
          backface-visibility: visible;
}

html,
body {
  height: 100%;
  width: 100%;
  overflow: hidden;
}

body {
  display: grid;
  place-items: center;
  margin: 0;
  -webkit-perspective: 200vmin;
          perspective: 200vmin;
  background: black;
}

@-webkit-keyframes bg-fall {
  0% {
    background-position-y: calc(var(--length));
  }
  100% {
    background-position-y: calc(var(--length) + var(--length) * 4);
  }
}

@keyframes bg-fall {
  0% {
    background-position-y: calc(var(--length));
  }
  100% {
    background-position-y: calc(var(--length) + var(--length) * 4);
  }
}
.box {
  --thickness: 0.3vmin;
  --size: 60vmin;
  --length: calc(var(--size) / 1.4142135624 + var(--thickness) / 1.4142135624);
  --speed: 3;
  --x: -0.4;
  --y: 0.1;
  --count: 200;
  width: var(--size);
  height: var(--size);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transform: rotateX(calc(var(--y, 0) * -1turn)) rotateY(calc(var(--x, 0) * 1turn));
          transform: rotateX(calc(var(--y, 0) * -1turn)) rotateY(calc(var(--x, 0) * 1turn));
  pointer-events: none;
}
.box > div {
  position: absolute;
  width: 0;
  height: 0;
  left: calc(var(--size) / 2);
  top: calc(var(--size) / 2);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
}
.box > div > div {
  position: absolute;
  top: calc(var(--length) / -2);
  left: calc(var(--thickness) / -2);
  width: var(--thickness);
  height: var(--length);
  -webkit-transform: rotateY(calc(var(--i, 0) * 90deg)) translateZ(calc(var(--size) / 2 + var(--thickness) / 2));
          transform: rotateY(calc(var(--i, 0) * 90deg)) translateZ(calc(var(--size) / 2 + var(--thickness) / 2));
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
}
.box > div > div:nth-child(1) {
  --i: 1;
}
.box > div > div:nth-child(2) {
  --i: 2;
}
.box > div > div:nth-child(3) {
  --i: 3;
}
.box > div > div:nth-child(4) {
  --i: 4;
}
.box > div > div > div {
  position: absolute;
  width: var(--thickness);
  height: var(--length);
  background: repeat -webkit-gradient(linear, left top, left bottom, from(#b23434), color-stop(#b2b234), color-stop(#34b234), color-stop(#34b2b2), color-stop(#3434b2), color-stop(#b234b2), to(#b23434));
  background: repeat linear-gradient(to bottom, #b23434, #b2b234, #34b234, #34b2b2, #3434b2, #b234b2, #b23434);
  background-size: 100% calc(var(--length) * 2);
  -webkit-animation: bg-fall calc(var(--speed) * 1s) linear infinite;
          animation: bg-fall calc(var(--speed) * 1s) linear infinite;
}
.box > div > div > div:nth-child(1) {
  -webkit-transform: translateZ(calc(var(--thickness) / 2.01));
          transform: translateZ(calc(var(--thickness) / 2.01));
}
.box > div > div > div:nth-child(2) {
  -webkit-transform: rotateY(90deg) translateZ(calc(var(--thickness) / 2.01));
          transform: rotateY(90deg) translateZ(calc(var(--thickness) / 2.01));
}
.box > div > div > div:nth-child(3) {
  -webkit-transform: translateZ(calc(var(--thickness) / -2.01));
          transform: translateZ(calc(var(--thickness) / -2.01));
}
.box > div > div > div:nth-child(4) {
  -webkit-transform: rotateY(90deg) translateZ(calc(var(--thickness) / -2.01));
          transform: rotateY(90deg) translateZ(calc(var(--thickness) / -2.01));
}
.box .x {
  -webkit-transform: rotateY(45deg);
          transform: rotateY(45deg);
}
.box .y {
  -webkit-transform: rotateZ(90deg) rotateY(45deg);
          transform: rotateZ(90deg) rotateY(45deg);
}
.box .z {
  -webkit-transform: rotateX(90deg) rotateY(45deg);
          transform: rotateX(90deg) rotateY(45deg);
}
.box .dot {
  width: calc(var(--size) / 150);
  height: calc(var(--size) / 150);
  background: repeat -webkit-gradient(linear, left top, left bottom, from(#ed5e5e), color-stop(#eded5e), color-stop(#5eed5e), color-stop(#5eeded), color-stop(#5e5eed), color-stop(#ed5eed), to(#ed5e5e));
  background: repeat linear-gradient(to bottom, #ed5e5e, #eded5e, #5eed5e, #5eeded, #5e5eed, #ed5eed, #ed5e5e);
  background-size: calc(var(--size) / 50) var(--length);
  -webkit-transform: translate3D(calc(var(--size) * var(--r1)), calc(var(--size) * var(--r2)), calc(var(--size) * var(--r3))) rotateY(calc(var(--x, 0) * -1turn)) rotateX(calc(var(--y, 0) * 1turn)) scale(calc(var(--i) / 100 + 0.66));
          transform: translate3D(calc(var(--size) * var(--r1)), calc(var(--size) * var(--r2)), calc(var(--size) * var(--r3))) rotateY(calc(var(--x, 0) * -1turn)) rotateX(calc(var(--y, 0) * 1turn)) scale(calc(var(--i) / 100 + 0.66));
  border-radius: 50%;
  -webkit-animation: bg-fall calc(var(--speed) * 1s) linear infinite;
          animation: bg-fall calc(var(--speed) * 1s) linear infinite;
  -webkit-animation-delay: calc(var(--speed) * -1s * (var(--i) / var(--count)));
          animation-delay: calc(var(--speed) * -1s * (var(--i) / var(--count)));
}
.box .dot:nth-child(1) {
  --i: 1;
  --r1: 0.24;
  --r2: 0.2117241379;
  --r3: 0.1103448276;
}
.box .dot:nth-child(2) {
  --i: 2;
  --r1: -0.0006896552;
  --r2: -0.0531034483;
  --r3: 0.0393103448;
}
.box .dot:nth-child(3) {
  --i: 3;
  --r1: -0.1513793103;
  --r2: -0.034137931;
  --r3: -0.134137931;
}
.box .dot:nth-child(4) {
  --i: 4;
  --r1: -0.0734482759;
  --r2: -0.1220689655;
  --r3: -0.0248275862;
}
.box .dot:nth-child(5) {
  --i: 5;
  --r1: 0.0779310345;
  --r2: 0.3389655172;
  --r3: -0.1617241379;
}
.box .dot:nth-child(6) {
  --i: 6;
  --r1: 0.0055172414;
  --r2: 0.0682758621;
  --r3: -0.3320689655;
}
.box .dot:nth-child(7) {
  --i: 7;
  --r1: -0.3427586207;
  --r2: 0.1637931034;
  --r3: -0.0010344828;
}
.box .dot:nth-child(8) {
  --i: 8;
  --r1: 0.0186206897;
  --r2: 0.3382758621;
  --r3: 0.2920689655;
}
.box .dot:nth-child(9) {
  --i: 9;
  --r1: -0.0168965517;
  --r2: 0.3179310345;
  --r3: -0.1172413793;
}
.box .dot:nth-child(10) {
  --i: 10;
  --r1: 0.2389655172;
  --r2: 0.3131034483;
  --r3: 0.245862069;
}
.box .dot:nth-child(11) {
  --i: 11;
  --r1: -0.0710344828;
  --r2: 0.1255172414;
  --r3: -0.0789655172;
}
.box .dot:nth-child(12) {
  --i: 12;
  --r1: -0.1865517241;
  --r2: 0.1096551724;
  --r3: 0.1282758621;
}
.box .dot:nth-child(13) {
  --i: 13;
  --r1: -0.085862069;
  --r2: -0.0631034483;
  --r3: -0.2710344828;
}
.box .dot:nth-child(14) {
  --i: 14;
  --r1: 0.2979310345;
  --r2: 0.2017241379;
  --r3: -0.2975862069;
}
.box .dot:nth-child(15) {
  --i: 15;
  --r1: -0.2175862069;
  --r2: 0.0196551724;
  --r3: 0.0413793103;
}
.box .dot:nth-child(1.........完整代码请登录后点击上方下载按钮下载查看

网友评论0