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