3

我有一个简单的问题,因为我不想深入研究 JS 编码。

以下代码片段有什么问题,为什么它没有按预期执行。(-> 图表一出现就加载)

var waypoint  = new Waypoint({
  element: document.querySelector("#chartcontainer"),
  handler: function() {
    $(".chart").easyPieChart({
      scaleColor: false,
      lineWidth: 20,
      lineCap: "butt",
      barColor: "#9b0000",
      trackColor: "#ecf0f1",
      size: 160,
      animate: 1500
    });
    $(".count").each(function() {
      var $this = $(this);
      $({ Counter: 0 }).animate({ 
        Counter: $this.text() 
      },{
        duration: 1500,
        easing: "swing",
        step: function() {
          $this.text(Math.ceil(this.Counter));
        }
      });
    });
  }
});

我不明白我的脚本做错了什么。解释将有助于(也许)未来的问题。

对于整个片段和所有使用的库和框架,请查看相应的 codepen: https ://codepen.io/toxicterror/pen/EJPjEQ

4

1 回答 1

1

当您滚动经过一个元素时,Waypoint 实际上会触发。您的笔很可能不够高,无法上下滚动,因此会触发 Waypoint -> EasyPieChart 交互。

我分叉了你的笔并提供了一个演示,表明你的代码确实有效: https ://codepen.io/anon/pen/VOmVrJ

我只是将这些行添加到您的bodyCSS 中以查看它是否确实有效:

  min-height:10000px;
  overflow-y:scroll;

在现实生活场景中,您很可能不需要它,因为您计划滚动浏览此内容。


编辑 :

如果您使用offsetWaypoint 的属性,您实际上可以确保它在页面加载和页面滚动时都被触发。尝试像这样使用它:

var waypoint  = new Waypoint({
  element: document.querySelector("#chartcontainer"),
  offset: $("#chartcontainer").height(),
  handler: function() {
    ...

通过将其设置为容器的高度,您可以确保在触发动画之前它完全可见。

于 2019-05-14T14:21:13.213 回答