Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   WTF???? Проблема с анимацией (https://javascript.ru/forum/offtopic/52776-wtf-problema-s-animaciejj.html)

cyber 06.01.2015 14:14

WTF???? Проблема с анимацией
 
Возможно я упоротный, но какое то хрень творится.

Есть функция, которая отвечает за добаление класса и вызов другой функции которая установит координаты ( переменные top и left не используются ), все хорошо анимация работает.

пруф

function showAnimateWin( ) {
        var top = ( window.innerHeight - win.offsetHeight ) / 2,
            left = ( window.innerWidth - win.offsetWidth ) / 2;

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

        setTimeout( function (){
             end();
        }, 0);

    };



Но, если сделать так (Просто убрать не используемые переменные), то не анимация не работает, точнее работает, но только 1 раз...
пруф

function showAnimateWin( ) {
        //var top = ( window.innerHeight - win.offsetHeight ) / 2,
         //   left = ( window.innerWidth - win.offsetWidth ) / 2;

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

        setTimeout( function (){
             end();
        }, 0);

    };



Какого фига?

cyber 06.01.2015 14:40

Да ну бред какой то, так тоже работает анимация
Достаточно просто получить win.offsetHeight

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

        setTimeout( function (){
             end();
        }, 0);

    };


Что за наркомания..

ruslan_mart 06.01.2015 15:06

cyber, потому что при получении offsetHeight перерисовывается страничка, поэтому работает. Это такой хак. И setTimeout тут не нужен.

Я сам так делаю:

var elem = document.createElement('div');
elem.className = 'transition';
document.body.appendChild(elem);
elem.clientHeight; //HACK - без него анимации не будет
elem.classList.add('show');

cyber 06.01.2015 15:06

Ruslan_xDD, ну так оно должно и без него работать..
Мне больше интересно почему без него не работает

cyber 06.01.2015 15:40

Ппц короче, так работает

function showAnimateWin( ) {

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

    };


http://jsfiddle.net/p2wozc8a/9/

Подсказали на stackoverflow , на вопрос почему получил ответ
Цитата:

@cyber_ua unfortunately to be honest I have no idea :)

рони 06.01.2015 15:52

cyber,
http://javascript.ru/forum/misc/5169...tml#post341462

cyber 06.01.2015 15:57

рони, хм, по сути если я перемещаю окно, а потом добавляю transition то окно должно переместится без анимации, но на практике она работает...

cyber 06.01.2015 16:01

рони, что можно почитать на эту тему, про то как работает css анимация?

рони 06.01.2015 16:38

cyber,
по теме ничего не могу добавить

Malleys 06.01.2015 17:18

Цитата:

Сообщение от cyber
что можно почитать на эту тему, про то как работает css анимация?

Читать можно тут, тут и тут


Часовой пояс GMT +3, время: 06:18.