当用户滚动并到达 div 时使数字动画

Jor*_*rge 1 html javascript jquery counter jquery-animate

我有一个完美的简单 jQuery 代码(我想保留)。问题是这个动画在页面下面的一个部分中,它在页面加载时开始运行。我需要这个动画(数字从 0 开始并运行直到我放入 div 的数字)仅在用户滚动并到达该 div 时发生。我在谷歌和 StackOverflow 上搜索,但我发现的解决方案不起作用或需要插件(我不想使用)。

这是我目前拥有的演示代码:https : //jsfiddle.net/aj7Lk2bw/2/

jQuery 是:

    $('.value').each(function () {
    $(this).prop('Counter',0).animate({
        Counter: $(this).text()
    }, {
        duration: 4000,
        easing: 'swing',
        step: function (now) {
            $(this).text(Math.ceil(now));
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

Zé *_*dio 7

看看这是否是你想要的:https : //jsfiddle.net/aj7Lk2bw/19/

$(window).scroll(testScroll);
var viewed = false;

function isScrolledIntoView(elem) {
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

function testScroll() {
  if (isScrolledIntoView($(".numbers")) && !viewed) {
      viewed = true;
      $('.value').each(function () {
      $(this).prop('Counter',0).animate({
          Counter: $(this).text()
      }, {
          duration: 4000,
          easing: 'swing',
          step: function (now) {
              $(this).text(Math.ceil(now));
          }
      });
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

在这里找到了这样做的方法:当 div 在浏览器窗口中可见时运行脚本