JS с EasyPieChart и Waypoint не выполняется

У меня простой вопрос, так как я не слишком углубляюсь в 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));
        }
      });
    });
  }
});

Я не понимаю, что я сделал не так с моим сценарием. Объяснение было бы полезно для (возможно) будущих проблем.

Для всего фрагмента и всех используемых библиотек и платформ проверьте соответствующий код: https://codepen.io/toxicterror/pen/EJPjEQ

1 ответ

Решение

Путевая точка фактически срабатывает при прокрутке мимо элемента. Скорее всего, ваша ручка недостаточно высока, чтобы вы могли прокручивать ее вверх и вниз, что вызывает взаимодействие Waypoint -> EasyPieChart.

Я раздвоил твою ручку и предоставил демонстрацию, которая показывает, что твой код действительно работает: https://codepen.io/anon/pen/VOmVrJ

Я просто добавил эти строки в ваш body CSS, чтобы увидеть, что это на самом деле работает:

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

В реальной жизни вам, скорее всего, это не понадобится, поскольку вы планируете прокручивать этот контент.


РЕДАКТИРОВАТЬ:

Если вы используете offset Свойство Waypoint позволяет убедиться, что оно срабатывает как при загрузке страницы, так и при прокрутке страницы. Попробуйте использовать это так:

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

Установив его на высоту контейнера, вы убедитесь, что он полностью виден, прежде чем запускать анимацию.

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