Нелинейная "анимация" числового значения с помощью JavaScript/jQuery

Я хочу сделать анимацию, подобную этой, в Google Analytics для активных пользователей.

Счетчик аналитики


Я видел несколько скриптов, которые делают анимацию, но они делают это в линейном режиме, например, скорость одинакова от 0 до XXX, я хочу, чтобы он начинался медленно, набирал скорость и снова медленно заканчивал.

Как бы я сделал это в javascript/jquery?


По просьбе, что я пытался:

<span id="counter">0</span>    

$(function ()
{
    var $counter = $('#counter'),
        startVal = $counter.text(),
        currentVal,
        endVal = 250;


    currentVal = startVal;
    var i = setInterval(function ()
    {
        if (currentVal === endVal)
        {
            clearInterval(i);
        }
        else
        {
            currentVal++;
            $counter.text(currentVal);
        }
    }, 100);


});

Но я не думаю, что это путь...

1 ответ

Решение

Для этого я бы использовал встроенную анимацию jQuery.

Если вы передаете функцию step вариант для .animate(), он будет срабатывать для каждого тика во время анимации. Таким образом, jQuery справится со всем упрощением, а не с вами. Вам просто нужно обработать данные.

$({countValue:0}).animate(
    {countValue:346},
    {
        duration: 5000, /* time for animation in milliseconds */
        step: function (value) { /* fired every "frame" */
            console.log(value);
        }
    }
);

В консоли вы увидите значения от 0 до 346, дополненные замедлением.

Другие вопросы по тегам