Using CSS Custom Properties for Animation: ”-sd-animation: sd-fadeIn; –sd-duration: 0ms; –sd-easing: ease-in;”
Custom properties (CSS variables) make animation systems flexible and maintainable. The declaration
-sd-animation: sd-fadeIn;–sd-duration: 0ms;–sd-easing: ease-in;
appears to be part of a design system or component library that uses a prefixed custom property (-sd-animation) to select a named animation and additional properties to parameterize it. Below is a concise guide to what these properties do, how to implement them, and best practices.
What these properties mean
- -sd-animation: sd-fadeIn — selects a named animation (likely defined elsewhere as keyframes for “sd-fadeIn”). The vendor-like prefix (-sd-) suggests this is part of a scoped design system.
- –sd-duration: 0ms — sets the animation duration. A value of 0ms disables visible animation (instant change).
- –sd-easing: ease-in — sets the timing function that controls animation acceleration.
How the system likely works
- Keyframes: Somewhere in the stylesheet there’s a keyframes rule for sd-fadeIn, e.g.:
@keyframes sd-fadeIn {from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); }}
- Utility or component rule: A rule reads the -sd-animation custom property and applies animation properties using the parameter variables:
.element { animation-name: var(-sd-animation); animation-duration: var(–sd-duration, 200ms); animation-timing-function: var(–sd-easing, ease); animation-fill-mode: both;}
- Overrides: Components or consumers override variables to alter behavior per instance.
Practical examples
- Disable animation temporarily:
.card { –sd-duration: 0ms; }
- Faster fade-in with a different easing:
.toast { -sd-animation: sd-fadeIn; –sd-duration: 150ms; –sd-easing: cubic-bezier(.2,.9,.3,1);}
Accessibility considerations
- Respect prefers-reduced-motion:
@media (prefers-reduced-motion: reduce) { .element { –sd-duration: 0ms; }}
- Avoid zero-duration for content that benefits from motion cues; use reduced motion only when requested.
Best practices
- Use clear, consistent variable names and defaults.
- Provide sensible fallbacks when reading variables.
- Document available named animations and accepted units/values.
- Keep keyframes short and performant (avoid heavy paint/layout changes).
Conclusion Using prefixed CSS custom properties to select animations and parameterize duration/easing provides a powerful, composable animation API for components. The example values shown—sd-fadeIn, 0ms, ease-in—illustrate selecting an animation, disabling its motion, and specifying easing. Implement sensible defaults and respect reduced-motion preferences to balance polish with accessibility.
Leave a Reply