纯css实现方块圆动画效果

代码语言:html

所属分类:动画

代码描述:纯css实现方块圆动画效果

代码标签: 方块 动画 效果

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

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<style>
  body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
                Helvetica, Arial, Ubuntu, sans-serif,
                "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  }

[data-whatintent='mouse'] *:focus,
[data-whatintent='touch'] *:focus {
  outline: none;
}

</style>
<style>
:root {
  --cube-size: 30vmax;
  --light-hue: 260deg;
  --light-saturation: 50%;
  --light-power: 50%;
  --faces-transparency: 50%;
}


.Cube {
  --cube-half: calc(var(--cube-size) / 2);
  --cube-z: calc(var(--cube-half) * -1);
  --light: var(--light-hue) var(--light-saturation) calc(var(--light-power) + 20%);
  --surface: var(--light-hue) var(--light-saturation) var(--light-power);
  
  width: var(--cube-size);
  height: var(--cube-size);
  position: relative;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transform: translateZ(var(--cube-z));
          transform: translateZ(var(--cube-z));
  -webkit-animation: rotation 60s infinite linear;
          animation: rotation 60s infinite linear;
  -webkit-animation-fill-mode: forwards;
          animation-fill-mode: forwards
}


.Cube::before,
  .Cube::after {
    content: '';
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    -webkit-animation: move 1s infinite ease-in-out alternate;
            animation: move 1s infinite ease-in-out alternate;
    background: radial-gradient(
      circle at center,
      white,
      hsl(var(--surface))
    );
  }


.Cube::before {
    --from-z: -3vmax;
    --to-z: 6vmax;
    -webkit-mask-image: radial-gradient(
      transparent 0%, transparent 40%,
      black 40.1%, black 60%,
      transparent 60.1% 
    );
            mask-image: radial-gradient(
      transparent 0%, transparent 40%,
      black 40.1%, black 60%,
      transparent 60.1% 
    )
  }


.Cube::after {
   --from-z: 6vmax;
    --to-z: -3vmax;
    -webkit-mask-image: radial-gradient(
      black 0, black 10%,
      transparent 10.1%, transparent 20%,
      black 20.1%, black 30%,
      transparent 30.1%
    );
            mask-image: radial-gradient(
      black 0, black 10%,
      transparent 10.1%, transparent 20%,
      black 20.1%, black 30%,
      transparent 30.1%
    )
  }


.Face { 
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backdrop-filter: blur(2px);
  box-shadow: inset 0 0 3vmax -2vmax hsl(0deg 0% 100% / max(50%, var(--light-saturation)));
  background-image: linear-gradient(
    45deg,
    hsl(var(--surface)),
    hsl(var(--light) / var(--faces-transparency))
  );
}


/* Position each face to the correct side */
[front]  { -webkit-transform: rotateY(0) translateZ(var(--cube-half)); transform: rotateY(0) translateZ(var(--cube-half)); }
[right]  { -webkit-transform: rotateY(90deg) translateZ(var(--cube-half)); transform: rotateY(90deg) translateZ(var(--cube-half)); }
[back]   { -webkit-transform: rotateY(180deg) translateZ(var(--cube-half)); transform: rotateY(180deg) translateZ(var(--cube-half)); }
[left]   { -webkit-transform: rotateY(-90deg) translateZ(var(--cube-half)); transform: rotateY(-90deg) tr.........完整代码请登录后点击上方下载按钮下载查看

网友评论0