@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.
185 lines (148 loc) • 3.59 kB
CSS
/**
* Typing-Effekte
*
* Diese Datei enthält verschiedene Typing-Effekte für moderne UIs.
* Die Effekte sind performant optimiert und berücksichtigen reduzierte Bewegung.
*/
/* Animationen - außerhalb von @layer definieren */
@keyframes typing-cursor {
0, 100% {
opacity: var(--opacity-100);
}
50% {
opacity: var(--opacity-0);
}
}
@keyframes typing-text {
from {
width: 0%;
}
to {
width: 100%;
}
}
@keyframes typing-blink {
0, 100% {
opacity: var(--opacity-100);
}
50% {
opacity: var(--opacity-0);
}
}
/* Komponenten-Styles */
@layer components {
.typing {
display: inline-block;
position: relative;
}
.typing::after {
content: '|';
position: absolute;
right: -0.5em;
}
.typing-sm::after {
font-size: 0.875em;
}
.typing-lg::after {
font-size: 1.25em;
}
.typing-text {
display: inline-block;
overflow: hidden;
white-space: nowrap;
}
.typing-text-sm {
font-size: 0.875em;
}
.typing-text-lg {
font-size: 1.25em;
}
.typing-blink {
display: inline-block;
position: relative;
}
.typing-blink::after {
content: '|';
position: absolute;
right: -0.5em;
}
.typing-blink-sm::after {
font-size: 0.875em;
}
.typing-blink-lg::after {
font-size: 1.25em;
}
.typing-color-primary::after {
color: var(--typing-primary, #3b82f6);
}
.typing-color-secondary::after {
color: var(--typing-secondary, #6b7280);
}
.typing-color-success::after {
color: var(--typing-success, #10b981);
}
.typing-color-error::after {
color: var(--typing-error, #ef4444);
}
.typing-color-warning::after {
color: var(--typing-warning, #f59e0b);
}
.typing-color-info::after {
color: var(--typing-info, #06b6d4);
}
}
/* Animations-Styles */
@layer animations {
.typing::after {
animation: typing-cursor 1s var(--easing-step) infinite;
}
.typing-slow::after {
animation-duration: var(--animation-duration-slower);
}
.typing-fast::after {
animation-duration: var(--animation-duration-medium);
}
.typing-text {
animation: typing-text 3s var(--easing-typewriter);
}
.typing-text-sm {
animation-duration: var(--animation-duration-slowest);
}
.typing-text-lg {
animation-duration: var(--animation-duration-ultra-slow);
}
.typing-text-slow {
animation-duration: var(--animation-duration-ultra-slow);
}
.typing-text-fast {
animation-duration: var(--animation-duration-slowest);
}
.typing-blink::after {
animation: typing-blink 1s var(--easing-step) infinite;
}
.typing-blink-slow::after {
animation-duration: var(--animation-duration-slower);
}
.typing-blink-fast::after {
animation-duration: var(--animation-duration-medium);
}
}
/* Barrierefreiheit - reduzierte Bewegung */
@media (prefers-reduced-motion: reduce) {
@layer animations {
.typing::after,
.typing-text,
.typing-blink::after {
animation: var(--animation-none);
}
}
@layer components {
.typing::after,
.typing-blink::after {
opacity: var(--opacity-100);
}
.typing-text {
width: 100%;
}
}
}