<p>animate-pulse 延迟需配合 delay- 类(如 delay-300),二者正交共存;Tailwind 默认仅生成 delay-75 至 delay-1000 的整百/七十五值,delay-500 需手动配置或改用支持值。</p>
delay- 类很多人试过 animate-pulse delay-500 发现没效果——不是写法错,是 Tailwind 默认不生成带延迟的 delay- 工具类。它只提供基础动画类(如 animate-pulse),延迟类需显式启用或按需生成。
真正起作用的是独立的 delay- 类,比如 delay-75、delay-1000,它们控制的是整个动画的启动时机,和 animate-pulse 是正交关系。
delay- 类必须和 animate- 类同时存在才生效,单独写 delay-300 没任何效果delay-75 到 delay-1000 的整百/整七十五值(如 75, 100, 150, 200…1000),不包括 delay-500ms 这种带单位写法delay-500,得确认它在 theme.extend.transitionDelay 或 plugins 中已定义,否则编译后 CSS 里压根没这条规则最直接的方式:组合使用 animate-pulse 和 delay-300,前提是你的 Tailwind 配置支持该延迟值。
检查方式很简单:打开编译后的 CSS 文件,搜 delay-300。如果没找到,说明配置未覆盖这个值。
立即学习“前端免费学习笔记(深入)”;
delay-300 是存在的(属于默认支持的整百序列)jit 模式且未启用 purge 守护,开发时能“热补”类名,但构建时仍依赖配置是否包含该值class="animate-pulse delay-300" —— 顺序无关,两个类都得有animate-pulse 固定是 2s 循环,不可通过 Tailwind 类调整)别混淆:Tailwind 的 delay-300 编译出来就是 transition-delay: 300ms,但它只对 transition 生效;而 animate-pulse 是 @keyframes 动画,它的延迟靠的是 animation-delay。
关键点在于:Tailwind 的 delay- 类,**对 CSS 动画(@keyframes)也生效**,不是只给 transition 用的。这是它和手写 CSS 的一个隐含一致设计。
delay-300 → 编译为 animation-delay: 300ms; transition-delay: 300ms;
animate-pulse 的首次播放,不需要额外写 style="animation-delay: 300ms"
@keyframes 动画,且没配 animation- 相关工具类,delay- 依然管用——只要动画是用 animation 触发的最常见原因:你的 Tailwind 配置没声明 500 这个延迟值,或者用了 purge 且没在代码中显式引用过 delay-500。
尤其在旧版(v2.x)或精简配置中,delay 范围可能只到 300 或仅含 75/100/150/200/300。
tailwind.config.js 中扩展 theme.extend.animationDelay,加入 500
delay-400 或 delay-600(看配置支持哪些)style="animation-delay: 500ms",绕过工具类限制(适合调试或一次性场景)delay-500ms,Tailwind 不识别带单位的类名,只认数字后缀延迟值不是“写了就一定有”,它本质是预设的 CSS 值映射,漏了就得补配置——这点容易被当成 bug,其实是设计使然。