2017-01-02 127 views
2

我试图旋转一个固定的图像与fullpage.js同步,它大部分的作品。两个if语句。两者都有效。只有一个打印

为了防止不必要的旋转,我必须堆叠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); 
     } 
    } 
    }); 
}); 

第一个if语句完美地工作。第二个给出我想要的警报,但不打印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)'}); “如果两方面的话都会以某种方式混淆视听。 extctly, –