1. 动画
  2. 动画

Quick reference

Class
Properties
animate-noneanimation: none;
animate-spinanimation: spin 1s linear infinite; @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
animate-pinganimation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; @keyframes ping { 75%, 100% { transform: scale(2); opacity: 0; } }
animate-pulseanimation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: .5; } }
animate-bounceanimation: bounce 1s infinite; @keyframes bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); } 50% { transform: translateY(0); animation-timing-function: cubic-bezier(0, 0, 0.2, 1); } }

基础用法

旋转

添加 animate-spin 实用程序,为加载指示器等元素添加线性旋转动画。

<button type="button" class="bg-indigo-500 ..." disabled>
  <svg class="animate-spin h-5 w-5 mr-3 ..." viewBox="0 0 24 24">
    <!-- ... -->
  </svg>
  Processing...
</button>

Ping

添加 animate-ping 实用程序可使元素缩放并像雷达波或水波纹一样消失 - 对于通知徽章等很有用。

<span class="relative flex h-3 w-3">
  <span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-sky-400 opacity-75"></span>
  <span class="relative inline-flex rounded-full h-3 w-3 bg-sky-500"></span>
</span>

淡入淡出

添加 animate-pulse 实用程序可使元素逐渐淡入淡出 - 对于骨架加载器之类的东西很有用。

<div class="border border-blue-300 shadow rounded-md p-4 max-w-sm w-full mx-auto">
  <div class="animate-pulse flex space-x-4">
    <div class="rounded-full bg-slate-200 h-10 w-10"></div>
    <div class="flex-1 space-y-6 py-1">
      <div class="h-2 bg-slate-200 rounded"></div>
      <div class="space-y-3">
        <div class="grid grid-cols-3 gap-4">
          <div class="h-2 bg-slate-200 rounded col-span-2"></div>
          <div class="h-2 bg-slate-200 rounded col-span-1"></div>
        </div>
        <div class="h-2 bg-slate-200 rounded"></div>
      </div>
    </div>
  </div>
</div>

弹跳

添加 animate-bounce 实用程序使元素上下弹跳 - 对于向下滚动指示器之类的东西很有用。

<svg class="animate-bounce w-6 h-6 ...">
  <!-- ... -->
</svg>

减少运动

对于用户指定他们喜欢减少运动的情况,您可以使用 motion-safemotion-reduce 变体有条件地应用动画和过渡:

<button type="button" class="bg-indigo-600 ..." disabled>
  <svg class="motion-safe:animate-spin h-5 w-5 mr-3 ..." viewBox="0 0 24 24">
    <!-- ... -->
  </svg>
  Processing
</button>

条件申请

悬停、聚焦和其他状态

Tailwind 允许您使用变体修饰符有条件地在不同状态下应用实用程序类。例如,使用 hover:animate-spin 来仅 在 hover应用 animate-spin.

<div class="hover:animate-spin">
  <!-- ... -->
</div>

详细了解, 请参考 Hover, Focus, & Other States 文档.

断点和媒体查询

您还可以使用变体修饰符来定位媒体查询,例如响应式断点、暗模式、首选减少运动等。例如, 使用 md:animate-spin 来应用 animate-spin 程序,适用于中等屏幕尺寸及以上。

<div class="md:animate-spin">
  <!-- ... -->
</div>

进一步了解,请参考 响应式设计, 暗黑模式 媒体查询.


使用自定义值

定制你的主题

动画本质上往往是高度特定于项目的。我们默认包含的动画最好被视为有用的示例,我们鼓励您自定义动画以更好地满足您的需求。

默认情况下,Tailwind 为四种不同的示例动画提供了实用程序,以及 animate-none 实用程序。您可以通过在 tailwind.config.js 文件中编辑 theme.animationtheme.extend.animation 来自定义这些值。

tailwind.config.js
module.exports = {
  theme: {
    extend: {
      animation: {
        'spin-slow': 'spin 3s linear infinite',
      }
    }
  }
}

要添加新动画 @keyframes,请使用主题配置的 keyframes 部分:

tailwind.config.js
module.exports = {
  theme: {
    extend: {
      keyframes: {
        wiggle: {
          '0%, 100%': { transform: 'rotate(-3deg)' },
          '50%': { transform: 'rotate(3deg)' },
        }
      }
    }
  }
}

然后,您可以在主题配置的 animation 部分中按名称引用这些关键帧:

tailwind.config.js
module.exports = {
  theme: {
    extend: {
      animation: {
        wiggle: 'wiggle 1s ease-in-out infinite',
      }
    }
  }
}

theme customization 文档中了解有关自定义默认主题的更多信息。

任意值

如果您需要使用一次性的 animation值,而该值没有必要包含在主题中,请使用方括号动态生成属性,使用任意值。

<div class="animate-[wiggle_1s_ease-in-out_infinite]">
  <!-- ... -->
</div>

进一步了解,请参考 任意值 文档.