div+css实现链条打结动画效果代码
代码语言:html
所属分类:动画
代码描述: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