@keyframes用于定义动画关键帧,animation属性引用其名称实现动画效果。1. 定义@keyframes规则设置样式状态;2. 在元素中通过animation调用名称、设置时长和缓动函数;3. 可定义多阶段动画如淡入淡出循环;4. 注意@keyframes全局有效、不可嵌套、名称需拼写一致,支持多个动画逗号分隔。先定义后引用是核心逻辑。

在 css 中,@keyframes 并不能嵌套在 animation 属性中,它们是两个独立但相互关联的语法结构。你需要先定义一个 @keyframes 规则,然后通过 animation 属性引用这个规则。
1. @keyframes 的定义方式
使用 @keyframes 定义动画的关键帧,指定元素在不同时间点的样式状态:
@keyframes slideIn { from { transform: translateX(-100%); } to { transform: translateX(0); } }
2. animation 属性引用 keyframes
在元素的样式中,使用 animation 属性调用已定义的 keyframes 名称:
.animated-box { animation: slideIn 2s ease-in-out; }
这里 slideIn 就是对 @keyframes 名称的引用,2s 是持续时间,ease-in-out 是缓动函数。
立即学习“前端免费学习笔记(深入)”;
3. 多个关键帧示例
你也可以定义更复杂的动画过程:
@keyframes fadeInOut { 0% { opacity: 0; } 50% { opacity: 1; } 100% { opacity: 0; } } .fade-element { animation: fadeInOut 4s infinite; }
这个例子让元素淡入再淡出,循环播放。
4. 注意事项
- @keyframes 是全局的,定义后可在任意选择器中引用
- animation 属性不能直接包含 @keyframes 内容,不支持嵌套写法
- 确保 keyframes 名称拼写一致,避免因大小写或拼写错误导致引用失败
- 可以在同一个元素上使用多个动画,用逗号分隔
基本上就这些。CSS 动画的设计逻辑是“先定义,再引用”,理解这一点就能正确使用 animation 和 @keyframes 配合实现动态效果。


