css实现弹力圈圈动画效果代码
代码语言:html
所属分类:动画
代码描述:css实现弹力圈圈动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
*,
*:after,
*:before {
box-sizing: border-box;
transform-style: preserve-3d;
}
:root {
--border-width: 1.2vmin;
--depth: 20vmin;
--stack-height: 6vmin;
--scene-size: 20vmin;
--ring-size: calc(var(--scene-size) * 0.6);
--plane: radial-gradient(rgba(0,0,0,0.1) 50%, transparent 55%);
--red: #ff4d00;
--green: #38b24d;
--yellow: #ebb624;
--blue: #0f73ff;
--ring-shadow: rgba(0,0,0,0.75);
--hue-one: 320;
--hue-two: 210;
--blur: 0.25vmin;
--speed: 1.2s;
--bg: #fafafa;
--ring-filter: brightness(1) drop-shadow(0 0 0 var(--accent));
}
body {
background: var(--bg);
min-height: 100vh;
display: grid;
place-items: center;
overflow: hidden;
}
.scene {
height: var(--scene-size);
width: var(--scene-size);
-webkit-animation: step-up var(--speed) infinite ease;
animation: step-up var(--speed) infinite ease;
}
.scene__shadow {
position: absolute;
top: 0;
left: 100%;
height: 100%;
width: 100%;
-webkit-animation: fade-in var(--speed) infinite linear;
animation: fade-in var(--speed) infinite linear;
background: var(--plane);
transform: scale(1.15);
filter: blur(var(--blur));
}
.flipper {
height: var(--scene-size);
width: var(--scene-size);
-webkit-animation: flip-flop calc(var(--speed) * 2) infinite steps(1);
animation: flip-flop calc(var(--speed) * 2) infinite steps(1);
}
.plane {
height: 100%;
width: 100%;
transform: translate3d(0, 0, var(--depth));
position: relative;
}
.plane__shadow {
content: '';
height: 100%;
width: 100%;
position: absolute;
top: 50%;
left: 50%;
background: var(--plane);
filter: blur(var(--blur));
transform: translate(-50%, -50%) scale(1.25);
-webkit-animation: fade-out var(--speed) infinite linear;
animation: fade-out var(--speed) infinite linear;
}
.scene__shadow:after,
.plane__shadow:after {
content: '';
height: var(--ring-size);
width: var(--ring-size);
position: absolute;
top: 50%;
left: 50%;
border: var(--border-width) solid var(--ring-shadow);
border-radius: 50%;
transform: translate(-50%, -50%) scale(0.8);
}
.container {
transform: translateZ(100vmin) rotateX(-12deg) rotateY(0deg) rotateX(90deg) translateZ(calc(var(--depth) * -1.5)) rotate(0deg);
-webkit-animation: rotate-scene calc(var(--speed) * 40) infinite linear;
animation: rotate-scene calc(var(--speed) * 40) infinite linear;
}
.ring {
--origin-z: calc(var(--stack-height) - (var(--stack-height) / var(--ring-count)) * var(--index));
--destination-z: calc(((var(--depth) + var(--origin-z)) - (var(--stack-height) - var(--origin-z))) * -1);
--hue: var(--hue-one);
--accent: hsl(var(--hue) 100% 55%);
--ring-filter: brightness(1) drop-shadow(0 0 0 var(--accent));
height: var(--ring-size);
width: var(--ring-size);
border-radius: 50%;
border: var(--border-width) solid var(--accent);
position: absolute;
top: 50%;
left: 50%;
transform-origin: calc(100% + (var(--scene-size) * 0.2)) 50%;
-webkit-animation-name: var(--name);
animation-name: var(--name);
-webkit-animation-duration: var(--speed);
animation-duration: var(--speed);
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-animation-timing-function: cubic-bezier(0.25, 0, 1, 1);
animation-timing-function: cubic-bezier(0.25, 0, 1, 1);
filter: var(--ring-filter);
}
.ring:nth-of-type(1n) {
--accent: var(--red);
}
.ring:nth-of-type(2n) {
--accent: var(--yellow);
}
.ring:nth-of-type(3n) {
--accent: var(--green);
}
.ring:nth-of-type(4n) {
--accent: var(--blue);
}
@-webkit-keyframes slink-0 {
0%, 2.0869565217391304% {
transform: translate3d(-50%, -50%, var(--origin-z)) translateZ(0) rotateY(0deg);
}
38.08695652173913% {
transform: translate3d(-50%, -50%, var(--origin-z)) translateZ(0) rotateY(180deg);
}
50.08695652173913%, 100% {
transform: translate3d(-50%, -50%, var(--origin-z)) translateZ(var(--destination-z)) rotateY(180deg);
}
}
@keyframes slink-0 {
0%, 2.0869565217391304% {
transform: translate3d(-50%, -50%, var(--origin-z)) translateZ(0) rotateY(0deg);
}
38.08695652173913% {
transform: translate3d(-50%, -50%, var(--origin-z)) translateZ(0) rotateY(180deg);
}
50.08695652173913%, 100% {
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0