div+css实现链条打结动画效果代码

代码语言:html

所属分类:动画

代码描述:div+css实现链条打结动画效果代码

代码标签: div css 链条 打结 动画

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

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

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

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

body {
  background-color: #111;
  min-height: 100vh;
  display: grid;
  place-items: center;
}

.container {
  width: 40em;
  height: 30em;
  background-color: #000;
  outline: 1px solid #fff;
  display: grid;
  place-items: center;
  perspective: 800px;
  overflow: hidden;

  *:not(:empty) {
    transform-style: preserve-3d;
  }
}

.scene {
  --duration: 12s;
  
  position: relative;
  -webkit-animation: scene calc(var(--duration) * 3) linear infinite;
          animation: scene calc(var(--duration) * 3) linear infinite;
  
}

@-webkit-keyframes scene {
  from { transform: rotateZ(-30deg) rotateY(30deg) rotateX(0deg); }
  to { transform: rotateZ(-30deg) rotateY(30deg) rotateX(360deg); }
}

@keyframes scene {
  from { transform: rotateZ(-30deg) rotateY(30deg) rotateX(0deg); }
  to { transform: rotateZ(-30deg) rotateY(30deg) rotateX(360deg); }
}

.link {
  --linkDelay: calc(var(--duration) / -5 * var(--l));
  
  position: absolute;
  inset: -1em -6em;
  transform-origin: 50% -2em;
  -webkit-animation:
    linkMove var(--duration) var(--linkDelay) ease-out infinite,
    linkRotate var(--duration) var(--linkDelay) linear infinite;
          animation:
    linkMove var(--duration) var(--linkDelay) ease-out infinite,
    linkRotate var(--duration) var(--linkDelay) linear infinite;
  
  div {
    position: absolute;
    width: 2em; height: 100%;
  }
  
  .front, .front div {
    --_delay: calc(var(--linkDelay) - (var(--duration) / 96 * var(--d, 0)));
    
    left: 100%;
    transform-origin: bottom left;
    -webkit-animation: front var(--duration) var(--_delay) ease-in-out infinite;
            animation: front var(--duration) var(--_delay) ease-in-out infinite;
  }
  
  .back, .back div {
    right: 100%;
    transform-origin: bottom right;
    -webkit-animation: back var(--duration) var(--linkDelay) ease-in-out infinite;
            animation: back var(--duration) var(--linkDelay) ease-in-out infinite;
  }
    
  .back .last {
    width: 10em;
  }
  
  i {
    position: absolute;
    inset: 0;
    background-color: hsl(calc(var(--l) * 72) 100% var(--light, 80%));
    background-image:
      linear-gradient(#0007, 5%, #0000),
      linear-gradient(0deg, #0007, 5%, #0000);

    &:nth-child(1) { transform: translateZ(1em); }
    &:nth-child(2) { transform: rotateX(90deg) translateZ(1em); --light: 70%; }
    &:nth-child(3) { transform: rotateX(180deg) translateZ(1em); }
    &:nth-child(4) { transform: rotateX(270deg) translateZ(1em); --light: 82%; }
  }
}

@-webkit-keyframes linkMove {
  0% { translate: -50em 2.5em; }
  20% { translate: 0em 2.5em; -webkit-animation-timing-function: linear; animation-timing-function: linear; }
  100% { translate: 50em 2.5em; }
}

@keyframes linkMove {
  0% { translate: -50em 2.5em; }
  20% { translate: 0em 2.5em; -webkit-animation-timing-function: linear; animation-timing-function: linear; }
  100% { translate: 50em 2.5em; }
}

@-webkit-keyframes linkRotate {
  from { rotate: x 0deg; }
  to { rotate: x 360deg; }
}

@keyframes linkRotate {
  from { rotate: x 0deg; }
  to { rotate: x 360deg; }
}

@-webkit-keyframes front {
  0%, 15% { rotate: 0deg; }
  20%, 100% { rotate: -30deg; }
}

@keyframes front {
  0%, 15% { rotate: 0deg; }
  20%, 100% { rotate: -30deg; }
}

@-webkit-keyframes back {
  0%, 10% { rotate: 0deg; }
  30%, 100% { rotate: 30deg; }
}

@keyframes back {
  0%, 10% { rotate: 0deg; }
  30%, 100% { rotate: 30deg; }
}
</style>


  
  
</head>

<body translate="no">
  <div class="container">
  <div class="scene">
    <div class="link" style="--l: 0;">
      <i></i><i></i><i></i><i></i>
      <div class="front">
        <i></i><i></i><i></i><i></i>
        <div style="--d: 1;">
          <i></i><i></i><i></i><i></i>
          <div style="--d: 2;">
            <i></i><i></i><i></i><i></i>
            <div style="--d: 3;">
              <i></i><i></i><i></i><i></i>
              <div style="--d: 4;">
                <i></i><i></i><i></i><i></i>
                <div style="--d: 5;">
                  <i></i><i></i><i></i><i></i>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="back">
        <i></i><i></i><i></i><i></i>
        <div>
          <i></i><i></i><i></i><i></i>
          <div>
            <i></i><i></i><i></i><i></i>
            <div>
              <i></i><i></i><i></i><i></i>
              <div>
                <i></i><i></i><i></i><i></i>
                <div class="last">
                  <i></i><i></i><i></i><i></i>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="link" style="--l: 1;">
      <i></i><i></i><i></i><i></i>
      <div class="front">
        <i></i><i></i><i></i><i></i>
        <div style="--d: 1;">
          <i></i><i></i><i></i><i></i>
          <div style="--d: 2;">
            <i></i><i></i><i></i><i></i>
            <div style="--d: 3;">
              <i></i><i></i><i></i><i></i>
              <div style="--d: 4;">
                <i></i><i></i><i></i><i></i>
                <div style="--d: 5;">
                  <i></i><i></i><i></i><i></i>
                </div>
              </div>
            </div>
          </div>
        </di.........完整代码请登录后点击上方下载按钮下载查看

网友评论0