2015-01-06 2 views
1

Если я использую свойство showAnimateWin offsetHeight, работа анимации. exampleОшибка анимации перехода

function end() { 

    var top = (window.innerHeight - win.clientHeight)/2, 
     left = (window.innerWidth - win.clientWidth)/2; 

    win.style.top = top + "px"; 
    win.style.left = left + "px"; 
} 

function showAnimateWin() { 
     win.offsetHeight ;//here 

     win.classList.add("modal-window-animate"); 
     end(); 
}; 

Если я извлекал win.offsetHeight, анимация работы только один раз. example

function showAnimateWin() { 
     win.classList.add("modal-window-animate"); 
     end(); 
}; 

Почему не будет работать без win.offsetHeight?

ответ

1

Причина, вероятно, связана с тем, что win.offsetHeight; заставляет метод ждать несколько миллисекунд, прежде чем переход может начать снова. Если вы положите alert(1); вместо win.offsetHeight;, он все равно будет работать. Вам нужно дождаться завершения перехода до начала новой анимации.

UPDATE: Fiddle Link

Это должно работать без каких-либо задержек (проверьте скрипку):

window.setTimeout(function() { 
     showAnimateWin(); 
    }, 25); 
+1

Лучшим вариантом является просто вызвать 'конец()' 'Перед win.classList.add (» modal-window-animate ");' – Rhumborl

+0

Я использовал setTimeout (end, 0); но не работал, почему? [ссылка] http://jsfiddle.net/p2wozc8a/7/ –

+0

@Rhumborl ничего себе, это работа, но почему? –

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