@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.
226 lines (189 loc) • 5.5 kB
CSS
/**
* Partikel-Effekte
*
* Diese Datei enthält verschiedene Partikel-Effekte für moderne UIs.
* Die Effekte sind performant optimiert und berücksichtigen reduzierte Bewegung.
*/
@keyframes particles-float {
0% {
opacity: var(--opacity-0);
transform: translate(0%, 0%);
}
50% {
opacity: var(--opacity-100);
}
100% {
opacity: var(--opacity-0);
transform: translate(100px, -100px);
}
}
@keyframes particles-dots {
0% {
opacity: var(--opacity-0);
transform: translate(0%, 0%);
}
50% {
opacity: var(--opacity-100);
}
100% {
opacity: var(--opacity-0);
transform: translate(-100px, 100px);
}
}
@keyframes particles-lines {
0% {
opacity: var(--opacity-0);
transform: translate(0%, 0%) rotate(0deg);
}
50% {
opacity: var(--opacity-100);
}
100% {
opacity: var(--opacity-0);
transform: translate(100px, 100px) rotate(360deg);
}
}
@layer components {
.particles {
overflow: hidden;
position: relative;
}
.particles::before,
.particles::after {
animation: particles-float 3s infinite;
background: var(--particle-color, rgb(255 255 255 / 50%));
border-radius: 5px;
content: '';
height: var(--spacing-1);
position: absolute;
width: var(--spacing-1);
}
.particles::after {
animation-delay: var(--animation-duration-slower);
}
.particles-sm::before,
.particles-sm::after {
height: var(--border-width-thick);
width: var(--border-width-thick);
}
.particles-lg::before,
.particles-lg::after {
height: var(--spacing-1-5);
width: var(--spacing-1-5);
}
.particles-slow::before,
.particles-slow::after {
animation-duration: var(--animation-duration-ultra-slow);
}
.particles-fast::before,
.particles-fast::after {
animation-duration: var(--animation-duration-slowest);
}
.particles-dots {
overflow: hidden;
position: relative;
}
.particles-dots::before,
.particles-dots::after {
animation: particles-dots 3s infinite;
background: var(--particle-dots-color, rgb(255 255 255 / 50%));
border-radius: 5px;
content: '';
height: var(--spacing-1);
position: absolute;
width: var(--spacing-1);
}
.particles-dots::after {
animation-delay: var(--animation-duration-slower);
}
.particles-dots-sm::before,
.particles-dots-sm::after {
height: var(--border-width-thick);
width: var(--border-width-thick);
}
.particles-dots-lg::before,
.particles-dots-lg::after {
height: var(--spacing-1-5);
width: var(--spacing-1-5);
}
.particles-dots-slow::before,
.particles-dots-slow::after {
animation-duration: var(--animation-duration-ultra-slow);
}
.particles-dots-fast::before,
.particles-dots-fast::after {
animation-duration: var(--animation-duration-slowest);
}
.particles-lines {
overflow: hidden;
position: relative;
}
.particles-lines::before,
.particles-lines::after {
animation: particles-lines 3s infinite;
background: var(--particle-lines-color, rgb(255 255 255 / 50%));
content: '';
height: var(--spacing-5);
position: absolute;
width: var(--border-width-thick);
}
.particles-lines::after {
animation-delay: var(--animation-duration-slower);
}
.particles-lines-sm::before,
.particles-lines-sm::after {
height: var(--spacing-2-5);
width: var(--border-width);
}
.particles-lines-lg::before,
.particles-lines-lg::after {
height: var(--spacing-7-5);
width: var(--spacing-1);
}
.particles-lines-slow::before,
.particles-lines-slow::after {
animation-duration: var(--animation-duration-ultra-slow);
}
.particles-lines-fast::before,
.particles-lines-fast::after {
animation-duration: var(--animation-duration-slowest);
}
.particles-color-primary::before,
.particles-color-primary::after {
background: var(--particle-primary, rgb(59 130 246 / 50%));
}
.particles-color-secondary::before,
.particles-color-secondary::after {
background: var(--particle-secondary, rgb(107 114 128 / 50%));
}
.particles-color-success::before,
.particles-color-success::after {
background: var(--particle-success, rgb(16 185 129 / 50%));
}
.particles-color-error::before,
.particles-color-error::after {
background: var(--particle-error, rgb(239 68 68 / 50%));
}
.particles-color-warning::before,
.particles-color-warning::after {
background: var(--particle-warning, rgb(245 158 11 / 50%));
}
.particles-color-info::before,
.particles-color-info::after {
background: var(--particle-info, rgb(6 182 212 / 50%));
}
}
/* Reduzierte Bewegung */
@media (prefers-reduced-motion: reduce) {
@layer components {
.particles::before,
.particles::after,
.particles-dots::before,
.particles-dots::after,
.particles-lines::before,
.particles-lines::after {
animation: var(--animation-none);
opacity: var(--opacity-0);
}
}
}