【问题标题】:Keyframe animation back to initial state关键帧动画回到初始状态
【发布时间】:2015-02-13 17:32:31
【问题描述】:

我做了一个缓慢的无限CSS3 动画。它的动画从top:0;top:40px;。错误是动画结束时,它跳转到起点。我认为它应该与easeease-in 一起跳跃,但这并没有发生。我尝试了很多来解决这个问题,但我失败了。

我需要返回转换来产生ease-in 效果。

我的代码:

span {
  margin-left: 200px;
}
/** Down Slow Animation **/

@-webkit-keyframes downSlow {
  from { top: 0px; }
  to { top: 40px; }
}
@-moz-keyframes downSlow {
  from { top: 0px; }
  to { top: 40px; }
}
@keyframes downSlow {
  from { top: 0px; }
  to { top: 40px; }
}
.down-slow {
  position: relative;
  -webkit-animation: downSlow 1.5s infinite;
  -moz-animation: downSlow 1.5s infinite;
  animation: downSlow 1.5s infinite;
  -webkit-animation-fill-mode: forwards;
  -moz-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
}
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />

<span class="down-slow"><i class="fa fa-angle-down fa-5x"></i></span>

【问题讨论】:

    标签: html css animation keyframe


    【解决方案1】:

    这只是一种替代解决方案

    只需在animation 的末尾添加alternate 即可。

    span {
      margin-left: 200px;
    }
    /** Down Slow Animation **/
    
    @-webkit-keyframes downSlow {
      from { top: 0px; }
      to { top: 40px; }
    }
    @-moz-keyframes downSlow {
      from { top: 0px; }
      to { top: 40px; }
    }
    @keyframes downSlow {
      from { top: 0px; }
      to { top: 40px; }
    }
    .down-slow {
      position: relative;
      -webkit-animation: downSlow 1.5s infinite alternate;
      -moz-animation: downSlow 1.5s infinite alternate;
      animation: downSlow 1.5s infinite alternate;
    }
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
    
    <span class="down-slow"><i class="fa fa-angle-down fa-5x"></i></span>

    同样的代码可以简化为

    span {
      margin-left: 200px;
      top: 0px;
    }
    
    @-webkit-keyframes downSlow {
      to { top: 40px; }
    }
    @-moz-keyframes downSlow {
      to { top: 40px; }
    }
    @keyframes downSlow {
      to { top: 40px; }
    }
    .down-slow {
      position: relative;
      
      -webkit-animation: downSlow 1.5s infinite alternate;
      -moz-animation: downSlow 1.5s infinite alternate;
      animation: downSlow 1.5s infinite alternate;
    }
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
    
    <span class="down-slow"><i class="fa fa-angle-down fa-5x"></i></span>

    更好的方法是使用translate,这样您的元素就不会干扰其他 DOM 元素

    span {
      margin-left: 200px;
    }
    
    @-webkit-keyframes downSlow {
      to { transform: translateY(40px) }
    }
    @-moz-keyframes downSlow {
      to { transform: translateY(40px) }
    }
    @keyframes downSlow {
      to { transform: translateY(40px) }
    }
    .down-slow {
      position: relative;
    
      -webkit-animation: downSlow 1.5s infinite alternate;
      -moz-animation: downSlow 1.5s infinite alternate;
      animation: downSlow 1.5s infinite alternate;
    }
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
    
    <span class="down-slow"><i class="fa fa-angle-down fa-5x"></i></span>

    但是你可以再次使用prefixfree frind a cdn here 来减少这种情况

    span {
      margin-left: 200px;
    }
    
    @keyframes downSlow {
      to { transform: translateY(40px) }
    }
    .down-slow {
      position: relative;
      animation: downSlow 1.5s infinite alternate;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
    
    <span class="down-slow"><i class="fa fa-angle-down fa-5x"></i></span>

    最后设定速度/2

    span {
      margin-left: 200px;
    }
    
    @keyframes downSlow {
      to { transform: translateY(40px) }
    }
    .down-slow {
      position: relative;
      animation: downSlow .7s infinite alternate forwards;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
    
    <span class="down-slow"><i class="fa fa-angle-down fa-5x"></i></span>

    参考号:animation-fill-mode

    【讨论】:

    • 不错的选择! +1
    • 赞成建议 alternatetranslate 提高性能。
    猜你喜欢
    • 2016-02-07
    • 2018-01-09
    • 2015-10-09
    • 1970-01-01
    • 2013-03-15
    • 2017-10-08
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    相关资源
    最近更新 更多