全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-16 7 分钟 ✍️ juanwangdev

CSS动画关键帧

CSS关键帧动画通过 @keyframes 规则定义动画序列,实现比过渡更复杂的动画效果。

@keyframes 语法

基本结构

CSS
@keyframes animation-name {
  0% { /* 起始状态 */ }
  100% { /* 结束状态 */ }
}

关键帧标识

CSS
@keyframes slide {
  from { transform: translateX(0); }
  to { transform: translateX(100px); }
}

/* 等价于 */
@keyframes slide {
  0% { transform: translateX(0); }
  100% { transform: translateX(100px); }
}

多关键帧定义

CSS
@keyframes bounce {
  0% { transform: translateY(0); }
  25% { transform: translateY(-20px); }
  50% { transform: translateY(0); }
  75% { transform: translateY(-10px); }
  100% { transform: translateY(0); }
}

关键帧百分比表示动画时间轴上的时间点,0%为开始,100%为结束。

多属性动画

CSS
@keyframes complex-animation {
  0% {
    opacity: 0;
    transform: scale(0.5) translateY(20px);
  }
  50% {
    opacity: 1;
    transform: scale(1.1) translateY(-10px);
  }
  100% {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

关键帧特性

属性叠加

未定义的属性保持原值或使用CSS默认值:

CSS
.box {
  width: 100px;
  height: 100px;
  background: red;
}

@keyframes move {
  0% { transform: translateX(0); }
  100% { transform: translateX(200px); }
  /* width、height、background 保持不变 */
}

重复属性

后定义的值覆盖前面的值:

CSS
@keyframes example {
  0% { opacity: 0; }
  0% { opacity: 0.5; } /* 生效 */
}

!important 规则

关键帧中的 !important 会被忽略:

CSS
@keyframes example {
  0% { opacity: 0 !important; } /* !important 无效 */
}

常用动画示例

淡入淡出

CSS
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

旋转

CSS
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

弹跳

CSS
@keyframes bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-30px); }
}

脉冲

CSS
@keyframes pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.1); }
}

摇晃

CSS
@keyframes shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-10px); }
  75% { transform: translateX(10px); }
}

应用关键帧

CSS
.element {
  animation: bounce 1s ease infinite;
}

关键帧定义动画序列,通过 animation 属性应用到元素上。

要点总结

  • @keyframes 定义动画序列,from/to 等价于 0%/100%
  • 多关键帧可精细控制动画每个阶段
  • 未定义属性保持原值不变
  • 关键帧中 !important 无效
  • 常用动画:淡入淡出、旋转、弹跳、脉冲、摇晃

📝 发现内容有误?点击此处直接编辑

← 上一篇 层叠与继承
下一篇 → CSS动画属性与配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库