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