返回组件库
脉冲加载
复刻来源stripe.com
React · Vue3加载指示ReactVue3CSS 原生
三点错峰缩放,表达持续进行中的轻量等待状态。
业务项目无源码 → 我们复刻实现,自动适配 React,复制代码拿去即可使用。
演示预览实时时长 1x
状态呼吸与脉冲波浪
播放速度已适配 prefers-reduced-motion
Spinner.jsx
/**
* OmniMotion — 脉冲加载 / Spinner (React 18+ · 纯 CSS 版本)
* 复刻来源: stripe.com — 三点错峰缩放
* 用法: <Spinner variant="pulse" dots={3} />
*/
export default function Spinner({ variant = "pulse", dots = 3 }) {
return (
<span className="mk-pulse" role="status" aria-label="加载中">
{Array.from({ length: dots }).map((_, i) => (
<span key={i} className="mk-pulse__dot" style={{ animationDelay: i * 160 + "ms" }} />
))}
</span>
);
}
/* 样式(可直接放入全局 CSS)
.mk-pulse { display: inline-flex; align-items: center; gap: 10px; }
.mk-pulse__dot {
width: 12px; height: 12px; border-radius: 999px;
background: var(--mk-primary-quiet);
animation: mk-pulse 900ms cubic-bezier(0.2, 0.8, 0.2, 1) infinite;
}
@keyframes mk-pulse {
0%, 100% { transform: scale(0.6); opacity: 0.35; }
50% { transform: scale(1.15); opacity: 1; }
}
*/属性 · Props
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| variant | "pulse" | "pulse" | 加载样式,预留扩展位 |
| dots | number | 3 | 圆点数量 |
<Spinner variant="pulse" dots={3} />