javascript - 在 if 语句中执行动画功能

标签 javascript jquery

我有一个在页面加载时加载动画的圆环图。我试图让动画在用户滚动到 div 时运行。我的 javascript 文件开头有这个代码块

$(window).scroll(function() {

    var hT = $('#token-stats').offset().top,
        hH = $('#token-stats').outerHeight(),
        wH = $(window).height(),
        wS = $(this).scrollTop();
    console.log((hT - wH), wS);
    if (wS > (hT + hH - wH)) {
        alert('pie!');
        drawDoughnutChart();
        $(window).off('scroll')
    }
});

我在 if 语句中调用了函数,但它似乎不起作用。这是我正在使用的确切代码的 fiddle https://jsfiddle.net/cmLkbq6e/

警报工作正常,我做错了什么?

最佳答案

首先您需要存储doughnutChart 相对于页面顶部的距离(以便您知道何时显示图表)

然后创建一个事件监听器,它将在用户滚动时运行。

最后,创建一个 if 语句检查当前窗口距离是否大于或等于 doughnutChart 距离,然后运行您的动画!

const doughnutChart = document.querySelector('.chart').offsetTop;

function checkScroll () {
    if (window.scrollY >= doughnutChart) {
      $("#doughnutChart").drawDoughnutChart([
        { title: "test",         value : 43,  color: "#e65c53" },
        { title: "test", value:  29,   color: "#26a3b1" },
        { title: "test",      value:  21,   color: "#19818d" },
        { title: "test",        value : 3.5,   color: "#396b7e" },
        { title: "test",        value : 3.5,   color: "#a5a5a5" }
      ]);

      // remove listener so scroll doesn't create many charts
      removeEventListener('scroll', checkScroll);
    }
}

window.addEventListener('scroll', checkScroll);

关于javascript - 在 if 语句中执行动画功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47910786/

相关文章:

javascript - 上次提交表单后 url 更改了如何返回下一个选择?

javascript - Ajax jquery 进行 Web api 调用

javascript - div 在鼠标移动时淡入,不淡出

javascript - HTML Select Text 上的 jQuery val() 优先于 Value

javascript 检查子 Node 是元素还是文本 Node

javascript - 使用 Tab 键在对话框元素内循环在 Safari 和 Chrome 中不起作用

javascript - 如何实现像facebook一样的自动url检测? (不是如何实现url提取)

javascript - 在 JavaScript 中比较类名和变量

javascript - jQuery 网络摄像头/闪光灯 : How to detect if webcam is active?

javascript - Dropzone 停在进度条上