首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CSS3 动画教程

CSS3 动画教程

原创
作者头像
搜罗万相
发布2026-04-23 08:42:06
发布2026-04-23 08:42:06
730
举报

CSS3 动画零基础完整版教程

CSS3 动画分两种:transition 过渡动画(简单状态变化)@keyframes 关键帧动画(复杂循环/多段动画),纯CSS无需JS,浏览器硬件加速、性能极高。

一、transition 过渡动画(入门首选)

适合:hover、点击、样式切换平滑渐变,只有起始+结束2个状态

语法

代码语言:css
复制
/* 复合写法:属性 时长 速度曲线 延迟 */
transition: all 0.5s ease 0.1s;

常用参数

  • all:所有变化属性都过渡(也可单独写widthopacitytransform
  • 0.5s:动画时长(秒s/毫秒ms
  • ease:缓动曲线(匀速linear、先慢后快ease-in、先快后慢ease-out
  • 0.1s:延迟多久执行

实战:鼠标悬停缩放变色

代码语言:css
复制
.box {
  width: 100px;
  height: 100px;
  background: red;
  /* 开启过渡 */
  transition: transform 0.3s, background 0.3s;
}
.box:hover {
  transform: scale(1.2); /* 放大1.2倍 */
  background: blue;
}

二、@keyframes 关键帧动画(复杂循环动画)

核心两步:1. @keyframes 定义动画每帧样式 → 2. animation 绑定到元素

1. 定义关键帧(from/to / 百分比)

代码语言:css
复制
/* 动画名:move */
@keyframes move {
  from { transform: translateX(0); } /* 0% 起点 */
  50% { transform: translateX(150px); } /* 中间状态 */
  to { transform: translateX(300px); } /* 100% 终点 */
}
  • from = 0%to = 100%
  • 可写任意百分比:20%、40%、80%,做多段轨迹动画

2. animation 绑定动画(复合属性)

代码语言:css
复制
.box {
  /* 动画名 时长 缓动 延迟 循环次数 方向 填充模式 */
  animation: move 2s ease 0s infinite alternate;
}

animation 全属性详解

  1. animation-name:动画名称(和@keyframes一一对应)
  2. animation-duration:单次时长(必写)
  3. animation-timing-function:速度曲线
    • linear 匀速、ease 默认、ease-in 渐快、ease-out 渐慢、ease-in-out 两头慢中间快
  4. animation-delay:动画延迟开始时间
  5. animation-iteration-count:循环次数
    • 数字:3次;infinite 无限循环
  6. animation-direction:播放方向
    • normal 正向(默认)
    • reverse 反向
    • alternate 正→反交替
    • alternate-reverse 反→正交替
  7. animation-fill-mode:动画结束状态
    • none 回到初始
    • forwards 保持最后一帧
    • backwards 等待延迟时就应用第一帧
  8. animation-play-staterunning播放 / paused暂停

实战:无限旋转+变色方块

代码语言:css
复制
@keyframes rotate {
  0% { transform: rotate(0deg); background: red; }
  50% { transform: rotate(180deg); background: yellow; }
  100% { transform: rotate(360deg); background: blue; }
}
.box {
  width: 100px;
  height: 100px;
  animation: rotate 3s linear infinite forwards;
}

三、transform 常用形变(动画必备)

配合动画做位移、旋转、缩放、倾斜

  • translate(x,y) 平移transform: translate(50px, 20px) rotate(45deg) scale(1.1);
  • rotate(deg) 旋转
  • scale(n) 缩放
  • skew(deg) 倾斜

四、transition vs @keyframes 区别对比

对比项

transition 过渡

@keyframes 关键帧

状态

只有起点、终点

任意多中间帧

触发

hover/JS 状态改变

自动播放、无限循环

复杂度

简单交互动画

轮播、弹跳、轨迹、循环动画

语法

极简

灵活强大


五、高频实战案例

1. 淡入入场动画

代码语言:css
复制
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
.box { animation: fadeIn 1s ease forwards; }

2. 上下弹跳循环

代码语言:css
复制
@keyframes bounce {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-30px); }
}
.box { animation: bounce 1s infinite ease-in-out; }

六、浏览器兼容

主流浏览器全兼容,无需前缀;老旧webkit内核可加:

代码语言:css
复制
@-webkit-keyframes xxx {}
-webkit-animation: xxx;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CSS3 动画零基础完整版教程
    • 一、transition 过渡动画(入门首选)
      • 语法
      • 常用参数
      • 实战:鼠标悬停缩放变色
    • 二、@keyframes 关键帧动画(复杂循环动画)
      • 1. 定义关键帧(from/to / 百分比)
      • 2. animation 绑定动画(复合属性)
      • animation 全属性详解
      • 实战:无限旋转+变色方块
    • 三、transform 常用形变(动画必备)
    • 四、transition vs @keyframes 区别对比
    • 五、高频实战案例
      • 1. 淡入入场动画
      • 2. 上下弹跳循环
    • 六、浏览器兼容
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档