魔法棒动画效果
代码语言:html
所属分类:粒子
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Never-ending CSS Sparkler ⚡️🥳</title> <style> *, *:after, *:before { box-sizing: border-box; } :root { --bg: #04050d; --glow: rgba(246,213,143,0.5); --sparkler-top: #4f4139; --sparkler-bottom: #333; --spark: #fff; } body { min-height: 100vh; background: var(--bg); cursor: none; display: flex; align-items: center; justify-content: center; touch-action: none; overflow: hidden; } span { position: absolute; border: 2px solid #008000; border-radius: 100%; opacity: 0.1; width: calc((100 / 3) * 1vw); height: 50vh; z-index: 3; } span:nth-of-type(1) { top: 0; left: 0; } span:nth-of-type(1):hover ~ .sparkler { --glow: rgba(134,226,213,0.5); } span:nth-of-type(1):hover ~ .sparkler .sparkler__spark { box-shadow: 0 0 20px 4px var(--shadow-2); } span:nth-of-type(2) { bottom: 0; right: 0; } span:nth-of-type(2):hover ~ .sparkler { --glow: rgba(213,184,255,0.5); } span:nth-of-type(2):hover ~ .sparkler .sparkler__spark { box-shadow: 0 0 20px 4px var(--shadow-3); } span:nth-of-type(3) { bottom: 0; left: 0; } span:nth-of-type(3):hover ~ .sparkler { --glow: rgba(236,100,75,0.5); } span:nth-of-type(3):hover ~ .sparkler .sparkler__spark { box-shadow: 0 0 20px 4px var(--shadow-4); } span:nth-of-type(4) { top: 0; right: 0; } span:nth-of-type(4):hover ~ .sparkler { --glow: rgba(82,179,217,0.5); } span:nth-of-type(4):hover ~ .sparkler .sparkler__spark { box-shadow: 0 0 20px 4px var(--shadow-5); } span:nth-of-type(5), span:nth-of-type(6) { left: 0; right: 0; height: 25vh; width: 100vw; } span:nth-of-type(5):hover ~ .sparkler .sparkler__spark, span:nth-of-type(6):hover ~ .sparkler .sparkler__spark { box-shadow: 0 0 20px 4px var(--shadow-6); } span:nth-of-type(5) { top: 0; } span:nth-of-type(6) { bottom: 0; } .sparkler { position: absolute; border-radius: 100%; left: calc(var(--x) * 1px); top: calc(var(--y) * 1px); box-shadow: 0 0 25px 25px var(--glow); } .sparkler:after, .sparkler:before { content: ''; height: 100px; width: 5px; background: var(--sparkler-top); position: absolute; top: 100%; left: 50%; border-radius: 2px; -webkit-transform: translate(-50%, 0) rotate(-40deg); transform: translate(-50%, 0) rotate(-40deg); -webkit-transform-origin: top center; transform-origin: top center; } .sparkler:before { height: 160px; width: 2px; background: var(--sparkler-bottom); } .sparkler__spark { height: 5px; position: absolute; width: 5px; box-shadow: 0 0 20px 4px var(--shadow); background: var(--spark); border-radius: 100%; -webkit-transform: rotate(calc(var(--rotation) * 1deg)) translate(0, 0); transform: rotate(calc(var(--rotation) * 1deg)) translate(0, 0); -webkit-animation: spark calc(var(--speed) * 1s) calc(var(--delay) * -1s) infinite ease; animation: spark calc(var(--speed) * 1s) calc(var(--delay) * -1s) infinite ease; z-index: 2; } @-webkit-keyframes spark { to { opacity: 0; -webkit-transform: rotate(calc(var(--rotation) * 1deg)) translate(0, calc(var(--travel) * 1px)); transform: rotate(calc(var(--rotation) * 1deg)) translate(0, calc(var(--travel) * 1px)); } } @keyframes spark { to { opacity: 0; -webkit-transform: rotate(calc(var(--rotation) * 1deg)) translate(0, calc(var(--travel) * 1px.........完整代码请登录后点击上方下载按钮下载查看
网友评论0