魔法棒动画效果

代码语言: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