Показать сообщение отдельно
  #19 (permalink)  
Старый 22.10.2019, 19:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Lefseq,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>

<body>
<div class="num"></div>
<script>
let nums = [0, 1249, 1327, 1632];// до какого числа анимировать
let secs = [0, 3, 5, 9];//сколько времени будет длится анимация
let pause = [5, 10, 15, 0 ]; //пауза, после которой, запустится следущаяя анимация
const elem = document.querySelector('.num');
const anim = (i, r) => {
  let d = performance.now(),
  from = +elem.textContent,
  to = nums[i],
  duration = secs[i] * 1000;
  requestAnimationFrame( function e(b) {
  b = (b - d) / duration;
  1 <= b && (b = 1);
  let c = from + (to - from) * b | 0;
  elem.innerHTML = c;
  b == 1 && setTimeout(r,pause[i] * 1000);
  1 > b && requestAnimationFrame(e)
})
}
const delay = i => new Promise(r => anim(i, r));

(async () => {
	for (let i = 0; i < secs.length; i++) {
	    await delay(i);
	}
})();



</script>
</body>
</html>
Ответить с цитированием