设置或禁用初始动画

Setting or disabling initial animation

我在页面上设置了一个 Counter 并需要它从一个特定的值开始然后倒计时,但是 FlipClock.js 坚持做一个初始动画,似乎每当一个数字开始时0,它以 9 开始,然后翻转到 0,在我的上下文中它看起来很愚蠢:

例如,当您这样做时:

clock = new FlipClock($('.clock'), 20, {
    clockFace: 'Counter'
});

它最初会显示为19,然后向上翻转为20,因为我打算倒数,所以看起来很奇怪。从视觉上看,它是:

19, 20, 19, 18, 17, 16, ...

这很刺耳。看起来要往上数,反倒是往下数。有没有办法让它那样做?

示例:

请注意,这是库的旧版本 (0.7.8),而不是最新版本 (0.8.0),它的行为略有不同。它不是从 19 翻转到 20,而是从 20 翻转到 20,这看起来仍然很奇怪,而且动画在这个版本中看起来更糟糕,但它证明了问题:

clock = new FlipClock($('.clock'), 20, {
  clockFace: 'Counter',
  countdown: true
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.js"></script>
<div class="clock"></div>

http://flipclockjs.com/faces/counter说你需要给自己减1

var clock = new FlipClock($('.clock'), 20, {
  clockFace: 'Counter'
});
setTimeout(function() {
  $(".wrap").show();
  setInterval(function() {
    clock.decrement();
  }, 1000);
},1000);
.wrap { display:none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.js"></script>
<br/>
<div class="wrap">
  <div class="clock"></div>
</div>  

所以我绕过这个问题的老办法是在 div 元素上设置一个 class:

.wrapTimer {
    height: 0px;
    overflow:hidden;
}

然后只有当我准备好让时钟开始倒计时时,我才删除 class 导致计时器出现已经显示 20。简单地隐藏和显示元素不起作用,因为它赢了在它可见之前不要设置动画。

这至少在 Chrome 有效,YMMV。