欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

css3 动画(@keyframes)

程序员文章站 2022-03-16 18:57:28
...

[email protected]

1.要创建CSS3动画,你将不得不了解@keyframes规则。
@keyframes规则是创建动画。 @keyframes规则内指定一个CSS样式和动画将逐步从目前的样式更改为新的样式。

使用规则:

  • 当在 @keyframes 创建动画,把它绑定到一个选择器,否则动画不会有任何效果。
  • 指定至少这两个CSS3的动画属性绑定向一个选择:
  • 规定动画的名称
  • 规定动画的时长

形式如下:
需要规定动画 animation :动画名称 时长;
@keyframes myfirst{
form{background:red;}
to {background:blue;}
}

<style>/*放在选择器中*/
div{
    width:100px;
    height:100px;
    background:red;
    animation:myfirst 5s;/*历时5秒达到所有的变换效果*/
@keyframes myfirst{
    from {background:red;}/*变换效果从背景红色,变浅直到逐渐变成黄色*/
    to {background:yellow;}
}
</style>

注意: 您必须定义动画的名称和动画的持续时间。如果省略的持续时间,动画将无法运行,因为默认值是0。
例如:animation:myfirst 5s; 动画名字是myfirst ,持续时间是5秒。

2.或用关键词 "from" 和 "to",等同于 0% 和 100%,为了得到浏览器支持,需要 规定0%和100%。好处 ,不需要另规定时长。

形式如下:
@keyframes myfirst{
0% background:red;/
开始是红色
/
50% background:blue;/时间到百分之50,变为蓝色/
100% background:green;/最终变成绿色/
}**
**综合属性动画:

<style> 
div
{
    width:100px;
    height:100px;
    background:red;
    position:relative;/*位置是相对的*/
    animation-name:myfirst;/*动画名称*/
    animation-duration:5s;/*动画持续时间*/
    animation-timing-function:linear;/*规定动画的速度曲线*/
    animation-delay:2s;/*动画延迟2s开始*/
    animation-iteration-count:infinite;/*动画播放次数:无限次,默认是1次*/
    animation-direction:alternate;/*规定动画是否在下一周期逆向地播放。默认是 "normal"。alternate:交替的*/
    animation-play-state:running;/*规定动画是否正在运行或暂停。默认是 "running"。*/
}
​
@keyframes myfirst
{
    0%   {background:red; left:0px; top:0px;}/*开始时,左上角*/
    25%  {background:yellow; left:200px; top:0px;}/*向右远离left 200px,沿着顶部,若增大 直接向右下角运动*/
    50%  {background:blue; left:200px; top:200px;}/*向右远离left 200px ,向下运动*/
    75%  {background:green; left:0px; top:200px;}/*向左做运动,靠近 left*/
    100% {background:red; left:0px; top:0px;}/*向上做运动,靠近顶端*/
}
</style>
</head>
<body>
<div></div>
​</body>

上例中 最后效果,一个方块沿着上下左右,来回运动。
先顺时针一周后,逆时针一周,循环运动。
简化:

<style> 
div{
    width:100px;
    height:100px;
    background:red;
    position:relative;/*位置相对的*/
    animation:myfirst 5s linear 2s infinite alternate;/*动画设置:名称:myfirst,
动画时间:5s  ,曲线运动,无限循环,交替播放动画*/
}
@keyframes myfirst
{
    0%   {background:red; left:0px; top:0px;}
    25%  {background:yellow; left:200px; top:0px;}
    50%  {background:blue; left:200px; top:200px;}
    75%  {background:green; left:0px; top:200px;}
    100% {background:red; left:0px; top:0px;}
}
</style>
</head>
<body>
<div></div>
</body>