1
時々jsから調整する必要があるカウントダウンバーを作成しています。 currentTimeを直接設定することはあまりにも激しいです - 私は新しい価値に移行したいと思います。私はplaybackRateを悪用して新しい場所にすばやくジャンプする作業プロトタイプを持っていますが、それはハッキーであり、イージングのような見事な動きは許されません。同様の効果を得るためのよりよい方法はありますか?調整がスムーズになったCSSプログレスバー
https://jsfiddle.net/isaacly/byac2gqe
var totalClockMs = 6000; // set this to "total" clock time.
var transitionMs = 100;
var anim = document.getElementsByClassName("progress")[0].animate(
[
{ transform: 'scaleX(1)' },
{ transform: 'scaleX(0)' }
], {
duration: totalClockMs,
fill: "both"
}
);
anim.pause();
var i = 1;
var desired;
var callback;
var callbackFn;
$('#change').click(function() {
if (i++ % 2 === 0) {
anim.pause();
var current = anim.currentTime;
// Example of setting bar after move finishes, in this case adding 500ms.
anim.playbackRate = -500/transitionMs;
anim.play();
callbackFn =() => {
//console.log(current - 500 - anim.currentTime);
callback = undefined;
anim.pause();
anim.currentTime = current - 500;
anim.playbackRate = 1;
};
callback = setTimeout(callbackFn, transitionMs);
} else {
if (callback !== undefined) {
clearTimeout(callback);
callbackFn();
}
anim.play();
}
});
.progress-bar {
height: 10px;
background-color: #e5e9eb;
}
.progress {
background-color: #90ee90;
height: 100%;
transform-origin: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="progress-bar">
<div class="progress">
</div>
</div>
<br />
<button id="change">Pause/Play</button>
私はバーが一時停止している間、それはアプリケーションのために必要なの時間を調整する必要があります。だから問題はそれをスムーズに調整する方法です。 – Isaac
@Isaacだから、アニメーションの速度を変えたいのですか?おそらく私はよく質問を理解していない –
ええ私は時々調整を加える必要があり、それは新しい値に高速アニメーションをしたい。問題は、新しい値に高速アニメーションを作成する方法です。しかし、jsfiddleは十分にうまくいくようです。より良い方法があるかどうかはわかりません。アニメーションがアクティブなときにトランジションプロップは無視されます。 – Isaac