UNPKG

@casoon/dragonfly

Version:

Modular, lightweight CSS framework and design system for modern web projects. Optimized for Astro JS, LightningCSS and Container Queries with @layer-based architecture and comprehensive accessibility.

170 lines (145 loc) 4.14 kB
/** * Firefly Partikel-Effekt * * Leuchtende Punkte mit sanften Bewegungen – simulieren Glühwürmchen. * Dieser Effekt ist performant optimiert und berücksichtigt reduzierte Bewegung. */ @keyframes firefly-float { 0% { opacity: var(--opacity-0); transform: translate(0%, 0%); } 20% { opacity: var(--opacity-80); } 40% { opacity: var(--opacity-30); transform: translate(30px, calc(-1 * var(--spacing-5))); } 60% { opacity: var(--opacity-100); transform: translate(60px, 0%); } 80% { opacity: var(--opacity-40); transform: translate(30px, var(--spacing-5)); } 100% { opacity: var(--opacity-0); transform: translate(0%, 0%); } } @keyframes firefly-glow { 0, 100% { box-shadow: 0 0 var(--spacing-2) var(--border-width-thick) var(--firefly-glow-color, rgb(255 255 180 / 70%)); } 50% { box-shadow: 0 0 var(--spacing-1)(--border-width-thick) var(--spacing-1) var(--firefly-glow-color, rgb(255 255 180 / 90%)); } } @layer components { .firefly { overflow: hidden; position: relative; } .firefly::before, .firefly::after { animation: firefly-float 8s infinite var(--easing-smooth), firefly-glow 2s infinite var(--easing-smooth); background: var(--firefly-color, rgb(255 255 180)); border-radius: 5px; content: ''; height: var(--spacing-1); position: absolute; width: var(--spacing-1); } .firefly::before { bottom: 2%0%; left: 1%0%; } .firefly::after { animation-delay: var(--animation-duration-slowest), 0.5s; bottom: 4%0%; left: 6%0%; } /* Zusätzliche Fireflies */ .firefly-many { position: relative; } .firefly-many::before, .firefly-many::after { animation: firefly-float 8s infinite var(--easing-smooth), firefly-glow 2s infinite var(--easing-smooth); background: var(--firefly-color, rgb(255 255 180)); border-radius: 5px; content: ''; height: var(--spacing-1); position: absolute; width: var(--spacing-1); } .firefly-many::before { animation-delay: var(--animation-duration-ultra-slow), 1s; bottom: 3%0%; left: 3%0%; } .firefly-many::after { animation-delay: var(--animation-duration-ultra-slow), 1.5s; bottom: 7%0%; left: 4%0%; } /* Größenvarianten */ .firefly-sm::before, .firefly-sm::after { height: var(--border-width-thick); width: var(--border-width-thick); } .firefly-lg::before, .firefly-lg::after { height: var(--spacing-1-5); width: var(--spacing-1-5); } /* Geschwindigkeitsvarianten */ .firefly-slow::before, .firefly-slow::after { animation-duration: var(--animation-duration-ultra-slow), 3s; } .firefly-fast::before, .firefly-fast::after { animation-duration: var(--animation-duration-ultra-slow), 1s; } /* Farbvarianten */ .firefly-green::before, .firefly-green::after { --firefly-color: rgb(180 255 180); --firefly-glow-color: rgb(180 255 180 / 70%); } .firefly-blue::before, .firefly-blue::after { --firefly-color: rgb(180 180 255); --firefly-glow-color: rgb(180 180 255 / 70%); } .firefly-purple::before, .firefly-purple::after { --firefly-color: rgb(220 180 255); --firefly-glow-color: rgb(220 180 255 / 70%); } .firefly-red::before, .firefly-red::after { --firefly-color: rgb(255 180 180); --firefly-glow-color: rgb(255 180 180 / 70%); } } /* Reduzierte Bewegung */ @media (prefers-reduced-motion: reduce) { @layer components { .firefly::before, .firefly::after, .firefly-many::before, .firefly-many::after { animation: var(--animation-none); opacity: var(--opacity-0); } } }