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.

181 lines (153 loc) 4.27 kB
/** * Links Partikel-Effekt * * Partikel, die durch Linien miteinander verbunden sind – erzeugt ein Netz- oder Molekül-Design. * Dieser Effekt ist performant optimiert und berücksichtigt reduzierte Bewegung. */ @keyframes links-node-1 { 0%, 100% { transform: translate(0%, 0%); } 25% { transform: translate(var(--spacing-5), calc(-1 * var(--spacing-2-5))); } 50% { transform: translate(40px, 0%); } 75% { transform: translate(var(--spacing-5), var(--spacing-2-5)); } } @keyframes links-node-2 { 0%, 100% { transform: translate(0%, 0%); } 25% { transform: translate(calc(-1 * var(--spacing-2-5)), var(--spacing-5)); } 50% { transform: translate(0%, 40px); } 75% { transform: translate(var(--spacing-2-5), var(--spacing-5)); } } @keyframes links-node-3 { 0%, 100% { transform: translate(0%, 0%); } 25% { transform: translate(-var(--spacing-5), calc(-1 * var(--spacing-2-5))); } 50% { transform: translate(-40px, 0%); } 75% { transform: translate(calc(-1 * var(--spacing-5)), var(--spacing-2-5)); } } @layer components { .links { min-height: var(--spacing-25); min-width: var(--spacing-25); position: relative; } .links::before, .links::after, .links .node { background: var(--links-node-color, rgb(80 120 255)); border-radius: 5px; content: ''; height: var(--spacing-2); position: absolute; width: var(--spacing-2); } .links::before { animation: links-node-1 8s infinite var(--easing-smooth); left: 3%0%; top: 3%0%; } .links::after { animation: links-node-2 8s infinite var(--easing-smooth); left: 5%0%; top: 5%0%; } .links .node { animation: links-node-3 8s infinite var(--easing-smooth); left: 7%0%; top: 3%0%; } /* Verbindungslinien zwischen den Knoten */ .links { background: linear-gradient( to bottom right, transparent calc(50% - var(--border-width)), var(--links-line-color, rgb(80 120 255 / 0.6)) calc(50%), transparent calc(50% + var(--border-width)) ), linear-gradient( to bottom left, transparent calc(50% - var(--border-width)), var(--links-line-color, rgb(80 120 255 / 0.6)) calc(50%), transparent calc(50% + var(--border-width)) ); background-position: center; background-repeat: no-repeat; background-size: 100% 100; } /* Varianten */ .links-sm::before, .links-sm::after, .links-sm .node { height: var(--spacing-1); width: var(--spacing-1); } .links-lg::before, .links-lg::after, .links-lg .node { height: var(--spacing-1)(--border-width-thick); width: var(--spacing-1)(--border-width-thick); } .links-slow::before, .links-slow::after, .links-slow .node { animation-duration: var(--animation-duration-ultra-slow); } .links-fast::before, .links-fast::after, .links-fast .node { animation-duration: var(--animation-duration-ultra-slow); } /* Farb-Varianten */ .links-blue { --links-node-color: rgb(30 144 255); --links-line-color: rgb(30 144 255 / 0.6); } .links-green { --links-node-color: rgb(46 204 113); --links-line-color: rgb(46 204 113 / 0.6); } .links-purple { --links-node-color: rgb(155 89 182); --links-line-color: rgb(155 89 182 / 0.6); } .links-teal { --links-node-color: rgb(26 188 156); --links-line-color: rgb(26 188 156 / 0.6); } .links-orange { --links-node-color: rgb(230 126 34); --links-line-color: rgb(230 126 34 / 0.6); } } /* Reduzierte Bewegung */ @media (prefers-reduced-motion: reduce) { @layer components { .links::before, .links::after, .links .node { animation: var(--animation-none); } } }