-
Notifications
You must be signed in to change notification settings - Fork 444
[FEATURE] CSS-only Skeleton Loading States #7843
Copy link
Copy link
Closed
Labels
GSSoC-26Official GSSoC 2026 issueOfficial GSSoC 2026 issueacceptedContribution approved for integration into EaseMotion CSSContribution approved for integration into EaseMotion CSSanimationAnimation effects, hover interactions, motion ideas, transitionsAnimation effects, hover interactions, motion ideas, transitionsgood first issueGood for newcomersGood for newcomersgssoc:approvedApproved for GSSoC contributionsApproved for GSSoC contributionshelp wantedExtra attention neededExtra attention neededlevel:intermediateRequires moderate project understandingRequires moderate project understandingtype:featureNew functionality or enhancementNew functionality or enhancement
Metadata
Metadata
Labels
GSSoC-26Official GSSoC 2026 issueOfficial GSSoC 2026 issueacceptedContribution approved for integration into EaseMotion CSSContribution approved for integration into EaseMotion CSSanimationAnimation effects, hover interactions, motion ideas, transitionsAnimation effects, hover interactions, motion ideas, transitionsgood first issueGood for newcomersGood for newcomersgssoc:approvedApproved for GSSoC contributionsApproved for GSSoC contributionshelp wantedExtra attention neededExtra attention neededlevel:intermediateRequires moderate project understandingRequires moderate project understandingtype:featureNew functionality or enhancementNew functionality or enhancement
Description
I propose adding a suite of "Skeleton Loading" utility classes. This will allow developers to quickly mock up the layout of their data cards or profiles with animated, pulsating placeholders while waiting for actual data (e.g., from an API) to load.
The implementation will feature two distinct pure CSS animation variants:
Pulse: A soft, breathing opacity change.
Shimmer: A dynamic, sweeping gradient that moves continuously across the elements to simulate active loading.
Why is this useful for EaseMotion CSS?
Modern web applications heavily rely on Skeleton loaders to improve perceived performance during network requests. By providing native .ease-skeleton classes, EaseMotion CSS gives developers a plug-and-play solution to create beautiful loading states that automatically match the framework's existing border-radius and color token systems, without needing external libraries.
HTML Snippet
html
/* Create the sweeping gradient */
background: linear-gradient(
90deg,
var(--ease-color-neutral-200) 25%,
var(--ease-color-neutral-100) 50%,
var(--ease-color-neutral-200) 75%
);
/* Stretch background to allow sweeping */
background-size: 400% 100%;
/* Trigger the sweep animation /
animation: easeSkeletonShimmer 1.5s infinite linear;
}
@Keyframes easeSkeletonShimmer {
0% { background-position: 100% 0; }
100% { background-position: -100% 0; }
}
/ Dark Mode Overrides */
@media (prefers-color-scheme: dark) {
.ease-skeleton {
background-color: var(--ease-color-neutral-700);
}
.ease-skeleton-shimmer .ease-skeleton,
.ease-skeleton.ease-skeleton-shimmer {
background: linear-gradient(
90deg,
var(--ease-color-neutral-700) 25%,
var(--ease-color-neutral-600) 50%,
var(--ease-color-neutral-700) 75%
);
background-size: 400% 100%;
}
}
Visual Reference (optional)
N/A
Checklist
I have read the
CONTRIBUTING.md
document.
I have checked for existing issues proposing the same feature.
I understand that my proposed class names or structure may be modified by the maintainer.