CSS 动画生成器

下一个

从头编写 @keyframes 代码十分繁琐:您需要选择百分比、猜测属性值、点击刷新、观察效果并进行调整。此生成器提供六种现成的动画(淡入淡出、向上滑动、弹跳、旋转、脉冲和抖动),并允许您设置动画名称、时长、缓动、迭代次数和方向。结果会实时播放,满意后即可复制生成的 @keyframes 块及简写属性 animation

如何创建 CSS 动画

  1. 1

    选择预设

    从六种内置动画中选择一种:淡入淡出、向上滑动、弹跳、旋转、脉冲或抖动。

  2. 2

    为动画命名

    为关键帧指定有效的 CSS 标识符,例如 `cardIn` 或 `fadeIn`。`animation` 简写中会使用相同的名称。

  3. 3

    设置时间与重复

    以秒为单位的时长、缓动(ease、ease-in、ease-out、ease-in-out、linear 或 spring)、迭代次数(1、2、3 或 infinite)和方向(normal、reverse、alternate 或 alternate-reverse)。

  4. 4

    复制 CSS

    生成的 `@keyframes` 规则和 `animation:` 简写形式已准备就绪,可直接粘贴到您的样式表中。

动画结构

@keyframes slide-in {
  0%   { transform: translateX(-100%); opacity: 0; }
  60%  { transform: translateX(10%);   opacity: 1; }
  100% { transform: translateX(0);     opacity: 1; }
}

.card {
  animation: slide-in 400ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

简写形式中的八个属性:animation-name duration timing-function delay iteration-count direction fill-mode play-state

缓动选项

此生成器提供六种缓动函数:

缓动 cubic-bezier() 手感
linear 不适用 匀速
ease-in 0.42, 0, 1, 1 缓慢开始,快速结束
ease-out 0, 0, 0.58, 1 快速开始,缓慢结束
ease-in-out 0.42, 0, 0.58, 1 慢-快-慢
ease(默认) 0.25, 0.1, 0.25, 1 柔和的默认效果
spring 0.68, -0.55, 0.27, 1.55 越过终点后回落归位

为正确的属性添加动画

浏览器可以对任意属性进行动画处理,但只有少数属性能在 GPU 上流畅运行而不会触发重排或重绘:

低成本(仅合成)transformopacityfilter

高成本(重排/重绘)widthheighttopleftmarginpaddingbackground-color

widthtop 进行每秒六十帧的动画在小尺寸元素上可以实现,但若同时处理大量元素,则会在移动设备上卡顿。对于复杂运动,始终优先使用 transform: translate(...) 而非 top / left;对于宽度/高度的动画,则应选用 transform: scale(...)

will-change:应谨慎使用

提示浏览器预先分配合成层有助于提升渲染流畅度:

.card { will-change: transform; }

但它会占用内存。应在动画触发前立即应用,并在完成后移除。在多个元素上永久设置 will-change: transform 可能弊大于利。

减少动态效果

部分用户对动态效果敏感,会在操作系统中设置偏好:

@media (prefers-reduced-motion: reduce) {
  .card {
    animation: none;
  }
}

请尊重这一设置。作为替代方案,提供即时的状态变化或非常轻微的淡入淡出效果。

常见问题

CSS 适合简单、声明式的一次性动画效果;Web Animations API(element.animate())则支持基于 JavaScript 的定时控制、动态关键帧以及暂停与播放控制。两者均运行于合成器上,均不具备固有的速度优势。

这种情况几乎总是因为您设置的是触发布局变化的属性(如宽度、顶部位置或边距),而非 transform。切换为 translate()scale() 后,画面卡顿问题通常会消失。

可以,animation: a 1s, b 1s 1s, c 1s 2s; 可通过交错延迟顺序播放三个动画。此生成器只输出单个动画,因此额外的条目请自行添加到简写形式中。如需更复杂的编排效果,可使用 Web Animations API 或 GSAP 等库。

该设置使元素在动画开始前(延迟期间)进入 from 状态,并在动画结束后保持 to 状态。若未启用 both,元素将在动画结束时恢复至动画前的样式。生成器会保持简写形式精简,如有需要请自行补充填充模式。

相关工具