语法
@keyframes animationname {keyframes-selector {css-styles;}}
关键帧选择器
关键帧声明块包括 CSS 属性及其值。
关键帧选择器可以以百分比 (%) 或者关键字“from”(与 0% 相同)和“to”(与 100% 相同)开头。
0% 是动画的起点,100% 是终点。
@keyframes at-rule 是关键帧动画的基础,用于为许多 CSS 属性设置动画(逐渐从一种样式更改为另一种样式)。
此规则允许通过沿动画序列定义关键帧(或者航路点)的样式来指定动画期间特定时刻应发生的事情。
@keyframes 是 CSS3 属性之一。
@keyframes 规则及其标识符后跟一个规则集(即带有选择器和声明块的样式规则,就像在普通 CSS 代码中一样)由花括号分隔。
动画序列中的关键帧
在花括号中,放置了关键帧选择器,它定义了应该更改样式时动画序列中的关键帧。
在动画序列期间,可以多次更改 CSS 样式集。
可接受的前缀
主流浏览器完全支持@keyframes 规则。
但是,对于某些前缀使用:
- -webkit- 谷歌浏览器 4.0
- -moz- Mozilla Firefox 5.0
- -webkit- Safari 4.0
- -webkit- Opera 15.0
- -o- Opera 12.0
CSS @keyframes 规则属性值说明
值 | 描述 |
---|---|
animationname | 指定动画的名称。此值是必需的。 |
keyframes-selector | 指定动画持续时间的百分比。值为:0-100%(与0%相同)(与100%相同)此值是必需的。 |
css-styles | CSS样式属性。此值是必需的。 |
initial | 使属性使用其默认值。 |
inherit | 从父母元素继承属性。 |
@keyframes 作为关键字
@keyframes 规则由一个关键字“@keyframes”和一个标识符(由开发人员选择)组成,该标识符定义了动画。
要将动画绑定到某个元素,此标识符称为 animation-name 属性的值。
这是它的样子:
/* define the animation */ @keyframes your-animation-name { /* style rules */ } /* apply it to an element */ .element { animation-name: your-animation-name; /* OR using the animation shorthand property */ animation: your-animation-name 1s …; }
带有 background-color 属性的 @keyframes 规则示例:
<!DOCTYPE html> <html> <head> <title>Title of the document</title> <style> .element { padding: 50px; animation: backgrounds 4s infinite; } @keyframes backgrounds { 0% { background-color: #8ebf42 } 50% { background-color: #1c87c9; } 100% { background-color: #cccccc; } } </style> </head> <body> <h2>@keyframes example</h2> <div class="element">The background of this text is animated.</div> </body> </html>
在这个例子中,我们为 background-color 属性设置动画。
首先,我们为动画弹跳设置一个标识符。
然后我们将关键帧选择器设置为 0%、50% 和 100%,并为属性 green、blue 和 grey 定义值。
这意味着起点 (0%) 的背景颜色将是浅绿色,直到到达另一个关键帧 (50%)。
在动画序列的中间,背景将变为浅蓝色(从 50%-100%),在端点 (100%) 将变为灰色。
@keyframes 示例:
<!DOCTYPE html> <html> <head> <title>Title of the document</title> <style> div { width: 10px; height: 100px; background: red; border-radius: 50%; position: relative; -webkit-animation: element 4s infinite; animation: element 4s infinite; } @-webkit-keyframes element { 0% { top: 0px; background: #1c87c9; width: 100px; } 100% { top: 200px; background: #8ebf42; width: 150px; } } @keyframes element { 0% { top: 0px; background: #1c87c9; width: 100px; } 100% { top: 200px; background: #8ebf42; width: 150px; } } </style> </head> <body> <h2>@keyframes rule example</h2> <div></div> </body> </html>
使用@keyframes 制作下落图像的示例:
<!DOCTYPE html> <html> <head> <title>Title of the document</title> <style> html, body { height: 90%; } .container { margin: 30px auto; min-width: 320px; max-width: 600px; height: 90%; overflow: hidden; } img { -webkit-transform-oroirn: left center; -ms-transform-oroirn: left center; transform-oroirn: left center; -webkit-animation: fall 5s infinite; animation: fall 5s infinite; } @-webkit-keyframes fall { from { -webkit-transform: rotate(0) translateX(0); transform: rotate(0) translateX(0); opacity: 1; } to { -webkit-transform: rotate(90deg) translateX(200px); transform: rotate(90deg) translateX(200px); opacity: 0.1; } } @keyframes fall { from { -webkit-transform: rotate(0) translateX(0); transform: rotate(0) translateX(0); opacity: 1; } to { -webkit-transform: rotate(90deg) translateX(200px); transform: rotate(90deg) translateX(200px); opacity: 0.1; } } </style> </head> <body> <h2>@keyframes example</h2> <div class="container"> <img src="/onitroad.png" alt="onitroad" width="150" height="50" /> </div> </body> </html>
日期:2020-06-02 22:14:36 来源:oir作者:oir