网站首页 > 技术文章 正文
在 CSS 中实现动画效果主要有两种方式:过渡(Transition)和关键帧动画(Animation),下面为你详细介绍这两种方式。
过渡(Transition)
过渡是指元素从一种样式逐渐变化为另一种样式的效果,它可以在元素的两个状态之间平滑地过渡。
实现步骤
1. 确定过渡的元素:选择你想要添加过渡效果的 HTML 元素。
2. 定义元素的初始状态和目标状态:通过 CSS 样式来设置元素的初始状态和目标状态。
3. 设置过渡属性:使用 transition 属性来指定过渡的属性、过渡时间、延迟时间和过渡函数。
示例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Transition Example</title>
<style>
/* 定义按钮的初始状态 */
button {
background-color: blue;
color: white;
padding: 10px 20px;
border: none;
/* 设置过渡属性:过渡的属性为 background - color,过渡时间为 0.3 秒,过渡函数为 ease */
transition: background-color 0.3s ease;
}
/* 定义按钮的目标状态(鼠标悬停时) */
button:hover {
background-color: red;
}
</style>
</head>
<body>
<button>Hover me</button>
</body>
</html>
代码解释
● transition 属性的语法为 transition: property duration timing - function delay; ,其中:
○ property :指定要过渡的 CSS 属性,如 background - color 、 width 、 opacity 等。
○ duration :指定过渡的时间,单位可以是秒(s)或毫秒(ms)。
○ timing - function :指定过渡的速度曲线,常见的值有 ease 、 linear 、 ease - in 、 ease - out 等。
○ delay :指定过渡的延迟时间,即从触发过渡到开始过渡之间的时间间隔。
关键帧动画(Animation)
关键帧动画允许你创建更复杂的动画效果,通过 @keyframes 规则定义动画序列,然后使用 animation 属性将动画应用到元素上。
实现步骤
1. 定义关键帧动画:使用 @keyframes 规则定义动画序列,指定动画在不同时间点的状态。
2. 应用动画到元素:使用 animation 属性将定义好的动画应用到 HTML 元素上。
示例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Animation Example</title>
<style>
/* 定义一个名为 slide - in 的动画序列 */
@keyframes slide - in {
/* 动画开始时(0%)的状态 */
from {
transform: translateX(-100%);
opacity: 0;
}
/* 动画结束时(100%)的状态 */
to {
transform: translateX(0);
opacity: 1;
}
}
/* 定义元素的初始样式 */
.box {
width: 100px;
height: 100px;
background-color: green;
/* 应用动画:动画名称为 slide - in,动画持续时间为 1 秒,动画播放次数为 1 次,动画播放方向为正常 */
animation: slide - in 1s 1 normal;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
代码解释
● @keyframes 规则的语法为 @keyframes animation - name { keyframe - selector { css - properties } } ,其中:
○ animation - name :指定动画的名称,用于在 animation 属性中引用。
○ keyframe - selector :指定关键帧的时间点,可以使用百分比(如 0% 、 50% 、 100% )或 from (相当于 0% )和 to (相当于 100% )。
○ css - properties :指定在该关键帧时元素的 CSS 属性。
● animation 属性的语法为 animation: name duration timing - function delay iteration - count direction fill - mode play - state; ,其中:
○ name :指定动画的名称,即 @keyframes 规则中定义的动画名称。
○ duration :指定动画的持续时间。
○ timing - function :指定动画的速度曲线。
○ delay :指定动画的延迟时间。
○ iteration - count :指定动画的播放次数,可以是具体的数字,也可以是 infinite 表示无限循环。
○ direction :指定动画的播放方向,如 normal (正常播放)、 reverse (反向播放)等。
○ fill - mode :指定动画在播放前后元素的样式状态,如 forwards 表示动画结束后保持最后一帧的状态。
○ play - state :指定动画的播放状态,如 running (正在播放)、 paused (暂停播放)。
通过以上两种方式,你可以在 CSS 中实现各种各样的动画效果,满足不同的设计需求。
猜你喜欢
- 2025-09-04 css 布局简述_简述css布局技术的特点
- 2025-09-04 9个专业级别的CSS技巧区分了解和精通的鸿沟
- 2025-09-04 BeautifulSoup如何将含有data-tag标签的元素提取出来?
- 2025-09-04 5个CSS新功能,简单好用还超省时间
- 2025-09-04 CSS :has()伪类:2025年最值得掌握的前端黑科技
- 2025-09-04 盘点5个让你惊呼的样式,CSS的“黑魔法”技巧!
- 2025-06-15 研发Web Components库,深入探究DOM 节点之间的关系
- 2025-06-15 CSS基础(css基础知识)
- 2025-06-15 强大而好用的选择器:focus-within
- 2025-06-15 性能出色,纯CSS实现的loading动画——Loaders.css
- 09-04综艺做成这样都上不了热搜?_综艺节目热播原因
- 09-04webRTC中音频相关的netEQ(二):数据结构
- 09-04每日一词“era”_每日一页歌词
- 09-04css 布局简述_简述css布局技术的特点
- 09-049个专业级别的CSS技巧区分了解和精通的鸿沟
- 09-04BeautifulSoup如何将含有data-tag标签的元素提取出来?
- 09-04CSS 中实现动画效果的方法_css动画制作
- 09-045个CSS新功能,简单好用还超省时间
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)