CSS 动画指南 - 第一部分
在我们开始之前
那么,为什么要动画呢?
我们能制作什么动画?
我们的第一个动画
动画检查器
@关键帧
第一部分就到这里啦🤓
让我们行动起来!🎞
嘿!👋 你想让你的网站和应用动起来吗?本指南应该能帮到你👍
这篇文章假设你之前从未创建过CSS
动画。即使你创建过,也可能有一些你之前不了解的内容。它假设你对HTML
和有一定的了解CSS
。我们将探索如何创建你的第一个动画,以及如何链接动画。
CSS 动画是一个可以快速掌握的概念,但一旦我们真正深入研究,就会发现它是一个很大的主题。因此,这篇文章分为几个部分。
- 第一部分:介绍 CSS 动画,探讨性能以及如何检查动画。我们还将创建一个基本动画并探讨
@keyframes
其构图。 - 第二部分:掌握基础知识后,我们将深入探讨如何使用属性来实现不同的效果。其中包括使用和链接动画
animation
等技巧。fill-mode
- 第三部分:我们将通过一些附加主题来总结,例如如何使用 CSS 变量以及如何从 中挂钩
JavaScript
。我们还将讨论是否应该使用 CSS 动画。没错,它并非总是最佳选择。但了解基础知识和替代方案总是有益的。
在我们开始之前
所有代码都可以在这个 CodePen 集合中找到 🤓
这意味着所有示例都可以分叉、下载、编辑等。👍
该代码也可在 Github 上找到
对于所有动画,除非另有说明,我们都使用单个div
元素。基本标记包含以下内容:
<html>
<head>
<title>Our first animation</title>
<style>
* {
box-sizing: border-box;
}
html, body {
align-items: center;
background-color: rebeccapurple;
display: flex;
justify-content: center;
margin: 0;
padding: 0;
}
div {
background-color: #2EEC71;
height: 100px;
width: 100px;
}
</style>
<link rel="stylesheet" href="./index.css" />
</head>
<body>
<div />
</body>
</html>
本指南的目标是让你能够轻松地从头开始创建自己的 CSS 动画!💪
那么,为什么要动画呢?
提高可用性和整体用户体验。但这并不意味着动画应该在你的网站上无处不在。动画有其适用的场合和时间。
利用动画,我们可以吸引用户的注意力,或者引导他们完成一些流程。例如,加载动画或页面过渡效果。
我们能制作什么动画?
在开始创建动画之前,我们需要知道哪些属性可以动画。我们无法为每个属性都添加动画。以下 MDN 文章列出了可以动画的属性。
Lea Verou 还拥有一个很棒的动画属性演示页面。
物业表现
在可动画的属性中,我们可能会出于性能考虑选择对某些属性进行动画处理。
例如,使用 可以更好地处理元素位置的动画transform
。这是因为 GPU 可以处理该属性的动画繁重工作。某些属性的动画会触发布局。
下面的文章对于理解动画性能非常有用👍
搞定这些之后,我们就开始吧💪
我们的第一个动画
让我们深入研究并创建我们的第一个动画⛏
在这个动画中,我们将让一个元素旋转 360 度。我知道这很有趣 😅 但我们总得有个开始!
首先,我们使用规则创建动画@keyframes
。@keyframes
规则的结构如下。
@keyframes [NAME] {
[ KEYFRAME SELECTOR ] { CSS STYLES }
}
animation-name
是我们给动画起的名字。你可以有一个或多个关键帧选择器👍
我们将动画命名为spin
。要旋转元素,我们可以使用transform
属性 和rotate
从0deg
到360deg
。我们使用两个关键帧选择器。一个用于定义动画的开始(from
),另一个用于定义动画的结束(to
)。from
和to
关键字相当于0%
和100%
。
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
我们可以更进一步。from
关键帧选择器下的样式与我们元素的首字母匹配transform
。因此,关键帧选择器是多余的。我们可以将其删除。
@keyframes spin {
to {
transform: rotate(360deg);
}
}
现在,我们需要将动画应用到元素上。我们使用animation-name
和animation-duration
属性👍
div {
animation-duration: 2s;
animation-name: spin;
}
这里我们告诉元素使用spin
持续时间为 2 秒的动画。持续时间可以设置为毫秒 ( ms
) 或秒 ( s
)。
在浏览器中加载它应该会给我们类似的结果
我们的第一个动画🎉
从第一个动画开始,我们已经有足够的能力开始创作很酷的动画了😎 但请继续关注,以全面了解我们还能实现什么💪
动画检查器
Animations
我们已经创建了第一个动画。现在似乎是引入检查器的好时机Google Chrome
。
在 中打开动画Google Chrome
,然后打开。进入 ,Developer Tools
打开面板。如果面板显示“正在监听动画…”,请刷新页面。Animations
More Tools
Animations
刷新后,我们应该在Animations
面板中看到一些东西,那就是我们的动画!
点击动画,我们就可以检查它了。由于我们的动画不是特别复杂,所以没有太多需要检查的内容。但是使用动画检查器,我们可以做很多事情。我们可以尝试设置动画的时长和延迟,以及调整播放速度。最重要的是,我们可以重放动画,而无需刷新整个页面 😅
当我们有许多动画时,这会变得特别有用。无论是针对不同的元素还是单个元素。
Animations
在下面的文章中阅读有关检查员的更多信息。
在本指南中,我建议在检查演示时使用检查器👍
@关键帧
@keyframes
我们在动画中制定了第一条规则spin
。
没什么可说的@keyframes
。指定动画名称后,我们在关键帧选择器中构建动画。关键帧选择器指定动画时长的百分比。或者,如前所述,我们可以使用与和等价的from
和关键字。to
0%
100%
每个选择器都定义了在动画执行时应该应用的样式。如果我们有指定相同 CSS 样式的选择器,我们可以将它们分组。
让我们从一个简单的例子开始。考虑一个元素沿着正方形路径移动的动画。
我们将调用我们的动画squarePath
,我知道这非常有创意😅
在这个例子中,我们的元素将有四个位置。对于正方形的每一条边,我们使用动画的四分之一。由于起始和结束位置相同,我们可以将这些关键帧选择器分组👍
@keyframes squarePath {
0%, 100% {
transform: translate(-100%, -100%);
}
25% {
transform: translate(100%, -100%);
}
50% {
transform: translate(100%, 100%);
}
75% {
transform: translate(-100%, 100%);
}
}
将animation-name
andanimation-duration
应用于我们的元素🎉
div {
animation-duration: 2s;
animation-name: squarePath;
}
就这样!我们有一个元素沿着正方形的路径移动🎉
第一部分就到这里啦🤓
我们已经了解了创建动画并将其应用于元素的基础知识。我们还可以在浏览器中检查动画并进行调整 💪
虽然这些内容足以让你快速上手并运行 CSS 动画,但还有很多内容!希望你能加入我的第二部分,我们将深入探讨动画的应用以及相关的技巧和窍门。
请记住,所有代码都可以在以下 CodePen 集合中找到👍
一如既往,如果您有任何问题或建议,请随时留言或发推文给我🐦!记得在社交媒体上与我联系!😎
文章来源:https://dev.to/jh3y/a-guide-to-css-animation-part-1-36o9