Tailwind CSS on GitHub

动画

使元素产生动画的CSS动画功能类。

Default class 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 { 0% { transform: scale(1); opacity: 1; } 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%); animationTimingFunction: cubic-bezier(0.8, 0, 1, 1); } 50% { transform: translateY(0); animationTimingFunction: cubic-bezier(0, 0, 0.2, 1); } }

Spin (旋转)

添加 animate-spin 功能,为加载指示器等元素添加线性旋转动画。

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

Ping

增加 animate-ping 功能,使一个元素像雷达 ping 或水波纹一样缩放和消逝--对通知徽章之类的东西很有用。

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

Pulse (脉冲)

增加 animate-pulse 功能,使元素轻轻地淡入和淡出--这对骨架加载器等有用。

<div class="border border-light-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-light-blue-400 h-12 w-12"></div>
    <div class="flex-1 space-y-4 py-1">
      <div class="h-4 bg-light-blue-400 rounded w-3/4"></div>
      <div class="space-y-2">
        <div class="h-4 bg-light-blue-400 rounded"></div>
        <div class="h-4 bg-light-blue-400 rounded w-5/6"></div>
      </div>
    </div>
  </div>
</div>

Bounce (反弹)

增加 animate-bounce 功能,使元素上下跳动--对 "向下滚动 "指示器有用。

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

Prefers-reduced-motion

您可以使用 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.config.js 文件的 variants 部分启用它们。

// tailwind.config.js
module.exports = {
  // ...
  variants: {
    animation: ['responsive', 'motion-safe', 'motion-reduce']
  }
}

更多内容请参见悬停、焦点和其它状态文档

响应式

要在特定的断点处更改或禁用动画,请在任何现有的动画功能中添加 {screen}: 前缀。例如,使用 md:animate-none 来应用 animate-none 功能,只适用于中等大小的屏幕及以上。

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

关于 Tailwind 的响应式设计功能的更多信息,请查看响应式设计文档。

自定义

动画的本质往往是高度项目化的。我们默认包含的动画最好被认为是有用的例子,我们鼓励您定制您的动画以更好地满足您的需求。

默认情况下,Tailwind 为四个不同的动画示例提供了功能,以及 animate-none 功能。您可以通过自定义主题配置的 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 部分引用这些 keyframes 的名字。

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

主题定制文档中了解更多关于定制默认主题的信息。

变体

默认情况下, 针对 animation 功能类,只生成 responsive 变体。

您可以通过修改您的 tailwind.config.js 文件中的 variants 部分中的 animation 属性来控制为 animation 功能生成哪些变体。

例如,这个配置将生成 hover and focus 变体:

  // tailwind.config.js
  module.exports = {
    variants: {
      extend: {
        // ...
+       animation: ['hover', 'focus'],
      }
    }
  }

禁用

如果您不打算在您的项目中使用 animation 功能,您可以通过在配置文件的 corePlugins 部分将 animation property to false in the corePlugins section of your config file:

  // tailwind.config.js
  module.exports = {
    corePlugins: {
      // ...
+     animation: false,
    }
  }