2017-01-02 6 views
2

Я пытаюсь повернуть фиксированное изображение в синхронизации с fullpage.js, и он работает по большей части.Два заявления. Оба работают. Только одна печать

Во избежание нежелательного вращения мне необходимо уложить значения css rotate().

Это работает, когда я прокручиваю вниз и укладывает, как я хотел (т.е.. 180, 360, 540, ..)

Это не работает, когда я прокрутки вверх.

Я попытался использовать оповещения, чтобы определить, выполняется ли вычисление, кажется, что проблема не связана с укладкой, но прокрутка части кода просто не печатается в документе HTML.

Это мой код;

var rotation = 0, 
    rotationInc = 180, 
    miniLogo = $('#mini-logo'); 

$(document).ready(function() { 
    $('#home').fullpage({ 
    verticalCentered: false, 
    scrollingSpeed: 300, 
    onLeave: function (index, nextIndex, direction) { 
     if (direction == 'down') { 
     rotation += rotationInc; 

     setTimeout(function() { 
      miniLogo.addClass('enlarge'); 
     }, 400); 

     miniLogo.each(function() { 
      alert(rotation); 
     }); 

     setTimeout(function() { 
      miniLogo.css({ 
      'transform': 'rotate(' + rotation + 'deg)' 
      }); 
     }, 800); 

     setTimeout(function() { 
      miniLogo.removeClass('enlarge'); 
     }, 1200); 
     } 

     if (direction == 'up') { 
     rotation -= rotationInc; 

     setTimeout(function() { 
      miniLogo.addClass('enlarge'); 
     }, 400); 

     miniLogo.each(function() { 
      alert(rotation); 
     }); 

     setTimeout(function() { 
      miniLogo.css({ 
      'transform': 'rotate(' + rotation + 'deg);' 
      }); 
     }, 800); 

     setTimeout(function() { 
      miniLogo.removeClass('enlarge'); 
     }, 1200); 
     } 
    } 
    }); 
}); 

Первое, если заявление работает отлично. Второй дает предупреждение, которое я хотел, но не печатал уменьшенную степень на html.

Любая помощь была бы очень признательна, я уверен, что совершил ошибку новобранец.

ответ

2

Попробуйте это:

rotation = 0; 
rotationInc = 180; 
miniLogo = $('#mini-logo'); 

$(document).ready(function() { 
    $('#home').fullpage({ 
    verticalCentered: false, 
    scrollingSpeed: 300, 
    onLeave: function (index, nextIndex, direction) { 

    var rotation = (direction == 'down') 
     ? rotation += rotationInc 
     : rotation -= rotationInc; 

     setTimeout(function() { 
      miniLogo.addClass('enlarge'); 
     }, 400); 

     miniLogo.each(function() { 
      alert(rotation); 
     }); 

     setTimeout(function() { 
      miniLogo.css({ 
      'transform': 'rotate(' + rotation + 'deg)' 
      }); 
     }, 800); 

     setTimeout(function() { 
      miniLogo.removeClass('enlarge'); 
     }, 1200); 
     } 
    } 
    }); 
}); 
+0

Можете ли вы объяснить, где ошибка? Это просто поворот угла или что-то еще? – shiri

+1

@Kevorkian Это было то, что я пробовал в первую очередь. Степень вращения необходимо складывать вверх и вниз, чтобы добиться анимации вращения каждый раз, когда направление передается из 'fullpage.js', потому что есть много слайдов/секций. Ваш код только анимирует один раз при прокрутке вниз, а затем прекращает анимацию, также он падает с «180deg' до« -180deg », заставляя его оживлять целую« 360deg »при прокрутке вверх. –

+1

@shiri Ошибка при прокрутке вверх не обновляет встроенный css, что не приводит к анимации. Помимо этого он ведет себя так, как я хотел, я предполагаю, что у вас есть 'miniLogo.css ({'transform': 'rotate (' + rotation + 'deg)'}); 'в обоих случаях, если заявления каким-то образом испортили его. –