2016-07-04 3 views
0

ポイントに達すると、ブラウザはアニメーションを同時に再生します。それは私が望むものではありません。ブラウザは、すべてのアニメーションを分離して再生する必要があります。jQuery、要素が画面上にあるときにアニメーションを再生する方法

これは私のjQueryのコードです:

function initScrollAnimation(){ 

    $('.slideLeft').each(function(i){ 

      var bottom_of_object = $(this).position().top + $(this).outerHeight() + $(window).height() - 500; 
      var bottom_of_window = $(window).scrollTop() + $(window).height(); 

      if(bottom_of_window > bottom_of_object){ 
       $(".slideLeft").addClass('active'); 
      }; //else { 
       //$(".slideLeft").removeClass('active'); 
      //}; 
    }); 

    $('.slideRight').each(function(i){ 

      var bottom_of_object = $(this).position().top + $(this).outerHeight() + $(window).height() - 500; 
      var bottom_of_window = $(window).scrollTop() + $(window).height(); 

      if(bottom_of_window > bottom_of_object){ 
       $(".slideRight").addClass('active'); 
      }; //else { 
       //$(".slideLeft").removeClass('active'); 
      //}; 
    }); 

} 

そして、これはCSSコード

.slideLeft{ 
    margin-left:-25%; 
} 

    .slideRight{ 
     margin-right:-25%; 
    } 

.slideLeft.active{ 
    margin-left: 0%; 
    transition: all 0.5s ease-in; 
} 

    .slideRight.active{ 
     margin-right: 0%; 
     transition: all 0.5s ease-in; 
    } 
+0

「ウェイポイント」(https://github.com/imakewebthings/waypoints)ライブラリを使用して、要素が「 – Mivaweb

+0

」に到達したときに何かに到達したときに何かを達成することができます。 –

答えて

0

あるオブジェクト

.slideLeft{ 
    margin-left:-25%; 
} 

    .slideRight{ 
     margin-right:-25%; 
    } 

.slideLeft.active{ 
    margin-left: 0%; 
    transition: all 0.7s ease-in; 
} 

    .slideRight.active{ 
     margin-right: 0%; 
     transition: all 0.3s ease-in; 
} 

かのタイムアウト機能を使用するための遷移時間を変更divの1つ:

setTimeout(function(){ 
$('.slideRight').each(function(i){ 

      var bottom_of_object = $(this).position().top + $(this).outerHeight() + $(window).height() - 500; 
      var bottom_of_window = $(window).scrollTop() + $(window).height(); 

      if(bottom_of_window > bottom_of_object){ 
       $(".slideRight").addClass('active'); 
      }; //else { 
       //$(".slideLeft").removeClass('active'); 
      //}; 
    }); 
}, 200); 
+0

あなたのコメントをありがとう、答えは私が探していたものではありません。ブースにslideLeftとslideRight divという2つのセクションがあります。最初のdivが画面上にあるとき、最初のdivと2番目のdivのアニメーションが開始されますが、2番目のdivはscreen上にありません。divが画面上にあるときにブラウザのアニメーションを区切ります。 –

0

あなたは(垂直)あなたは異なる位置にある要素を持っていると言って、それが見えるようになったときに要素にアニメーションをトリガしたい場合:

ちょうどあなたがしている現時点ではと$(this).addClass('active');

$(".slideLeft").addClass('active');を置き換えます.slideLeftのいずれかの位置を確認した後.slideRight

同じ.slideLeft要素の全てにactiveクラスを追加します

+0

は動作しません。異なるdiv名でも簡単です –

関連する問題