div+css实现一个3D道路围栏升起落下动画效果代码

代码语言:html

所属分类:动画

代码描述:div+css实现一个3D道路围栏升起落下动画效果代码

代码标签: div css 3D 道路 围栏 升起 落下 动画

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


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

<head>

  <meta charset="UTF-8">
  

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

body {
  align-items: center;
  background: linear-gradient(33deg, #323b42, #121317);
  display: flex;
  justify-content: center;
  min-height: 100vh;
}

main {
  --unit: 0.2em;
  --error-color: red;
  --error-color-dark: #721e1e;
}

.fence {
  -webkit-animation: fenceAnimation 10s infinite ease-out;
          animation: fenceAnimation 10s infinite ease-out;
  height: calc(100 * var(--unit));
  perspective: calc(250 * var(--unit));
  perspective-origin: 50% 50%;
  position: relative;
  width: calc(100 * var(--unit));
}
.fence__container {
  -webkit-animation: fenceAnimation 10s infinite ease-out;
          animation: fenceAnimation 10s infinite ease-out;
  height: inherit;
  left: 0;
  position: absolute;
  top: 0;
  transform: rotate3d(1, -0.3, 0, -10deg);
  transform-style: preserve-3d;
  width: inherit;
}
.fence__container > * {
  left: 0;
  position: absolute;
  top: 50%;
  transform-style: preserve-3d;
}

.base {
  left: calc(11.43 * var(--unit));
  transform: translate3D(-50%, calc(34.28 * var(--unit)), 0);
}
.base .side--top {
  filter: brightness(1);
}
.base .side--bottom {
  filter: brightness(0);
}
.base .side--right, .base .side--left {
  filter: brightness(0.6);
}
.base .side--front, .base .side--back {
  filter: brightness(0.7);
}

.light {
  -webkit-animation: lightContainer infinite 5s ease-in-out;
          animation: lightContainer infinite 5s ease-in-out;
  left: calc(11.43 * var(--unit));
  transform: translate3D(-50%, calc(-4.29 * var(--unit)), 0);
}
.light::before {
  -webkit-animation: lightShadow 5s ease infinite;
          animation: lightShadow 5s ease infinite;
  content: "";
  height: 0;
  position: absolute;
  width: 0;
  transform: translate(-50%, -50%);
  top: 50%;
  left: 50%;
  box-shadow: 0 0 calc(9.43 * var(--unit)) calc(5.71 * var(--unit)) red, 0 0 calc(1 * var(--unit)) calc(2 * var(--unit)) red;
  transform-style: unset;
}
.light-rotation {
  all: inherit;
  -webkit-animation: lightrotation infinite 5s linear;
          animation: lightrotation infinite 5s linear;
  left: 0;
  position: relative;
}
.light .side {
  background: red;
  filter: blur(1px);
}

.pole {
  left: calc(11.43 * var(--unit));
  transform: translate3D(-50%, 0, 0);
}
.pole .side {
  background: var(--error-color-dark);
  border: calc(1 * var(--unit)) solid #fff;
}
.pole .side--top {
  border: none;
  background: radial-gradient(#d72323, #ff8a8a 80%);
  filter: brightness(1);
}
.pole .side--bottom {
  filter: brightness(0);
}
.pole .side--right, .pole .side--left {
  filter: brightness(0.7);
}
.pole .side--front, .pole .side--back {
  filter: brightness(0.9);
}

.bar {
  -webkit-animation: fallingBar 10s infinite ease-out;
          animation: fallingBar 10s infinite ease-out;
  transform: translate3D(0, calc(4.29 * var(--unit)), 0) rotateZ(-20deg);
  transform-origin: calc(11.43 * var(--unit)) 0;
}
.bar .side--front, .bar .side--back {
  background-image: repeating-linear-gradient(45deg, transparent, transparent calc(5.71 * var(--unit)), #ffffff calc(5.71 * var(--unit)), #ffffff calc(11.42 * var(--unit)));
  background-color: var(--error-color);
}
.bar .side--left {
  background-color: var(--error-color);
}
.bar .side--top {
  filter: brightness(0.95);
}
.bar .side--bottom {
  filter: brightness(0.7);
}

.cube {
 .........完整代码请登录后点击上方下载按钮下载查看

网友评论0