js+css实现三维可调节参数Pixar点亮的台灯效果代码

代码语言:html

所属分类:三维

代码描述:js+css实现三维可调节参数Pixar点亮的台灯效果代码,使用gui来调节角度、支架伸缩、旋转角度、是否开灯等参数。

代码标签: js+css 三维 调节 参数 Pixar 点亮 台灯

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

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

<head>
  <meta charset="UTF-8">
  

  
  
<style>
*, *::before, *::after {
    padding: 0;
    box-sizing: border-box;
}

body {
  background-color: #111;
  color: #fff;
  min-height: 100vh;
  display: grid;
  place-items: center;
  margin: 0 auto;
  perspective: 800px;
  
  *:not(:empty) {
    transform-style: preserve-3d;
  }
}

.scene {
  --sceneAngleX: -10;
  --sceneAngleY: -30;
  --angle1: 0;
  --angle2: 0;
  --angle3: 40;
  
  --lampColor: #dde;
  --lightColorBase: #ff0;
  --lightColorBeam: #ff0;
  
  position: relative;
  pointer-events: none;
  transform: rotateX(calc(var(--sceneAngleX) * 1deg)) rotateY(calc(var(--sceneAngleY) * 1deg));
  
  * {
    position: absolute;
  }
}

.lamp {
  transform: translate(-6em, 12em);
}

.base {
  transform: translateY(1.8em);
  
  div {
    inset: -0.5em -1.5em;
    background-color: var(--lampColor);
    transform: rotateY(calc(var(--ix) * 30deg)) translateZ(5.5em);
    transform-style: preserve-3d;
    box-shadow: 0 0 0.5em #000 inset;
   
    &::after {
      content: '';
      position: absolute;
      width: 100%; height: 5.7em;
      background-color: var(--lampColor);
      background-image: radial-gradient(circle at 50% 100%, #000a, #0000 100%);
      transform: rotateX(-100deg);
      transform-origin: top;
      -webkit-clip-path: polygon(0 0, 100% 0, 50% 100%);
              clip-path: polygon(0 0, 100% 0, 50% 100%);
      box-shadow: 0 0 0.5em #000 inset;
    }
  }
}

.s {
  left: 0em; bottom: 100%;
  width: 1em;
  transform-origin: bottom;
}

.s1 {
  left: -0.5em; bottom: 0;
  height: 2em;
}

.s2 {
  height: 4em;
  transform: rotateZ(calc(var(--angle1) * 1deg + var(--angle2) * -1deg + 60deg));
}

.s3 {
  height: 8em;
  transform: rotateZ(calc(var(--angle1) * 1deg + var(--angle2) * 1deg - 30deg));
}

.s4 {
  height: 8em;
  transform: rotateZ(calc(var(--angle2) * 2deg - 90deg));
}

.s5 {
  height: 4em;
  transform: rotateZ(calc(var(--angle2) * -2deg + 90deg));
}

.s6 {
  height: 6em;
  transform: rotateZ(calc(var(--angle2) * -3deg + 60deg));
}

.s7 {
  height: 4em;
  transform: rotateZ(calc(var(--angle2) * -2deg + 30deg));
}

.s8 {
  height: 6em;
  transform: rotateZ(calc(var(--angle2) * -1deg + 30deg));
}

.s9 {
  height: 4em;
  transform: rotateZ(calc(var(--angle2) * 1deg + -30deg));
}

.s10 {
  height: 4em;
  transform: rotateZ(calc(var(--angle2) * 1deg + 30deg));
}

.s11 {
  height: 1.5em;
  .........完整代码请登录后点击上方下载按钮下载查看

网友评论0