Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

CSS 教程

CSS 主页 CSS 简介 CSS 语法 CSS 选择器 CSS 如何做 CSS 注释 CSS 颜色 CSS 背景 CSS 边框 CSS 外边距 CSS 内边距 CSS 高度/宽度 CSS 盒模型 CSS 轮廓 CSS 文本 CSS 字体 CSS 图标 CSS 链接 CSS 列表 CSS 表格 CSS 显示 CSS 最大宽度 CSS 位置 CSS Z-index CSS 溢出 CSS 浮动 CSS 行内块 CSS 对齐 CSS 组合器 CSS 伪类 CSS 伪元素 CSS 不透明度 CSS 导航栏 CSS 下拉菜单 CSS 图片库 CSS 图片精灵 CSS 属性选择器 CSS 表单 CSS 计数器 CSS 网站布局 CSS 单位 CSS 特定性 CSS !important CSS 数学函数

CSS 高级

CSS 圆角 CSS 边框图像 CSS 背景 CSS 颜色 CSS 颜色关键字 CSS 渐变 CSS 阴影 CSS 文本效果 CSS 网络字体 CSS 2D 变换 CSS 3D 变换 CSS 过渡 CSS 动画 CSS 工具提示 CSS 样式图像 CSS 图像反射 CSS object-fit CSS object-position CSS 遮罩 CSS 按钮 CSS 分页 CSS 多列 CSS 用户界面 CSS 变量 CSS @property CSS 盒尺寸 CSS 媒体查询 CSS 媒体查询示例 CSS Flexbox

CSS 响应式

RWD 简介 RWD 视口 RWD 网格视图 RWD 媒体查询 RWD 图像 RWD 视频 RWD 框架 RWD 模板

CSS 网格

网格简介 网格容器 网格项目

CSS SASS

SASS 教程

CSS 示例

CSS 模板 CSS 示例 CSS 编辑器 CSS 代码片段 CSS 测验 CSS 练习 CSS 网站 CSS 面试准备 CSS 集训营 CSS 证书

CSS 参考

CSS 参考 CSS 选择器 CSS 函数 CSS 参考音频 CSS 网络安全字体 CSS 可动画 CSS 单位 CSS PX-EM 转换器 CSS 颜色 CSS 颜色值 CSS 默认值 CSS 浏览器支持

CSS 动画


CSS 动画

CSS 允许在不使用 JavaScript 的情况下对 HTML 元素进行动画!

CSS

在本节中,您将学习以下属性:

  • @keyframes
  • animation-name
  • animation-duration
  • animation-delay
  • animation-iteration-count
  • animation-direction
  • animation-timing-function
  • animation-fill-mode
  • animation

动画的浏览器支持

表中的数字指定完全支持该属性的第一个浏览器版本。

属性
@keyframes 43.0 10.0 16.0 9.0 30.0
animation-name 43.0 10.0 16.0 9.0 30.0
animation-duration 43.0 10.0 16.0 9.0 30.0
animation-delay 43.0 10.0 16.0 9.0 30.0
animation-iteration-count 43.0 10.0 16.0 9.0 30.0
animation-direction 43.0 10.0 16.0 9.0 30.0
animation-timing-function 43.0 10.0 16.0 9.0 30.0
animation-fill-mode 43.0 10.0 16.0 9.0 30.0
animation 43.0 10.0 16.0 9.0 30.0

什么是 CSS 动画?

动画可以让元素从一种样式逐渐过渡到另一种样式。

您可以根据需要更改任意数量的 CSS 属性,次数不限。

要使用 CSS 动画,您必须首先为动画指定一些关键帧。

关键帧保存元素在特定时间将具有的样式。


@keyframes 规则

当您在 @keyframes 规则中指定 CSS 样式时,动画将从当前样式逐渐过渡到新样式,并在特定时间发生。

要使动画生效,您必须将动画绑定到元素。

以下示例将“example”动画绑定到 <div> 元素。动画将持续 4 秒,并将逐渐将 <div> 元素的背景颜色从“红色”更改为“黄色”。

示例

/* 动画代码 */
@keyframes example {
  from {background-color: red;}
  to {background-color: yellow;}
}

/* 要应用动画的元素 */
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}
亲自尝试 »

注意:animation-duration 属性定义动画完成所需的时间。如果未指定 animation-duration 属性,则不会发生动画,因为默认值为 0s(0 秒)。 

在上面的示例中,我们使用关键字“from”和“to”(代表 0%(开始)和 100%(完成))指定样式更改的时间。

也可以使用百分比。通过使用百分比,您可以根据需要添加任意数量的样式更改。

以下示例将在动画完成 25%、50% 和 100% 时更改 <div> 元素的背景颜色。

示例

/* 动画代码 */
@keyframes example {
  0%   {background-color: red;}
  25%  {background-color: yellow;}
  50%  {background-color: blue;}
  100% {background-color: green;}
}

/* 要应用动画的元素 */
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}
亲自尝试 »

以下示例将在动画完成 25%、50% 和 100% 时更改 <div> 元素的背景颜色和位置。

示例

/* 动画代码 */
@keyframes example {
  0%   {background-color:red; left:0px; top:0px;}
  25%  {background-color:yellow; left:200px; top:0px;}
  50%  {background-color:blue; left:200px; top:200px;}
  75%  {background-color:green; left:0px; top:200px;}
  100% {background-color:red; left:0px; top:0px;}
}

/* 要应用动画的元素 */
div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}
亲自尝试 »


延迟动画

animation-delay 属性指定动画开始的延迟。

以下示例在动画开始前有 2 秒的延迟。

示例

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-delay: 2s;
}
亲自尝试 »

负值也是允许的。如果使用负值,动画将从已经播放了N秒开始。

在以下示例中,动画将从已经播放了 2 秒开始

示例

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-delay: -2s;
}
亲自尝试 »

设置动画运行的次数

The animation-iteration-count 属性指定动画应运行的次数。

以下示例将在动画停止之前运行动画 3 次

示例

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 3;
}
亲自尝试 »

以下示例使用值“infinite”使动画永远持续

示例

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
亲自尝试 »

反向运行动画或交替循环

The animation-direction 属性指定动画应该是正向、反向还是交替循环播放。

animation-direction 属性可以具有以下值

  • normal - 动画按正常方式播放(向前)。这是默认值
  • reverse - 动画以反向播放(向后)
  • alternate - 动画先向前播放,然后向后播放
  • alternate-reverse - 动画先向后播放,然后向前播放

以下示例将以反向(向后)运行动画

示例

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-direction: reverse;
}
亲自尝试 »

以下示例使用值“alternate”使动画先向前运行,然后向后运行

示例

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 2;
  animation-direction: alternate;
}
亲自尝试 »

以下示例使用值“alternate-reverse”使动画先向后运行,然后向前运行

示例

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 2;
  animation-direction: alternate-reverse;
}
亲自尝试 »

指定动画的速度曲线

The animation-timing-function 属性指定动画的速度曲线。

animation-timing-function 属性可以具有以下值

  • ease - 指定动画以慢速开始,然后快速,然后慢慢结束(这是默认值)
  • linear - 指定从开始到结束以相同速度进行的动画
  • ease-in - 指定以慢速开始的动画
  • ease-out - 指定以慢速结束的动画
  • ease-in-out - 指定以慢速开始和结束的动画
  • cubic-bezier(n,n,n,n) - 允许您在三次贝塞尔函数中定义自己的值

以下示例显示了一些可以使用的不同速度曲线

示例

#div1 {animation-timing-function: linear;}
#div2 {animation-timing-function: ease;}
#div3 {animation-timing-function: ease-in;}
#div4 {animation-timing-function: ease-out;}
#div5 {animation-timing-function: ease-in-out;}
亲自尝试 »

指定动画的填充模式

CSS 动画不会影响第一个关键帧播放之前或最后一个关键帧播放之后的元素。animation-fill-mode 属性可以覆盖此行为。

The animation-fill-mode 属性指定动画未播放时(开始之前、结束之后或两者)目标元素的样式。

animation-fill-mode 属性可以具有以下值

  • none - 默认值。动画不会在执行之前或之后对元素应用任何样式
  • forwards - 元素将保留最后一个关键帧设置的样式值(取决于 animation-direction 和 animation-iteration-count)
  • backwards - 元素将获得第一个关键帧设置的样式值(取决于 animation-direction),并在动画延迟期间保留此样式值
  • both - 动画将遵循 forwards 和 backwards 的规则,在两个方向上扩展动画属性

以下示例让 <div> 元素在动画结束时保留来自最后一个关键帧的样式值

示例

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-fill-mode: forwards;
}
亲自尝试 »

以下示例让 <div> 元素在动画开始之前(在动画延迟期间)获得第一个关键帧设置的样式值

示例

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-delay: 2s;
  animation-fill-mode: backwards;
}
亲自尝试 »

以下示例让 <div> 元素在动画开始之前获得第一个关键帧设置的样式值,并在动画结束时保留来自最后一个关键帧的样式值

示例

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-delay: 2s;
  animation-fill-mode: both;
}
亲自尝试 »

动画简写属性

以下示例使用六个动画属性

示例

div {
  animation-name: example;
  animation-duration: 5s;
  animation-timing-function: linear;
  animation-delay: 2s;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}
亲自尝试 »

与上述相同的动画效果可以通过使用简写 animation 属性来实现

示例

div {
  animation: example 5s linear 2s infinite alternate;
}
亲自尝试 »

通过练习测试自己

练习

为 <div> 元素添加一个 2 秒的动画,该动画将颜色从红色更改为蓝色。将动画命名为“example”。

<style>
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: ;
  : 2s;
}

@keyframes example {
  from {: red;}
  to {: blue;}
}
</style>

<body>
  <div>This is a div</div>
</body>

开始练习


CSS 动画属性

下表列出了 @keyframes 规则和所有 CSS 动画属性

属性 描述
@keyframes 指定动画代码
animation 用于设置所有动画属性的简写属性
animation-delay 指定动画开始的延迟
animation-direction 指定动画应该是正向、反向还是交替循环播放
animation-duration 指定动画完成一个循环需要多长时间
animation-fill-mode 指定动画未播放时(开始之前、结束之后或两者)元素的样式
animation-iteration-count 指定动画应播放的次数
animation-name 指定 @keyframes 动画的名称
animation-play-state 指定动画是正在运行还是已暂停
animation-timing-function 指定动画的速度曲线

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.