div+css实现理发店门口的旋转灯自定义调节效果代码

代码语言:html

所属分类:动画

代码描述:div+css实现理发店门口的旋转灯自定义调节效果代码

代码标签: div css实 理发店 门口 旋转灯 自定义 调节

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

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

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


  
  
  
<style>
@import url("https://fonts.googleapis.com/css?family=Raleway:400,400i,700");

*, *::before, *::after {
    padding: 0;
    margin: 0 auto;
    box-sizing: border-box;
}

:root {
  /* consts: */
  --pi: 3.1415926536;
  --sideCount: 36; /* #num on .side elements on DOM */
}

body {
  font-family: Raleway, sans-serif;
  background-color: #111;
  color: #fff;
  min-height: 100vh;
  display: grid;
  place-items: center;
  perspective: 400px;
}

.scene {
  position: relative;
  transform-style: preserve-3d;
  -webkit-animation: sceneRotate 5s infinite linear;
          animation: sceneRotate 5s infinite linear;    
}

@-webkit-keyframes sceneRotate {
  to { transform: rotateY(-360deg); }   
}

@keyframes sceneRotate {
  to { transform: rotateY(-360deg); }   
}

.side {
  /* calcs: */
  --lineHeight: calc(var(--diameter) / 7 * var(--rLineHeight));
  --sideWidth: calc(sin(180deg / var(--sideCount)) * var(--diameter));
  --r: calc((var(--sideWidth) / 2) / tan(180 / var(--sideCount) * var(--pi) / 180));
  --rotateY: calc(360deg * var(--ix) / var(--sideCount));
  --bpy_unit: calc(var(--lineHeight) * -4 * var(--angle) / var(--sideCount));
  --gradientAngle: asin(var(--bpy_unit) / var(--sideWidth));
  --bpy: calc(var(--ix, 0) * tan(var(--gradientAngle)) * var(--sideWidth));

  position: absolute;
  left: calc(var(--sideWidth) * -0.5px); top: -25vh;
  width: calc(var(--sideWidth) * 1px); height: 50vh;
  background-image: repeating-linear-gradient(
    var(--gradientAngle),
    #0009 0 calc(var(--lineHeight) * 1px),
    blue 0 calc(var(--lineHeight) * 2px),
    #0009 0 calc(var(--lineHeight) * 3px),
    red 0 calc(var(--lineHeight) * 4px)
  );
  transform: rotateY(var(--rotateY, 0)) translateZ(calc(var(--r) * 1px));
  background-position: center calc(var(--bpy) * 1px);
  background-size: 100% 1000%;
 }

.inputs {
  position: fixed;
  left: 0; top: 0;
  display: flex;
  flex-direction: column;
  gap: 1em;
  padding: 1em;
  line-height: 1.8;
}

input {
  display: block;
}
</style>


  
  
</head>

<body >
  <div class="scene">
  <div class="side" style="--ix: 0;"></div>  
  <div class="side" style="--ix: 1;"></div>  
  <div class="side" style="--ix: 2;"></div>  
  <div class="side" style="--ix: 3;"></div>  
  <div class="side" style="--ix: 4;"></div>  
  <div class="side" style="--ix: 5;"></div>  
  <div class="side" style="--ix: 6;"></div>  
  <div class="side" style="--ix: 7;"></div>  
  <div class="side" style="--ix: 8;"></div>  
  <div class="side" style="--ix: 9;"></div>  
  <div class="side" style="--ix: 10;"><.........完整代码请登录后点击上方下载按钮下载查看

网友评论0