CSS 动画一站式指南( 四 )

  • infinite :无限次
  • 6)animation-direction:轮流反向播放(播放次数为一次则该属性无效果)
    • normal :正常播放( 默认 )
    • alternate :轮流反向播放,奇数次数正常播放,偶数次数反向播放
    7)animation-play-state:播放状态
    • running :正在播放( 默认 )
    • paused :暂停播放
    8)animation-fill-mode:播放前后其效果是否可见
    • none :不改变默认行为( 默认 )
    • backwards :在时延所指定时间内或在动画开始前应用开始属性( 在第一个关键帧中定义 )
    • forwards :在动画结束后保持最后一个属性( 在最后一个关键帧中定义 )
    • both :向前和向后填充模式都被应用
    CSS 中动画分为两种,关键帧动画和逐帧动画 。关键帧动画是将人为定义好的每一帧的状态串联成一个动画,需要通过animation@keyframes声明 。逐帧动画的声明较为简单,使用一张逐帧长图然后配合animation-timing-function: steps()来完成 。
    逐帧动画的声明步骤一般如下:
    • 准备一张 逐帧长图 ,该图像包含动画效果的每一帧且每帧宽高必须一致
    • steps() 里声明逐帧长图及其展示方式
    • 在指定节点中声明 animation 调用动画
    关键帧动画的声明步骤一般如下:
    • @keyframes 里声明动画名称和动画每个关键帧的状态
    • 在指定节点中声明 animation 调用动画
    关键帧动画声明示例:
    @keyframes animation-name {from {}to {}}/* 或 */@keyframes animation-name {p1 {}p2 {}p3 {}}关键帧的取值必须是 fromtoPercentagefrom可用0%代替, to可用 100%代替,若开始或结束的关键帧无对应的状态,可不用声明 fromto0%%不能省略,否则关键帧解析会失败 。通过animation-fill-mode属性设置动画结束后的样式 。
    1.3.2 Animation 动画实践1)自动打字器
    很多在线编辑器网站都有一些自动打字的效果,例如CodePen 。很多同学都以为是JS实现的效果,其实查看 Chrome Devtools发现是纯CSS实现的 。观察多几次自动打字器,可发现其存在以下特点 。
    • 字体都是等宽字体,等宽字体可保证每次打字时光标的移动距离都是一致的
    • 打字器的宽度由最初的 0px 逐渐增加内容后变成最终固定字数的宽度,宽度以等宽字体的个数为准
    • 光标随着每打一个字就闪烁一次,打字速度均匀,打字完毕再次重复打字
    • 整个打字过程存在两个动画,一个是打字器自增宽度,一个是光标闪烁
    • 整个打字过程一闪一闪地完成,根据其断断续续的特点可判断该动画为逐帧动画
    这里用 CSS 简单实现了一个自动打字器,在线源码和演示 。
    2. CSS 动画综合实践(太空舱)2.1 太空舱动画介绍先简单介绍一下这个动画的一些背景: