Understanding CSS Custom Properties: -sd-animation, -sd-duration, and -sd-easing
Custom properties (CSS variables) let developers define reusable values and tweak behavior across a site without repeating code. The snippet -sd-animation: sd-fadeIn; –sd-duration: 0ms; –sd-easing: ease-in; shows three such properties used to control an animation system. This article explains what each property likely represents, how to use them effectively, and practical examples for integrating them into a CSS-based animation workflow.
What these properties represent
- -sd-animation: sd-fadeIn;
- Likely a custom variable naming an animation preset or keyframe group (here, “sd-fadeIn” suggests a fade-in effect).
- The leading hyphen indicates a custom vendor-like name; it behaves like any CSS property when read via var().
- –sd-duration: 0ms;
- Sets the duration of the animation. Here it’s zero milliseconds, which effectively disables visible animation and makes state changes instantaneous.
- –sd-easing: ease-in;
- Controls the timing function (animation pacing).
ease-inmakes the animation start slowly and speed up toward the end.
- Controls the timing function (animation pacing).
Why use CSS custom properties for animation control
- Reusability: Define animation parameters once and apply across components.
- Runtime control: Change variables with JS or different CSS states (hover, focus, media queries) to alter animations dynamically.
- Theming: Swap variables per theme to adjust motion without rewriting keyframes.
Example: Implementing a fade-in system
CSS (variables + keyframes):
:root{–sd-duration: 300ms; –sd-easing: ease-out; –sd-animation: sd-fadeIn;}
/* Define keyframes for sd-fadeIn /@keyframes sd-fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); }}
/ Utility class applying the animation via variables */.sd-animated { animation-name: var(–sd-animation); animation-duration: var(–sd-duration); animation-timing-function: var(–sd-easing); animation-fill-mode: both;}
HTML:
<div class=“sd-animated”>Hello, fade-in!</div>
JavaScript (toggle duration for instant state changes):
const el = document.querySelector(’.sd-animated’);// make animation instantel.style.setProperty(’–sd-duration’, ‘0ms’);// restore animatedsetTimeout(()=> el.style.setProperty(’–sd-duration’, ‘300ms’), 1000);
Practical tips
- Avoid zero duration unless you intend no transition; use it for accessibility toggles or when toggling motion-reduced states.
- Respect user preferences: check
@media (prefers-reduced-motion: reduce)and set–sd-duration: 0msthere. - Name variables clearly: using a consistent prefix like
–sd-groups related properties and avoids collisions. - Combine variables to create variants (e.g.,
–sd-duration-fast,–sd-duration-slow) for component-level overrides.
Accessibility and performance
- Long, complex animations can harm performance and usability; prefer simple transforms and opacity for GPU-accelerated animations.
- Honor reduced-motion settings to avoid causing discomfort.
- Use sensible defaults and allow JavaScript to adjust variables only when necessary.
Conclusion
Custom properties like -sd-animation, –sd-duration, and –sd-easing provide a powerful, flexible way to manage animations centrally. They enable consistent, themeable, and accessible motion across a project while keeping styles maintainable. Use clear naming, sensible defaults, and respect user motion preferences to build a robust animation system.
Leave a Reply