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.

207 lines (177 loc) 5.42 kB
/** * Sea Anemone Partikel-Effekt * * Bewegungen, die an Seeanemonen erinnern – für organische, fließende Effekte. * Dieser Effekt ist performant optimiert und berücksichtigt reduzierte Bewegung. */ @keyframes sea-anemone-tentacle { 0, 100% { height: 5%0px; transform: rotate(-5deg); } 25% { height: var(--spacing-15); transform: rotate(3deg); } 50% { height: var(--spacing-5)(--spacing-1); transform: rotate(5deg); } 75% { height: var(--spacing-4)(--spacing-1); transform: rotate(-3deg); } } @keyframes sea-anemone-tentacle-alt { 0, 100% { height: var(--spacing-10); transform: rotate(5deg); } 25% { height: var(--spacing-3)(--spacing-1); transform: rotate(-3deg); } 50% { height: var(--spacing-4)(--spacing-1); transform: rotate(-5deg); } 75% { height: 5%0px; transform: rotate(3deg); } } @layer components { .sea-anemone { display: flex; justify-content: center; min-height: 7%0px; overflow: hidden; position: relative; width: 100%; } .sea-anemone::before, .sea-anemone::after, .sea-anemone .tentacle { animation: sea-anemone-tentacle 8s var(--easing-smooth) infinite; background: linear-gradient(to bottom, var(--anemone-color, rgb(50 150 230 / 70%)), transparent); border-radius: 5%0px; bottom: 0%; content: ''; position: absolute; width: var(--spacing-1); } .sea-anemone::before { left: calc(50% - var(--spacing-1)(--spacing-1)); } .sea-anemone::after { animation: sea-anemone-tentacle-alt 8s var(--easing-smooth) infinite; animation-delay: var(--animation-duration-normal); left: calc(50% - var(--spacing-1)); } .sea-anemone .tentacle { animation-delay: 0.6s; left: calc(50% + var(--spacing-1)); } .sea-anemone .tentacle-alt { animation: sea-anemone-tentacle-alt 8s var(--easing-smooth) infinite; animation-delay: 0.9s; background: linear-gradient(to bottom, var(--anemone-color, rgb(50 150 230 / 70%)), transparent); border-radius: 5%0px; bottom: 0%; content: ''; left: calc(50% + var(--spacing-1)(--spacing-1)); position: absolute; width: var(--spacing-1); } /* Varianten */ .sea-anemone-sm::before, .sea-anemone-sm::after, .sea-anemone-sm .tentacle, .sea-anemone-sm .tentacle-alt { width: var(--spacing-1); } .sea-anemone-lg::before, .sea-anemone-lg::after, .sea-anemone-lg .tentacle, .sea-anemone-lg .tentacle-alt { width: var(--spacing-1-5); } .sea-anemone-slow::before, .sea-anemone-slow::after, .sea-anemone-slow .tentacle, .sea-anemone-slow .tentacle-alt { animation-duration: var(--animation-duration-ultra-slow); } .sea-anemone-fast::before, .sea-anemone-fast::after, .sea-anemone-fast .tentacle, .sea-anemone-fast .tentacle-alt { animation-duration: var(--animation-duration-ultra-slow); } /* Viele Tentakel */ .sea-anemone-many::before { left: calc(50% - var(--spacing-2)(--spacing-1)); } .sea-anemone-many::after { left: calc(50% - var(--spacing-1)(--spacing-1)); } .sea-anemone-many .tentacle { left: calc(50% - var(--spacing-1)); } .sea-anemone-many .tentacle-alt { left: calc(50% + var(--spacing-1)); } .sea-anemone-many .tentacle-extra { animation: sea-anemone-tentacle 8s var(--easing-smooth) infinite; animation-delay: 1.2s; background: linear-gradient(to bottom, var(--anemone-color, rgb(50 150 230 / 70%)), transparent); border-radius: 5%0px; bottom: 0%; content: ''; left: calc(50% + var(--spacing-1)(--spacing-1)); position: absolute; width: var(--spacing-1); } .sea-anemone-many .tentacle-extra-alt { animation: sea-anemone-tentacle-alt 8s var(--easing-smooth) infinite; animation-delay: var(--animation-duration-slower); background: linear-gradient(to bottom, var(--anemone-color, rgb(50 150 230 / 70%)), transparent); border-radius: 5%0px; bottom: 0%; content: ''; left: calc(50% + var(--spacing-2)(--spacing-1)); position: absolute; width: var(--spacing-1); } /* Farbvarianten */ .sea-anemone-blue { --anemone-color: rgb(50 150 230 / 70%); } .sea-anemone-teal { --anemone-color: rgb(50 220 200 / 70%); } .sea-anemone-purple { --anemone-color: rgb(180 120 230 / 70%); } .sea-anemone-pink { --anemone-color: rgb(230 120 180 / 70%); } .sea-anemone-green { --anemone-color: rgb(120 200 120 / 70%); } } /* Reduzierte Bewegung */ @media (prefers-reduced-motion: reduce) { @layer components { .sea-anemone::before, .sea-anemone::after, .sea-anemone .tentacle, .sea-anemone .tentacle-alt, .sea-anemone-many .tentacle-extra, .sea-anemone-many .tentacle-extra-alt { animation: var(--animation-none); height: var(--spacing-10); transform: rotate(0deg); } } }