Patterns for skeleton loaders, shimmer effects, and loading states that match design system aesthetics. Covers skeleton components, shimmer animations, and progressive loading. Use when building polished loading experiences. Triggers on skeleton, loading state, shimmer, placeholder, loading animation.
构建有意图的加载状态,使其与你的设计系统美学相匹配。
tsx
import { cn } from @/lib/utils;
interface SkeletonProps extends React.HTMLAttributes
shimmer?: boolean;
}
export function Skeleton({ className, shimmer = true, ...props }: SkeletonProps) {
return (
css
@keyframes shimmer {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
.animate-shimmer {
animation: shimmer 1.5s ease-in-out infinite;
}
tsx
export function CardSkeleton() {
return (
tsx
export function TableRowSkeleton({ columns = 4 }: { columns?: number }) {
return (
tsx
export function MetricSkeleton() {
return (
使骨架与你的美学风格相匹配:
tsx
// 适用于复古未来主义主题
export function CyberSkeleton({ className, ...props }: SkeletonProps) {
return (
// CSS
@keyframes pulse-glow {
0%, 100% { opacity: 0.4; box-shadow: 0 0 0 0 rgba(var(--tone-cyan), 0); }
50% { opacity: 0.6; box-shadow: 0 0 8px 0 rgba(var(--tone-cyan), 0.1); }
}
在内容加载时逐步显示:
tsx
interface ProgressiveLoadProps {
isLoading: boolean;
skeleton: React.ReactNode;
children: React.ReactNode;
}
export function ProgressiveLoad({
isLoading,
skeleton,
children,
}: ProgressiveLoadProps) {
return (
适用于AI/LLM流式内容:
tsx
export function StreamingIndicator() {
return (
tsx
interface LoadingProgressProps {
progress?: number; // 0-100, undefined = 不确定状态
}
export function LoadingProgress({ progress }: LoadingProgressProps) {
const isIndeterminate = progress === undefined;
return (
// CSS
@keyframes indeterminate {
0% { transform: translateX(-100%); width: 50%; }
100% { transform: translateX(200%); width: 50%; }
}
.animate-indeterminate {
animation: indeterminate 1.5s ease-in-out infinite;
}
tsx
export function GridSkeleton({
count = 6,
columns = 3
}: {
count?: number;
columns?: number;
}) {
return (
tsx
// 基础骨架
// 头像骨架
// 文本行
// 卡片骨架
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 loading-state-patterns-1776420065 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 loading-state-patterns-1776420065 技能
skillhub install loading-state-patterns-1776420065
文件大小: 3.65 KB | 发布时间: 2026-4-17 19:16