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.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0