animation动画

animation-动画

一、概念:动画是可以设置CSS属性从某一种状态过渡到另外一种状态。

二、使用:

1、定义关键帧:

**1)**使用@keyframes规则,定义动画的关键帧

2)语法1:

/* 使用@keyframes规则定义关键帧  name是自定义名称(animation-name) */
@keyframes name {
  /* 动画初始状态 */
  from {
    transform: translateX(0%);
  }
  /* 动画结束状态 */
  to {
    transform: translateX(100%);
  }
}

语法2:

关键帧 keyframes 可以控制动画序列的中间步骤。

每个 @keyframes 规则包含多个关键帧

/* 使用@keyframes规则定义关键帧  name是自定义名称(animation-name) */
@keyframes name {
  /* 动画初始状态 */
  0% {
    transform: translateX(0%);
  }
  /* 动画中间状态(可以有多个中间状态) */ 
  50% {
    transform: translateX(50%);
  }
  /* 动画结束状态 */
  100% {
    transform: translateX(100%);
  }
}

1)每个@keyframes可以定义多个关键帧,每个关键帧有一个百分比值作为名称

@keyframes pingyi{
    0%{
        transform: translateX(0);
    }
    25%{
        transform: translateX(300px);
        color: #ffaaff;
    }
    50%{
        transform: translate(300px,300px);
        color: #00aaff;
    } 
    75%{
        transform: translate(0px,300px);
        color: #999;
    }
    100%{
        transform: translate(0px,0px);
        color: #ccc;
    }
}

2)关键帧中的属性重名,以最后一个为准:

25%{
    transform: translateX(300px);
    /* 粉色 */
    color: #ffaaff;
    /* 绿色(最终在页面显示文本为绿色)后声明color属性值会覆盖先声明的color属性值 */
    color: #00ff00;
}

3)同一个关键帧中的属性相同,后声明的属性生效:

@keyframes identifier {
  0% { top: 0; }
  /* 50% 关键帧中分别最后设置的属性 top: 10px 和 left: 20px 是有效的,但是
    其他的属性会被忽略 */
  50% { top: 30px; left: 20px; }
  50% { top: 10px; }
  100% { top: 0; }
    
}
2、引入动画:使用animation属性引入动画
常用的animation属性:
**1)animation-name属性:**指定引入动画的名称(@keframes规则声明的名称)

值可以是一个或多个(多个值使用逗号分隔);

值为none时,动画失效。

2)animation-duration属性:

**作用:**指定一个动画播放的时长。

**值:**默认值为 0s,表示无动画。单位为秒 (s) 或者毫秒 (ms),无单位值无效。

3)animation-timing-function属性:

**作用:**定义动画播放过程中的速率(节奏)

值:

i. 值为关键词:

ease(缓和匀速)

ease-in(加速)

ease-out(减速)

ease-in-out(先加速后减速)

linear (线性匀速)

step-start ( 会在动画开始的时候直接突变为该帧的最终结果

step-end(从每一帧的开始直接突变结尾效果,中间过渡的效果看不到。)

ii 值为function(函数):

**贝塞尔曲线函数:**cubic-bezier(0.1, 0.7, 1.0, 0.1);通过给定不同的x和y坐标的值来设置动画的播放速率(比如加速效果ease-in)。

以上函数中的四个参数都是0-1之间的数字。

steps()函数

**作用:**将动画或者过渡分割成段。

**语法:**steps(number, direction)

参数number代表了动画分隔的段数(例如4代表的是每一帧都会被分成4段执行) ,参数direction代表了动画方向(start和end)

start是第一帧动画结束时的状态。

end是第一帧动画开始时的状态。

frames()函数

作用:

**iii. 重复值(了解):**具有关键词的值和函数值组合(不常用) 如下:

​ animation-timing-function: ease step-start, cubic-bezier(0.1, 0.7, 1.0, 0.1);

iiii.其他值

inherit (继承)

initial (初始值)

unset(未设置)

4)animation-delay属性:

**作用:**设置动画的延时时间(动画在多长时间后开始)

**值:**值是数字,单位是秒(s)或毫秒(ms)

5)animation-iteration-count属性:

**作用:**设置动画的播放次数。

值:

数字类型的值:例如2代表播放2次;0为不播放;数字值可以为小数(如:1.5表示循环1.5遍;也就是第二次只播放动画的一半)

关键词的值:infinite(无限次的循环)

以下用法了解即可(你玩呢!用第一个值不就行了吗?绕圈圈):

/* 转来转去还是播放一次 */
animation-iteration-count: 1,2,infinite;
6)animation-direction属性:

**作用:**指示动画是否反向播放。

值:

**normal:**默认值,表示动画向前循环。

**alternate:**交替播放(正向播放,再反向播放),反向运行时,动画按步后退,同时,timing-function的值也反向,比如,ease-in 在反向时成为 ease-out。。

**reverse:**反向运行动画,每周期结束动画由尾到头运行

**alternate-reverse:**反向交替,反向开始交替。动画第一次运行时是反向的,然后下一次是正向,后面依次循环。

7)animation-fill-mode属性:

**作用:**设置动画播放完毕后的状态。

值:

**none(默认值):**无状态

**forwards:**动画的状态保持在最后一个关键帧(比如100%)的最终结果。

forwards值会受animation-direction和animation-iteration-count两个属性的影响。

backwards:动画开始立即使用第一个关键帧(取决于animation-direction属性)的值。

**both:**会遵循forwards和backwards的规则(动画开始立即使用第一关键帧的状态,并且使动画保持最后一个关键帧的效果。)

forwards和both的区别:

如果有animation-delay属性的时候,forwards属性会在animation-delay时间结束后生效;而both会忽略animation-delay属性立即生效。

8)animation-play-state:

**作用:**设置动画的播放暂停

**running:**动画正在播放。

**paused:**动画已暂停。

**应用场景:**用户在执行某一个行为的时候,修改动画的播放状态。

总结:animation简写属性:
/* @keyframes name | duration | timing-function | delay |
   iteration-count | direction | fill-mode | play-state */
animation: slidein 3s ease-in 1s 2 reverse both paused;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值