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.

156 lines (129 loc) 3.71 kB
/** * Fire Partikel-Effekt * * Flammenähnliche Partikelbewegungen – erzeugt einen feurigen Effekt. * Dieser Effekt ist performant optimiert und berücksichtigt reduzierte Bewegung. */ @keyframes fire-flame { 0% { opacity: var(--opacity-0); transform: translateX(0%) scale(1); } 25% { opacity: var(--opacity-100); transform: translateY(-40px) scale(1.2); } 50% { transform: translateY(-80px) scale(1.1) rotate(5deg); } 75% { transform: translateY(calc(-1 * var(--spacing-15))) scale(0.9) rotate(-5deg); } 100% { opacity: var(--opacity-0); transform: translateY(-160px) scale(0.5) rotate(0deg); } } @keyframes fire-flame-alt { 0% { opacity: var(--opacity-0); transform: translateX(0%) scale(1); } 25% { opacity: var(--opacity-100); transform: translateY(-30px) scale(1.1) rotate(-5deg); } 50% { transform: translateY(-60px) scale(1.0) rotate(5deg); } 75% { transform: translateY(-90px) scale(0.8) rotate(-2deg); } 100% { opacity: var(--opacity-0); transform: translateY(calc(-1 * var(--spacing-15))) scale(0.5) rotate(0deg); } } @layer components { .fire { overflow: hidden; position: relative; } .fire::before, .fire::after { animation: fire-flame 3s var(--easing-decelerate) infinite; background: var(--fire-color, rgb(255 160 0 / 70%)); border-radius: 5px 50px 20px 20px; bottom: calc(-1 * var(--spacing-1)); content: ''; filter: blur(var(--spacing-1)); height: var(--spacing-7-5); position: absolute; width: var(--spacing-5); } .fire::before { left: calc(50% - var(--spacing-1)); } .fire::after { animation-delay: var(--animation-duration-medium); animation-name: fire-flame-alt; background: var(--fire-color-alt, rgb(255 90 0 / 70%)); left: calc(50% - var(--spacing-1)); } /* Feuer-Varianten */ .fire-sm::before, .fire-sm::after { filter: blur(var(--border-width-thick)); height: var(--spacing-5); width: calc(var(--spacing-1) + var(--border-width-thick)); } .fire-lg::before, .fire-lg::after { filter: var(--filter-blur-xl); height: 50px; width: var(--spacing-7-5); } .fire-slow::before, .fire-slow::after { animation-duration: var(--animation-duration-ultra-slow); } .fire-fast::before, .fire-fast::after { animation-duration: var(--animation-duration-slowest); } /* Farbvarianten */ .fire-red::before { background: var(--fire-red, rgb(255 50 0 / 70%)); } .fire-red::after { background: var(--fire-red-alt, rgb(255 100 0 / 70%)); } .fire-blue::before { background: var(--fire-blue, rgb(0 150 255 / 70%)); } .fire-blue::after { background: var(--fire-blue-alt, rgb(100 200 255 / 70%)); } .fire-green::before { background: var(--fire-green, rgb(0 200 100 / 70%)); } .fire-green::after { background: var(--fire-green-alt, rgb(100 255 150 / 70%)); } .fire-purple::before { background: var(--fire-purple, rgb(150 0 255 / 70%)); } .fire-purple::after { background: var(--fire-purple-alt, rgb(200 100 255 / 70%)); } } /* Reduzierte Bewegung */ @media (prefers-reduced-motion: reduce) { @layer components { .fire::before, .fire::after { animation: var(--animation-none); opacity: var(--opacity-0); } } }