跳到主要内容

CSS Keyframes 动画生成器

可视化编排 @keyframes:增删关键帧、设 transform/opacity/颜色、实时预览、一键复制可上线 CSS,浏览器本地

  • 本地处理
  • 分类 颜色设计
  • 适合 把视觉想法转成可复用的颜色值。
正在编辑关键帧 · 0%
位置: 0%
变换
平移 X
平移 Y
缩放
旋转
斜切 X
斜切 Y
不透明度: 1
背景色
名称
时长 (ms)
缓动
延迟 (ms)
次数
方向
填充模式

编辑某一帧, 看它跑, 复制 CSS。优先用 transform + opacity, 动画不卡顿。

@keyframes my-animation {
  0% {
    transform: none;
  }
  50% {
    transform: translate(0px, -40px) scale(1.2);
  }
  100% {
    transform: none;
  }
}

.element {
  animation: my-animation 1.5s ease-in-out infinite alternate none;
}

这个工具能做什么

一个可视化编辑 CSS @keyframes 动画的工具。从 0% 到 100% 自由 增删关键帧,每一帧上单独设 transform(平移 / 缩放 / 旋转 / 斜切)、opacity、背景色。动画就跑在编辑器旁边一个真实元素上, 所见即所得:可暂停、可重播、可在时间轴上拖动定格查看某一帧。 动画参数全可调:时长 duration、缓动 timing-function(ease / linear / steps,外加一组 cubic-bezier 预设)、延迟 delay、播放 次数 iteration-count(含 infinite 无限循环)、方向 direction (正放 / 倒放 / 交替)、填充模式 fill-mode(none / forwards / backwards / both)。右侧输出面板给出完整可直接粘贴的代码: @keyframes 规则 + .element { animation: ... } 简写,现代语法、 无冗余前缀。所有配置都写进 URL,"分享链接"打开就是你刚编排好 的那条动画;上次的配置也用 localStorage 记住。100% 浏览器本地: 不上传、不打点、不需要登录。

工具细节

输入
文本 + 数值 + 结构化内容
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制 + 预览
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 14 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
颜色设计 · 设计师
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

CSS Keyframes 动画生成器 适合怎么用

适合在真实界面工作中选色、查色、转色值或整理配色。

适合颜色任务

  • 把视觉想法转成可复用的颜色值。
  • 界面上线前检查对比度和可访问性。
  • 让品牌、设计和前端实现的颜色决策对齐。

颜色检查项

  • 对比度要按真实背景检查,不要只看色块。
  • 有深浅主题时,两套都要单独看。
  • 复制设计系统或代码库真正需要的格式。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 三次贝塞尔曲线编辑器 CSS 缓动曲线编辑器, 拖两个控制点出曲线, 实时预览弹球 / 缩放 / 淡入三种动画, 一键复制 cubic-bezier 字符串。 打开
  2. 2 CSS transform 生成器 CSS transform 生成器,rotate/scale/skew/translate (含 3D) 实时预览,一键复制 CSS,12 个预设组合。 打开
  3. 3 CSS 加载动画生成器 CSS 加载动画:40+ 个纯 CSS spinner/骨架屏,可调颜色、大小、速度,复制代码就能用。 打开

真实使用场景

  • 给设计系统做一条可复用的入场动画

    你要一条所有卡片复用的"上浮淡入"入场。加三个关键帧:0% 设 opacity 0、translateY 16px,100% 设 opacity 1、translateY 0。 时长设 400ms,缓动选 ease-out 预设,fill-mode 设 forwards 让卡片落位后停住。复制 @keyframes 块,命名 `fade-up`,放进 全局样式表。之后每个 `.card` 只需要 `animation: fade-up 400ms ease-out both`。实时预览先帮你确认 缓动手感对了,再把数值固化成 token。

  • 不用 GIF 就做一个加载转圈

    转圈本质就是从 0deg 旋到 360deg 无限循环。加一个 0% 帧设 rotate 0deg、一个 100% 帧设 rotate 360deg,iteration-count 设 infinite,缓动设 linear,时长 800ms。预览立刻转起来,凭 眼睛调速度。复制输出,你就有一个纯 CSS 转圈,比任何 GIF 都 清晰,换色只改一个 CSS 变量,不走资源构建,不多发一个请求。

  • 给 CTA 调一条"脉冲"吸引注意的动画

    市场希望主按钮轻轻脉动。加 0% scale 1、50% scale 1.06、100% scale 1,direction 设 normal,iteration-count 设 infinite, 缓动用柔和的 ease-in-out。把时间轴拖到 50% 处,确认峰值缩放 看得见又不刺眼。预览用的就是浏览器实际会用的 GPU 合成 transform,所以你看到的就是用户在真实 CTA 上逐帧看到的。

  • 把 Figma 规格里的动画交付成可粘贴的 CSS

    设计师把动效描述成"从左侧滑入,轻微过冲,再落定"。翻译成 关键帧:0% translateX -100%,70% translateX 4%,100% translateX 0,时长 500ms,缓动选带回弹感的 cubic-bezier 预设。 在预览里确认过冲量读起来对,然后把生成的 CSS 直接粘进 PR。 不用再为"过冲多少"来回扯,数值就写在关键帧里。

  • 排查动画为什么是跳变而不是缓动

    一条现成动画每次循环结尾都会硬跳。在这里逐帧重建它,把 direction 切成 alternate,跳变消失了,因为元素现在是正放 再倒放,而不是从 100% 瞬移回 0%。把生成的简写跟代码库里那条 对一下;缺的那块八成是 `direction: alternate`,或者倒放那程 的 `timing-function` 不匹配。现在你手里就有改对的、能跑的 CSS。

常见踩坑

  • 动画化 width、height、top、left 会让浏览器每帧重算布局,移动端会卡顿。优先用 transform(平移 / 缩放)和 opacity,它们由合成线程在 GPU 上处理。这个工具默认就用 transform,正是这个原因。

  • 忘了设 fill-mode,入场动画一结束就弹回起点。元素该停在 100% 的位置时,把 fill-mode 设成 forwards(或 both),否则它会闪回 0% 的值。

  • iteration-count 设 infinite 但 direction 留 normal,每次循环都会从 100% 帧硬跳回 0% 帧。想要平滑往复,就把 direction 设成 alternate,让时间轴反向播放而不是瞬移。

隐私说明

编辑器、实时预览、CSS 代码生成全部是浏览器标签页里跑的纯 JavaScript,动画数据不发到任何服务器,也不记录你编排了什么。 唯一要注意:你完整的关键帧配置会编码进可分享的 URL query string,所以把"分享链接"粘到 Slack 或工单里时,对方服务器的 访问日志会留下这条动画规格。公开的 UI 动效无所谓;如果动效属于 还没发布的产品,直接复制 CSS 输出更稳妥。上次的配置也会存进本 浏览器的 localStorage,绝不离开设备。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-06-13