65.9K
CodeProject 正在变化。 阅读更多。
Home

CSS3 动画

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2011年12月16日

CPOL

3分钟阅读

viewsIcon

18818

CSS3 动画

CSS3 Animations

引言

最近,我参与了一个非常有趣的项目,关于 HTML5,以后会详细介绍。与此同时,我有机会“玩”一下 HTML5 和 CSS3 规范。CSS3 规范中一个新且有趣的部分可能是 CSS3 动画。这些东西是否让你想起动画图像、使用 Flash 或 JavaScript 实现的简单动画?如果是这样,这篇文章就是为你准备的。

为什么使用动画?

如今,大多数网站和应用程序都使用动画。你可以在网站嵌入的营销广告中找到它们,在等待下载完成时看到动画图像,以及在许多其他地方。动画的附加价值在于它能吸引用户的注意力。这也是它的缺点,因为过度使用动画可能会导致分心,并可能将用户从网站或应用程序上引开。过去,如果你想使用动画,可以使用动画图像、Flash 或 JavaScript。今天,有了 HTML5,这不再必要。你可以使用 Canvas、SVG 甚至 CSS 来实现相同的结果。

什么是 CSS3 动画?

CSS3 引入了一个新的 CSS 模块,称为 CSS 动画模块 Level 3。该模块描述了如何使用 CSS3 新属性创建简单的动画。CSS3 动画使用新的 @keyframes 规则定义,该规则定义了动画的帧。结合动画属性,你可以实现仅由样式更改组成的简单动画。

定义动画

为了定义动画,你将使用 @keyframes 规则并为其指定一个有意义的名称。在 @keyframes 块内,你必须为动画指定开始和结束点。使用 0% 或 from 值表示开始点,使用 100% 或 to 值表示结束点。你还可以通过在动画本身中指定它们的百分比来创建帧。这是一个简单的动画定义:

@keyframes changeBackground 
{
   from { background-color: white; }
   50% { background-color: green; }
   to {background-color: white; }
}

这里的动画只是在动画运行期间将背景从白色更改为绿色。你可以使用任何 CSS 属性来创建你的动画。
定义动画是不够的,因为它什么也不做。为了运行动画,你将使用动画属性将其设置为 DOM 元素。

动画属性

规范中指定了一组动画函数,例如 animation-nameanimation-duration。我更喜欢使用缩写的动画属性,它包括这些函数。动画属性获取 6 个不同的参数,分别是名称、持续时间、时间函数、延迟、迭代计数和方向。如果省略了持续时间,则其默认值为 0,动画将不会运行。此外,如果名称为 ‘none’ 值,则会停止正在运行的动画。这是一个在具有 animatedDiv id 的某个元素上设置动画属性的示例:

#animatedDiv
{
   animation: changeBackground 2s linear 1s infinite alternate;
}

动画将运行之前定义的动画,持续时间为 2 秒,时间函数为线性,延迟为 1 秒,无限次循环,方向为交替。

请注意,大多数浏览器都添加了带有其前缀的 CSS3 动画,因此之前的代码可能无法在所有浏览器中工作。例如,Chrome 使用 @-webkit-keyframes 规则和 –webkit-animation 属性前缀。

摘要

CSS3 动画可以帮助减少动画图像和用于简单动画的插件的使用。它定义了一个简单的动画模型,可以通过使用 @keyframes 规则定义动画并在具有动画属性的元素上使用它们来设置。

© . All rights reserved.