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() {
...
Установив его на высоту контейнера, вы убедитесь, что он полностью виден, прежде чем запускать анимацию.