- CSS 教程
- CSS - 教程
- CSS - 简介
- CSS - 语法
- CSS - 选择器
- CSS - 包含
- CSS - 度量单位
- CSS - 颜色
- CSS - 背景
- CSS - 字体
- CSS - 文本
- CSS - 图像
- CSS - 链接
- CSS - 表格
- CSS - 边框
- CSS - border-block 属性
- CSS - 边框内联
- CSS - 边距
- CSS - 列表
- CSS - Padding 属性
- CSS - 光标
- CSS - 轮廓
- CSS - 维度
- CSS - 滚动条
- CSS - 内联块
- CSS - 下拉列表
- CSS - visibility 属性
- CSS - Overflow 属性
- CSS - 清除修复
- CSS - float(浮点)
- CSS - 箭头
- CSS - resize 属性
- CSS - quotes 属性
- CSS - order 属性
- CSS - Position 属性
- CSS - hypens 属性
- CSS - :hover(悬停)
- CSS - display(显示)
- CSS - focus 属性
- CSS - zoom(缩放)
- CSS - translate 属性
- CSS - Height 属性
- CSS - hyphenate-character 属性
- CSS - Width 属性
- CSS - opacity 属性
- CSS - z-index 属性
- CSS - bottom 属性
- CSS - 导航栏
- CSS - 覆盖
- CSS - 表单
- CSS - 对齐
- CSS - 图标
- CSS - 图片库
- CSS - 注释
- CSS - 加载器
- CSS - Atrribute 选择器属性
- CSS - 运算器
- CSS - root
- CSS - 盒子模型
- CSS - 计数器
- CSS - Clip (Obsolete) 属性
- CSS - writing-mode 属性
- CSS - Unicode-bidi 属性
- CSS - min-content 属性
- CSS - 全部
- CSS - inset 属性
- CSS - isolation 属性
- CSS - overscroll-behavior 属性
- CSS - justify-items 属性
- CSS - justify-self 属性
- CSS - tab-size 属性
- CSS - pointer-event 属性
- CSS - place-content 属性
- CSS - place-items 属性
- CSS - place-self 属性
- CSS - max-block-size 属性
- CSS - min-block-size 属性
- CSS - mix-blend-mode 属性
- CSS - max-inline-size 属性
- CSS - min-inline-size 属性
- CSS - offset 属性
- CSS - accent-color 属性
- CSS - user-select 属性
- CSS 高级
- CSS - grid 属性
- CSS - Grid 布局
- CSS - flexbox
- CSS - vertical-align 属性
- css - positioning
- css - layers
- css - pseudo_classes
- CSS - 伪元素
- CSS - @ 规则
- CSS 滤镜 - text-effect 属性
- CSS 分页媒体
- CSS 打印
- CSS - 布局
- CSS - 验证
- CSS - 图像精灵
- CSS - !important
- CSS - 数据类型
- CSS3 教程
- CSS - 圆角
- CSS - 边框图像
- CSS - 多种背景
- CSS - 渐变
- CSS - box-shadow 属性
- CSS - box-decoration-break 属性
- CSS - caret-color 属性
- CSS - text-shadow 属性
- CSS - 2D 转换
- CSS - 3D 变换
- CSS - transition 属性
- CSS - 动画
- CSS - 多列布局
- CSS - 盒子大小调整
- CSS - 工具提示
- CSS - buttons
- CSS - 分页
- CSS - 变量
- CSS - 媒体查询
- CSS - 值函数
- CSS - 数学函数
- CSS - Mask 属性
- CSS - shape-outside 属性
- CSS - 样式图像
- CSS - 特异性
- CSS - 自定义属性
- CSS 响应式
- CSS - 响应式网页设计 (RWD)
- CSS - 响应式设计视口
- CSS - 响应式网格视图
- CSS - 响应式媒体查询
- CSS - 响应式图像
- CSS - 响应式视频
- CSS - 响应式框架
- CSS 引用
- CSS - 所有属性列表
- CSS - 颜色引用
- CSS - 浏览器支持参考
- CSS - 网页字体
- CSS 工具
- CSS - PX 到 EM 的转换
CSS - 动画
CSS 动画允许在不使用 JavaScript 的情况下在不同样式之间创建平滑过渡。
什么是CSS动画?
在 CSS 中,我们可以根据持续时间、用户交互或状态变化动态更改元素的样式,称为 CSS 动画。它是使用“@keyframes”规则来实现的,用于创建动画,并使用动画属性将其应用于元素。
@keyframes规则
“@keyframes”规则用于定义动画的关键帧,指定动画元素在动画的各个阶段的外观。请考虑以下定义关键帧规则的代码。
.box{
animation: colorChange 5s infinite;
}
@keyframes colorChange {
0% {
background-color: red;
}
50% {
background-color: green;
}
100% {
background-color: blue;
}
}
此代码将为类为“.box”的元素定义动画,动画的名称为 colorChange,运行 5 秒,重复无限次。
关键帧规则是为名为 colorChange 的动画定义的。
- 在动画总持续时间的 0%(即 0 秒)时,背景颜色将为红色。
- 在总时间的 50% (即 2.5 秒)时,背景颜色变为绿色。
- 在总持续时间的 100%(即 5 秒)时,颜色变为蓝色。
Animation Delay 属性
我们可以使用 animation-delay 属性设置启动动画的延迟。请看以下示例
您还可以为 animation-delay 属性设置负值。如果您使用负值 -n,则动画将开始,就好像它已经播放了 n 秒一样。
例在此示例中,球将在 2 秒后开始向左移动。
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.ball {
width: 50px;
height: 50px;
background-color: #3498db;
border-radius: 50%;
position: absolute;
left: 0;
animation-name: moveRight;
/* Set duration */
animation-duration: 2s;
/* Set delay for animation */
animation-delay: 2s;
}
@keyframes moveRight {
to {
left: calc(100% - 50px);
}
}
</style>
</head>
<body>
<div class="container">
<div class="ball"></div>
</div>
</body>
</html>
设置动画迭代计数
我们可以使用 animation-iteration-count 属性设置动画应重复的次数。
CSS 规范不支持此属性的负值。它可以将值作为正整数(例如,1、2、3 等)或关键字“无限”
例在此示例中,我们将球迭代计数设置为无限。
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.ball {
width: 50px;
height: 50px;
background-color: #3498db;
border-radius: 50%;
position: absolute;
left: 0;
animation-name: moveRight;
/* Set duration */
animation-duration: 2s;
/* Set number of time animation repeats */
animation-iteration-count: infinite;
}
@keyframes moveRight {
to {
left: calc(100% - 50px);
}
}
</style>
</head>
<body>
<div class="container">
<div class="ball"></div>
</div>
</body>
</html>
Animation Direction 属性
我们可以使用 animation-direction 属性指定动画的运行方向。
以下是 animation-direction 属性的有效值
- normal:动画照常播放(向前播放)。这是默认设置。
- reverse:动画以相反方向(向后)播放。
- alternate:动画首先向前播放,然后向后播放。
- alternate-reverse:动画首先向后播放,然后向前播放。
例
在这个例子中,我们使用内联css来设置动画方向属性。
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.ball {
width: 50px;
height: 50px;
background-color: #3498db;
border-radius: 50%;
position: relative;
left:0;
animation-name: moveRight ;
animation-duration: 2s;
animation-iteration-count: infinite;
}
@keyframes moveRight {
to {
left: calc(100% - 50px);
}
}
</style>
</head>
<body>
<h2>animation-direction: normal</h2>
<div class="ball"
style="animation-direction: normal; ">
</div>
<h2>animation-direction: reverse</h2>
<div class="ball"
style="animation-direction: reverse;">
</div>
<h2>animation-direction: alternate</h2>
<div class="ball"
style="animation-direction: alternate;">
</div>
<h2>animation-direction: alternate-reverse</h2>
<div class="ball"
style="animation-direction: alternate-reverse;">
</div>
</body>
</html>
动画定时功能
在 CSS 中,animation-timing-function 属性用于定义动画的速度曲线。它可以采用以下值。
- ease:动画将开始缓慢,然后快速,然后缓慢结束(默认值)。
- linear:动画从头到尾以相同的速度进行。
- ease-in:启动缓慢的动画。
- ease-out:动画结束缓慢。
- ease-in-out:开始和结束缓慢的动画。
- cubic-bezier(n,n,n,n):这使我们能够定义自己的速度值。要了解更多信息,请查看立方贝塞尔函数文章。
例
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.ball {
width: 50px;
height: 50px;
background-color: #3498db;
border-radius: 50%;
position: relative;
left:0;
animation-name: moveRight ;
animation-duration: 2s;
animation-iteration-count: infinite;
}
@keyframes moveRight {
to {
left: calc(100% - 50px);
}
}
</style>
</head>
<body>
<h2>linear</h2>
<div class="ball"
style="animation-timing-function: linear;">
</div>
<h2>ease</h2>
<div class="ball"
style="animation-timing-function: ease;">
</div>
<h2>ease-in</h2>
<div class="ball"
style="animation-timing-function: ease-in;">
</div>
<h2>ease-out</h2>
<div class="ball"
style="animation-timing-function: ease-out;">
</div>
<h2>ease-in-out</h2>
<div class="ball"
style="animation-timing-function: ease-in-out;">
</div>
<h2>cubic-bezier(0.25, 0.1, 0.25, 1)</h2>
<div class="ball"
style="animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);">
</div>
</body>
</html>
设置动画填充模式
animation-fill-mode 属性指定动画不播放时(开始之前、结束之后或两者兼而有之)时目标元素的样式。
animation-fill-mode 属性可以具有以下值:
- none:动画在启动之前或之后都不会应用任何样式。这是默认设置。
- forwards:在动画结束时,元素将保持最后一个关键帧规则设置的样式。
- backwards:在动画结束时,元素将保持第一个关键帧规则设置的样式。
- both:动画将遵循前进和后退的规则。
请查看以下代码的输出以更深入地理解:
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.box {
padding: 10px;
background-color: green;
color: white;
font-size: 16px;
margin: 20px;
animation-duration: 2s;
animation-name: changeColor;
}
/* Animation Definition */
@keyframes changeColor {
0% {
background-color: blue;
}
100% {
background-color: red ;
}
}
/* Animation Fill Modes */
.none {
animation-fill-mode: none;
}
.forwards {
animation-fill-mode: forwards;
}
.backwards {
animation-fill-mode: backwards;
animation-delay: 2s;
}
.both {
animation-fill-mode: both;
animation-delay: 2s;
}
</style>
</head>
<body>
<div class="box none">None</div>
<div class="box forwards">Forwards</div>
<div class="box backwards">Backwards</div>
<div class="box both">Both</div>
</body>
</html>
Animation Shorthand 属性
在 CSS 中,animation 属性是以下属性的简写
- animation-name: :设置动画的名称。
- animation-duration:设置动画的持续时间。
- animation-timing-function:定义动画的速度曲线。
- animation-delay:设置动画开始前的延迟。
- animation-iteration-count:设置动画重复的次数。
- animation-direction:定义动画的执行方向。
- animation-fill-mode:描述运行前和运行后的样式。
- animation-play-state:描述动画的播放/暂停性质。
例:
<html lang="en">
<head>
<style>
.box {
padding: 20px;
background-color: #3498db;
color: white;
font-size: 16px;
/* Name, duration, timing function, delay, repeat, direction, fill mode */
animation: changeColor 2s ease-in-out 1s infinite alternate both;
}
/* Animation Definition */
@keyframes changeColor {
0% {
background-color: #3498db;
}
100% {
background-color: #e74c3c;
}
}
</style>
</head>
<body>
<div class="box">Animate Me!</div>
</body>
</html>
CSS 动画属性列表
以下是 animation 属性的子属性:
属性 | 描述 |
---|---|
animation-composition | 指示当许多动画同时对同一属性产生效果时要应用的复合操作。 |
animation-delay | 指示动画是应从动画的开头开始,还是应从动画的某个位置开始,以及从元素加载到动画序列开始之间应经过的时间量。 |
animation-direction | 指示动画的初始迭代是向前还是向后,以及之后的迭代是应沿同一方向继续还是每次执行序列时都应更改方向。. |
animation-duration | 指示动画完成一个周期所需的时间。 |
animation-fill-mode | 描述动画应用于其目标的运行前和运行后样式。 |
animation-iteration-count | 指示动画应重复出现的次数。 |
animation-name | 它给出了描述动画关键帧的@keyframes规则的名称。 |
animation-play-state | 指示是应播放还是暂停动画序列。 |
animation-timing-function | 描述用于指定动画中的关键帧过渡的加速度曲线。 |