css实现一个弹簧动画效果代码
代码语言:html
所属分类:动画
代码描述: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; perspective: 50em; font-size: 8px; } *:not(:empty) { transform-style: preserve-3d; } .scene { position: relative; } .springOuter { position: absolute; -webkit-animation: springRotate 8s infinite linear; animation: springRotate 8s infinite linear; } @-webkit-keyframes springRotate { 0%, 4% { transform: rotateY(0deg); } 21%, 29% { transform: rotateY(-450deg); } 46%, 54% { transform: rotateY(-900deg); } 71%, 79% { transform: rotateY(-1350deg); } 96%, 100% { transform: rotateY(-1800deg); } } @keyframes springRotate { 0%, 4% { transform: rotateY(0deg); } 21%, 29% { transform: rotateY(-450deg); } 46%, 54% { transform: rotateY(-900deg); } 71%, 79% { transform: rotateY(-1350deg); } 96%, 100% { transform: rotateY(-1800deg); } } .spring { position: absolute; -webkit-animation: springBounce 1s infinite ease-out alternate; animation: springBounce 1s infinite ease-out alternate; --sy1: -4deg; --sy2: -14deg; } @-webkit-keyframes springBounce { 0%, 24% { transform: translateY(26em); } 100% { transform: translateY(-4em); } } @keyframes springBounce { 0%, 24% { transform: translateY(26em); } 100% { transform: translateY(-4em); } } .spring > div { position: absolute; left: -0.5em; bottom: 0; width: 1em; height: 0.75em; background-color: #fff; transform-style: preserve-3d; -webkit-animation: springHeight 2s infinite linear; animation: springHeight 2s infinite linear; } @-webkit-keyframes springHeight { 0%, 100% { transform: translateY(var(--ty1, -50%)) rotateY(var(--ry, 0deg)) translateZ(2.3em) skewY(var(--sy1, 0deg)); } 12%, 88% { transform: translateY(var(--ty2, -50%)) rotateY(var(--ry, 0deg)) translateZ(2.3em) skewY(var(--sy2, 0deg)); } } @keyframes springHeight { 0%, 100% { transform: translateY(var(--ty1, -50%)) rotateY(var(--ry, 0deg)) translateZ(2.3em) skewY(var(--sy1, 0deg)); } 12%, 88% { transform: translateY(var(--ty2, -50%)) rotateY(var(--ry, 0deg)) translateZ(2.3em) skewY(var(--sy2, 0deg)); } } .spring > div:nth-child(1) { --ry: 0deg; --ty1: 0em; --ty2: 0em; } .spring > div:nth-child(2) { --ry: 22.5deg; --ty1: -0.065em; --ty2: -0.2em; } .spring > div:nth-child(3) { --ry: 45deg; --ty1: -0.13em; --ty2: -0.4em; } .spring > div:nth-child(4) { --ry: 67.5deg; --ty1: -0.195em; --ty2: -0.6em; } .spring > div:nth-child(5) { --ry: 90deg; --ty1: -0.26em; --ty2: -0.8em; } .spring > div:nth-child(6) { --ry: 112.5deg; --ty1: -0.325em; --ty2: -1em; } .spring > div:nth-child(7) { --ry: 135deg; --ty1: -0.39em; --ty2: -1.2em; } .spring > div:nth-child(8) { --ry: 157.5deg; --ty1: -0.455em; --ty2: -1.4em; } .spring > div:nth-child(9) { --ry: 180deg; --ty1: -0.52em; .........完整代码请登录后点击上方下载按钮下载查看
网友评论0