2015-12-12 2 views
0

Я использую прогресс навыков на своем сайте. Это круговой индикатор выполнения. У него небольшая анимация при загрузке, эффект подобен заполнению границы. но анимация запускается сразу же при загрузке страницы. Я хочу сделать способ, если я перейду к этому разделу только тогда, когда будет запущена анимация.Загрузить анимацию, когда я вхожу в раздел

Я использую плагин circliful для индикатора выполнения.

enter image description here

ответ

1

Вы должны инициализировать анимацию, если элемент находится в окне просмотра. Проверьте функцию isElementInViewport на прокрутке окна.

Sample JS

function isElementInViewport (el) { 

    //special bonus for those using jQuery 
    if (typeof jQuery === "function" && el instanceof jQuery) { 
     el = el[0]; 
    } 

    var rect = el.getBoundingClientRect(); 

    return (
     rect.top >= 0 && 
     rect.left >= 0 && 
     rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */ 
     rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */ 
    ); 

} 

var isAnimated = false; 
window.onscroll = function(){ 
    if(isElementInViewport($('#myStat')) && !isAnimated){ 
     $('#myStat').circliful(); 
     isAnimated = true; 
    } 
} 

How to tell if a DOM element is visible in the current viewport?

+0

Это работает, но клонируется каждый прогресс бар в 3 раза. Какова причина? Спасибо – user3396867

+0

вам нужно проверить, что элемент уже анимирован или нет. if only not then run '$ ('# myStat'). circliful();' –

+0

Как я могу проверить, анимирован ли он или сейчас. класс элемента - .circlestat. с вашим, если я прокручиваю по этой области. .circlestat клонирует несколько раз. спасибо – user3396867

Смежные вопросы