2016-05-20 4 views
1

GSAPを使用して、対応するボタンによってトリガーされた要素をアニメーション化しようとしました。アニメーション自体は機能しますが、対応する要素を明らかにするのではなく、すべてを明らかにします。私はあなたがTweenMaxでそれを行うことができ、TimelineMaxを使用する必要はありませんworking codepen hereタブ付きメニューでGSAPアニメーションが機能しない

var trigger = ".trigger"; 
var recipient = ".target"; 
var animation = new TimelineMax({reversed:true, paused:true}); 



$(trigger).click(function(e) { 
    e.stopPropagation(); 
    recipient = '#' + $(this).attr('data-target-id'); 
    if($(trigger).hasClass("active")){ 
    $(trigger).not(this).removeClass("active"); 
    } 

    if($(".target").hasClass("open")){ 
    $not_recipient = $(".target").not(recipient); 
    $(".target").not(recipient).removeClass("open"); 
    } 

    $(this).toggleClass("active"); 
    $(recipient).toggleClass("open"); 

    animation.fromTo(recipient, .3, {display:'none', y:'-100%', autoAlpha:0},{display:'block',y:'0%', autoAlpha:1, ease:Power1.easeOut}); 
    animation.reversed() ? animation.play() : animation.reverse(); 
}); 
+0

はこのような何か:** [codepen](http://codepen.io/tah_med/pen/NNZYyW?editors=0010)**? –

答えて

0

を添付しました。

更新JS

var trigger = ".trigger"; 
var recipient = ".target"; 
var animation; 


$(trigger).click(function(e) { 
    e.stopPropagation(); 
    if(! $(this).hasClass('active')){ 
     var parentElm = $(this).parent(); 
     var targetChild = parentElm.find(recipient); 

     $(trigger).removeClass('active'); 
     $(recipient).removeClass('open'); 

     $(this).addClass('active'); 
     targetChild.addClass('open'); 

     if(animation){ 
      animation.reverse(); 
     } 
     animation = TweenMax.fromTo(targetChild, .3, {display:'none', y:'-100%', autoAlpha:0},{display:'block',y:'0%', autoAlpha:1, ease:Power1.easeOut}); 

    } 

}); 

Updated Demo

+0

基本的な機能はありますが、クリックトグルクラスがある理由は、ユーザーがトリガーを再び押すと要素が逆転するためです。 また、構造上の理由から、htmlは非常に厳密に編成されています。あなたのコードがいくつかの要素を移動させました。 – Modermo

+0

OPはTimelineMaxを使用したので、クリックごとに新しいトゥイーンを作成する必要はありませんでした。 GSAPでは、イベントハンドラの外部でタイムラインを作成する方がよいでしょう。そして、アニメーションを単に再生()および反転()するだけです。この方法では、パフォーマンスとGCに役立つクリックごとに不要な新しいトゥイーンを作成することはありません。 :) –

関連する問題