Skip to content

Tailwind CSS - 过渡延迟

Tailwind CSS 中的 transition-delay 功能类允许你指定 CSS 过渡效果开始前的延迟。这对于创建复杂的、多阶段动画以及通过精心安排元素变化的时间和方式来提供更精致的用户体验至关重要。

Tailwind 提供了一组 delay-{amount} 类来应用不同的延迟持续时间。这些功能类与过渡和变换功能类协同工作,以创建平滑的动画。

类名CSS 属性
delay-0transition-delay: 0s;
delay-75transition-delay: 75ms;
delay-100transition-delay: 100ms;
delay-150transition-delay: 150ms;
delay-200transition-delay: 200ms;
delay-300transition-delay: 300ms;
delay-500transition-delay: 500ms;
delay-700transition-delay: 700ms;
delay-1000transition-delay: 1000ms;

delay-* 的主要功能是控制过渡的开始时间。当元素状态改变(例如,在 hover 或 focus 上)时,浏览器会在应用过渡中定义的新样式之前等待指定的延迟时间。

  • delay-{amount}:应用特定持续时间的 transition-delay。数字对应毫秒(例如,delay-300 是 300 毫秒)。
  • 可组合性:将 delay-* 与 transition、duration-* 和 ease-* 类结合使用,以完全控制你的动画。

过渡延迟的一个常见用例是创建错位或序列动画,其中多个元素一个接一个地动画。这为导航菜单或定价卡片等 UI 组件增添了动态和专业的感觉。

在此示例中,将鼠标悬停在每个按钮上会触发缩放和颜色变化效果。每个按钮都有不同的延迟,从而创建令人愉悦的级联视觉效果。请注意我们还定义了 transition 属性(transition-all、duration-300、ease-in-out)以确保动画平滑。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tailwind CSS Transition Delay</title>
<!-- For modern development, it's recommended to set up Tailwind CSS with a build tool like Vite or Next.js -->
<!-- 对于现代开发,建议使用 Vite 或 Next.js 等构建工具来设置 Tailwind CSS。 -->
<!-- This Play CDN is for demonstration purposes only. -->
<!-- 此 Play CDN 仅用于演示目的。 -->
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-slate-100 dark:bg-slate-900 flex items-center justify-center min-h-screen">
<div class="p-8 rounded-lg bg-white dark:bg-slate-800 shadow-lg">
<h2 class="text-2xl font-bold text-slate-900 dark:text-white mb-6 text-center">错位过渡延迟</h2>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
<!-- Button 1: 150ms delay -->
<!-- 按钮 1:150 毫秒延迟 -->
<button class="px-6 py-3 font-semibold text-white bg-blue-500 rounded-lg shadow-md transition-all duration-300 ease-in-out
hover:bg-blue-600 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75"
style="transition-delay: 150ms;">
延迟 150 毫秒
</button>
<!-- Button 2: 300ms delay -->
<!-- 按钮 2:300 毫秒延迟 -->
<button class="px-6 py-3 font-semibold text-white bg-green-500 rounded-lg shadow-md transition-all duration-300 ease-in-out
hover:bg-green-600 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-green-400 focus:ring-opacity-75"
style="transition-delay: 300ms;">
延迟 300 毫秒
</button>
<!-- Button 3: 500ms delay -->
<!-- 按钮 3:500 毫秒延迟 -->
<button class="px-6 py-3 font-semibold text-white bg-purple-500 rounded-lg shadow-md transition-all duration-300 ease-in-out
hover:bg-purple-600 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-purple-400 focus:ring-opacity-75"
style="transition-delay: 500ms;">
延迟 500 毫秒
</button>
<!-- Button 4: 700ms delay -->
<!-- 按钮 4:700 毫秒延迟 -->
<button class="px-6 py-3 font-semibold text-white bg-red-500 rounded-lg shadow-md transition-all duration-300 ease-in-out
hover:bg-red-600 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-red-400 focus:ring-opacity-75"
style="transition-delay: 700ms;">
延迟 700 毫秒
</button>
</div>
</div>
</body>
</html>
  • 浏览器开发者工具是你的朋友:使用浏览器开发者工具中的“动画”选项卡来检查和调试你的过渡。你可以可视化延迟、持续时间和缓动曲线,这对于微调效果非常有帮助。
  • 避免过度使用:虽然延迟可以创造出漂亮的动画效果,但过度或长时间的延迟会使你的 UI 感觉迟钝和无响应。请深思熟虑地使用它们来增强而不是阻碍用户体验。
  • 可访问性:确保动画不会删除或遮挡关键信息。用户可以在其操作系统中启用 prefers-reduced-motion 设置,你可以使用 Tailwind 的 motion-reduce 变体来尊重此设置,从而禁用或简化动画。