vue+css实现一个三维法师人物代码

代码语言:html

所属分类:三维

代码描述:vue+css实现一个三维法师人物代码

代码标签: vue css 三维 法师 人物 代码

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

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
<style>
body {
  height: 100vh;
  margin: 0;
  background-color: #555;
  overflow: hidden;
  background-image: linear-gradient(#5b86ea, #fff);
}
body * {
  box-sizing: border-box;
}
body #app {
  height: 100vh;
}
body details {
  margin: 1em 0 0 1em;
  color: white;
  font-family: monospace, sans-serif;
  z-index: 2;
  position: relative;
  cursor: pointer;
  position: absolute;
}
body #view {
  overflow: hidden;
  height: 100vh;
  width: 100vw;
  display: flex;
  align-items: center;
  justify-content: center;
  perspective: 500px;
  border: 0;
  outline: 0;
  opacity: 0;
}
body #view * {
  transform-style: preserve-3d;
}
body #view #scene #space {
  position: relative;
  display: grid;
  grid-template-areas: "overlap";
  transform-style: preserve-3d;
  justify-content: center;
  align-items: flex-end;
  transform: rotateX(-20deg) rotateY(20deg);
  font-size: calc(5vh + 1vw);
  transform-origin: center 90%;
  -pointer-events: none;
}
body #view #scene #space > * {
  grid-area: overlap;
}
body #view #scene #space .absolute {
  position: absolute;
}
body #view #scene #space .reference {
  transform-style: preserve-3d;
  display: grid;
  grid-template-areas: "overlap";
}
body #view #scene #space .reference > * {
  grid-area: overlap;
  transform-origin: top left;
  align-items: end;
}
body #view #scene #space .group {
  position: absolute;
  transform: translateX(calc(var(--posX))) translateY(calc(var(--posY) * -1)) translateZ(var(--posZ)) rotateX(var(--rotX)) rotateY(var(--rotY)) rotateZ(var(--rotZ));
}
body #view #scene #space .group > .reference {
  align-items: end;
}
body #view #scene #space .group.shaded > .reference .cuboid > .front, body #view #scene #space .group.shaded > .reference .cuboid > .back {
  filter: brightness(0.9);
}
body #view #scene #space .group.shaded > .reference .cuboid > .left, body #view #scene #space .group.shaded > .reference .cuboid > .right {
  filter: brightness(0.8);
}
body #view #scene #space .group.shaded > .reference .cuboid > .bottom {
  filter: brightness(0.7);
}
body #view #scene #space .cuboid,
body #view #scene #space .plane {
  position: absolute;
  width: var(--sizeX);
  height: var(--sizeY);
  transform: translateX(var(--posX)) translateY(calc(var(--posY) * -1)) translateZ(var(--posZ)) rotateX(var(--rotX)) rotateY(var(--rotY)) rotateZ(var(--rotZ));
  align-items: start;
}
body #view #scene #space .cuboid.test > *, body #view #scene #space .cuboid.plane.test,
body #view #scene #space .plane.test > *,
body #view #scene #space .plane.plane.test {
  border: solid 1px black;
  background: linear-gradient(#f005, #00f5);
  box-shadow: 0 0 0 1px #0005;
}
body #view #scene #space .cuboid.test > *.top, body #view #scene #space .cuboid.plane.test.top,
body #view #scene #space .plane.test > *.top,
body #view #scene #space .plane.plane.test.top {
  background: radial-gradient(#fff 5%, #f0f5 20%);
}
body #view #scene #space .cuboid.test > *.bottom, body #view #scene #space .cuboid.plane.test.bottom,
body #view #scene #space .plane.test > *.bottom,
body #view #scene #space .plane.plane.test.bottom {
  background: radial-gradient(#000 5%, #0f05 20%);
}
body #view #scene #space .cuboid.overflow > *,
body #view #scene #space .plane.overflow > * {
  box-shadow: 0 0 0 0.5px currentColor;
}
body #view #scene #space .cuboid._top > .top, body #view #scene #space .cuboid._bottom > .bottom, body #view #scene #space .cuboid._right > .right, body #view #scene #space .cuboid._left > .left, body #view #scene #space .cuboid._front > .front, body #view #scene #space .cuboid._back > .back,
body #view #scene #space .plane._top > .top,
body #view #scene #space .plane._bottom > .bottom,
body #view #scene #space .plane._right > .right,
body #view #scene #space .plane._left > .left,
body #view #scene #space .plane._front > .front,
body #view #scene #space .plane._back > .back {
  display: none;
}
body #view #scene #space .cuboid.color > *,
body #view #scene #space .plane.color > * {
  background-color: currentColor;
}
body #view #scene #space .cuboid .top,
body #view #scene #space .plane .top {
  height: var(--sizeZ);
  width: var(--sizeX);
  transform: rotateX(90deg);
}
body #view #scene #space .cuboid .bottom,
body #view #scene #space .plane .bottom {
  height: var(--sizeZ);
  width: var(--sizeX);
  transform: translateY(var(--sizeY)) rotateX(90deg);
}
body #view #scene #space .cuboid .left,
body #view #scene #space .plane .left {
  height: var(--sizeY);
  width: var(--sizeZ);
  transform: rotateY(-90deg);
}
body #view #scene #space .cuboid .right,
body #view #scene #space .plane .right {
  height: var(--sizeY);
  width: var(--sizeZ);
  transform: translateX(var(--sizeX)) rotateY(-90deg);
}
body #view #scene #space .cuboid .front,
body #view #scene #space .plane .front {
  width: var(--sizeX);
  height: var(--sizeY);
  transform: translateZ(var(--sizeZ));
}
body #view #scene #space .cuboid .back,
body #view #scene #space .plane .back {
  width: var(--sizeX);
  height: var(--sizeY);
}
body #view #scene #space .cuboid.shaded > .front, body #view #scene #space .cuboid.shaded > .back,
body #view #scene #space .plane.shaded > .front,
body #view #scene #space .plane.shaded > .back {
  filter: brightness(0.9);
}
body #view #scene #space .cuboid.shaded > .left, body #view #scene #space .cuboid.shaded > .right,
body #view #scene #space .plane.shaded > .left,
body #view #scene #space .plane.shaded > .right {
  filter: brightness(0.8);
}
body #view #scene #space .cuboid.shaded > .top, body #view #scene #space .cuboid.shaded > .bottom,
body #view #scene #space .plane.shaded > .top,
body #view #scene #space .plane.shaded > .bottom {
  filter: brightness(0.7);
}
body #view #scene #space .cylinder {
  position: absolute;
  transform: translateX(calc(var(--posX))) translateY(calc(var(--posY) * -1)) translateZ(calc(var(--posZ) + var(--radius))) rotateX(var(--rotX)) rotateY(var(--rotY)) rotateZ(var(--rotZ));
  height: var(--height);
  width: var(--diameter);
}
body #view #scene #space .cylinder.test > .cylinder_face {
  border: solid 1px black;
  background: linear-gradient(#f005, #00f5);
}
body #view #scene #space .cylinder.color > * {
  background-color: currentColor;
}
body #view #scene #space .cylinder > .cylinder_face {
  height: var(--height);
  width: var(--faceWidth);
  transform: translateX(calc(var(--radius) - var(--faceWidth) / 2)) rotateY(calc(var(--pos) * (360deg / var(--detailLevel)))) translateZ(var(--dist));
  transform-origin: center top;
}
body #view #scene #space .cone {
  position: absolute;
  transform: translateX(calc(var(--posX))) translateY(calc(var(--posY) * -1)) translateZ(calc(var(--posZ) + var(--radius))) rotateX(var(--rotX)) rotateY(var(--rotY)) rotateZ(var(--rotZ));
  height: var(--height);
  width: var(--diameter);
}
body #view #scene #space .cone.test > .cone_face {
  border: solid 1px black;
  background: linear-gradient(#f005, #00f5);
}
body #view #scene #space .cone > .cone_face {
  height: var(--faceHeight);
  width: var(--faceWidth);
  transform: translateX(calc(var(--radius) - var(--faceWidth) / 2)) rotateY(calc(var(--pos) * (360deg / var(--detailLevel)))) translateZ(var(--dist)) rotateX(var(--coneAngle));
  transform-origin: center bottom;
  -webkit-clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
          clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
body #view #scene #space .cone.shaded > *:first-child, body #view #scene #space .cone.shaded > *:nth-child(odd) {
  filter: brightness(0.8);
}
body #view #scene #space .cone.shaded > *:nth-child(even) {
  filter: brightness(0.9);
}
body #view #scene #space .cone.color > * {
  background-color: currentColor;
}
body #view #scene #space .cone.overflow > * {
  -webkit-clip-path: polygon(50% -2px, -2px calc(100% + 1px), calc(100% + 1px) calc(100% + 1px));
          clip-path: polygon(50% -2px, -2px calc(100% + 1px), calc(100% + 1px) calc(100% + 1px));
  box-shadow: 0 0 0 1px currentColor;
}

#floor .rocks > * {
  color: #666;
}
#floor .rocks > :not(.bottom, .top) {
  background-image: linear-gradient(currentColor calc(100% - 2em), #0000);
  background-color: unset !important;
  -webkit-clip-path: polygon(-10% -10%, 110% -10%, 110% calc(100% - 2em), 100% calc(100% - 2em), 100% 100%, 0% 100%, 0% calc(100% - 2em), -10% calc(100% - 2em));
          clip-path: polygon(-10% -10%, 110% -10%, 110% calc(100% - 2em), 100% calc(100% - 2em), 100% 100%, 0% 100%, 0% calc(100% - 2em), -10% calc(100% - 2em));
}

.wizzo .hair,
.wizzo .beard {
  color: #462413;
}
.wizzo .hair.contrast,
.wizzo .beard.contrast {
  color: #381d0f;
}
.wizzo .skin > * {
  color: #b37465;
}
.wizzo .hat > *,
.wizzo .coat > * {
  color: #8f3838;
}
.wizzo .pants > * {
  color: #642b2b;
}
.wizzo .staff.shaft {
  color: #4c2415;
}
.wizzo .staff.shaft > *::before {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  left: -1px;
  right: -1px;
  background: top left/0.2em 100em var(--noise);
}
.wizzo .staff.metal > * {
  background-image: radial-gradient(#ddd, #888);
}
.wizzo .staff.crimps > * {
  background-image: radial-gradient(#ddd, #888);
}
.wizzo .staff.crimps > *:not(.top, .bottom) {
  background-image: linear-gradient(90deg, #888, #ddd, #888);
}
.wizzo .crystal > * {
  color: #f07013ab;
  background-image.........完整代码请登录后点击上方下载按钮下载查看

网友评论0