Анимация при скролле progress bar

364
31 января 2018, 15:58

Анимация должна срабатывать, когда я скроллом дойду до нужного блока. Подскажите, как реализовать ?

var bar = new ProgressBar.Circle(container, { 
  strokeWidth: 6, 
  easing: 'easeInOut', 
  duration: 1400, 
  color: '#FFEA82', 
  trailColor: '#eee', 
  trailWidth: 1, 
  svgStyle: null 
}); 
 
bar.animate(1.0); // Number from 0.0 to 1.0
#container { 
  margin: 20px; 
  width: 200px; 
  height: 200px; 
}
<script src="https://rawgit.com/kimmobrunfeldt/progressbar.js/1.0.0/dist/progressbar.js"></script> 
<div id="container"></div>

Answer 1

var bar = new ProgressBar.Circle(container, { 
  strokeWidth: 6, 
  easing: 'easeInOut', 
  duration: 1400, 
  color: '#FFEA82', 
  trailColor: '#eee', 
  trailWidth: 1, 
  svgStyle: null 
}); 
 
// Функция, которая  
var visible = function(e) { 
  var elementTop = window.pageYOffset + e.getBoundingClientRect().top, // Получаем координаты верхней части элементы 
      windowBottom = window.pageYOffset + document.documentElement.clientHeight; // Получаем положение нижней части окна 
   
  // Если положение нижней части окна больше чем верхняя координата элемента, то мы долистали до элемента 
  // Так же проверим, не запущена ли уже анимация, а то выйдет казус в виде всё время запускающееся анимации 
  if(elementTop < windowBottom && Number(e.dataset.animationState) === 0){ 
    bar.animate(1.0); // Number from 0.0 to 1.0 
     
    e.dataset.animationState = 1; // Отмечаем, что анимация запущена 
  }; 
}; 
 
// Получаем нужный элемент 
var element = document.querySelector('#container'); 
 
// Запускаем функцию 
// Запускаем при скролле 
window.addEventListener('scroll', function() { 
  visible(element); 
}); 
 
// И сразу при загрузке страницы. Вдруг элемент уже находится в видимой области 
visible(element);
#container { 
  margin: 20px; 
  width: 200px; 
  height: 200px; 
}
<script src="https://rawgit.com/kimmobrunfeldt/progressbar.js/1.0.0/dist/progressbar.js"></script> 
 
<div id="container" data-animation-state="0"></div>

ассоциация: Как определить что элемент в зоне видимости окна браузера?

READ ALSO
Сборка html скелета из vue.js data[]

Сборка html скелета из vue.js data[]

Начал изучение vuejs, столкнулся с проблемкой: Настроил прокси, делаю запрос к API одного сайта, ответ(массив с параметрами картинок) записываю...

228
Как склеить скрипты es5 с помощью webpack

Как склеить скрипты es5 с помощью webpack

У меня есть несколько библиотек написанных на es5, то есть в них нет директив exportЧтобы подключить их к своему проекту я использую require ('

266
Выделение произвольной области на google maps

Выделение произвольной области на google maps

На гугл карте отображаю объекты (маркерами), нужно реализовать произвольное выделение мышью области и после отображение объектов только...

257
Вывод выбранных данных из select посредством ajax

Вывод выбранных данных из select посредством ajax

Есть два объекта на страницеслева select, справа поле в котором я бы хотел видеть вывод выбранных option

281