2012-02-10 7 views
3

私は本当にこれでいくつかの助けが必要です。私は100%新しいです。私はそれについて一般的な助けが必要です。私は皆さんがコードのクリーンアップを手伝ってくれることを願っています。また、私はこのアニメーションをしたいと思います。コードは実際にうまくいっています。それは私がしたいことをします。下にスクロールし、ナビゲーションが上に達したら固定します。jqueryアニメーションのヘルプ、アニメーションのキューイングとコードのクリーニング

Link to website

あなたは下にスクロールする場合は、ナビゲーションバーが表示され、プラスあなたは、左のリボンが降りてくる表示されます。 私の問題:スクロールバックアップは、私がしたいようにそれがフェードアウトになります。しかし、私はリボンを元に戻すことはできません。 第2の問題:私の一般的な助けになる/コードを掃除すると、上下に数回スクロールするアニメーションキュー。

jQuery(document).ready(function($) {  var divh = document.getElementById('stnav').offsetHeight; 
     var stickyHeaderTop = $('#stnav').offset().top; 
     $('#logoheader').css('margin-top','-90px'); 
     $('#nav').hide(); 
     $(window).scroll(function(){ 
       if($(window).scrollTop() > stickyHeaderTop) { 
         $('#stnav').addClass("sticky"); 
         $('#content').css('margin-top',divh); 
         $('#logoheader').animate({marginTop:"0"},800); 
         $('#nav').fadeIn(1500); 
       } else { 
         $('#stnav').removeClass("sticky"); 
         $('#content').css('margin-top','0px'); 
         $('#nav').fadeOut(1500); 
       } 
     }) 

    }); 

ありがとうございます!

答えて

3

このバージョンをお試しください。ユーザーがスクロールするたびにエフェクトを初めて作成するのではなく、初めて作成します。また、新しいアニメーションを作成する前に、現在のキューを消去します。

$(window).scroll(function(){ 
        if($(window).scrollTop() > stickyHeaderTop) { 
          if(!$('#stnav').hasClass("sticky")){ 
           $('#stnav').addClass("sticky"); 
           $('#content').css('margin-top',divh); 
           $('#logoheader').stop(true, true).animate({marginTop:"0"},800); 
           $('#nav').stop(true, true).fadeIn(1500); 
          } 
        } else { 
          if($('#stnav').hasClass("sticky")){ 
           $('#stnav').removeClass("sticky"); 
           $('#content').css('margin-top','0px'); 
           $('#nav').stop(true, true).fadeOut(1500); 
          } 
        } 
      }) 
+0

非常に良い!これは機能します。私は自分自身でリボンをスライドさせるためのコードを追加しましたが、完璧に動作します。今私はヘッダーをz-indexにしなければなりません。それでは、if文を追加しましたか?素晴らしいです**ありがとう、私はそれを感謝します!** – 6olden

1

私の最初の考えは、新しいアニメーションを開始する前に古いアニメーション(.stop())を停止することです。

2

まず:自己stop()またはstop(true, true)を使用し、それを繰り返すことから、アニメーションを防ぐために

これは、Firefox 10で私のためにうまく内外

セカンドをフェード。
http://api.jquery.com/stop/

+0

リボンはスライドされませんか? (初回のみ - それはそれを元に戻さないという副作用です)。 – Archer

+0

さて、私はそれを見るようになったので、サイトを初めて読み込んだだけで、それがフェードインとフェードアウトします。 – elclanrs

+0

それは私の問題です。私はそれが最初に後ろにスライドして、再び消えてしまいたい。私は連鎖し、marginTopで別の.animateを追加しようとしましたが、それは戻っていません...非常に奇妙です。 – 6olden

2

これはトリックを行う必要があります...

jQuery(document).ready(function($) { 
    var divh = document.getElementById('stnav').offsetHeight; 
    var stickyHeaderTop = $('#stnav').offset().top; 
    $('#logoheader').css('margin-top','-90px'); 
    $('#nav').hide(); 
    $(window).scroll(function(){ 
     if($(window).scrollTop() > stickyHeaderTop) { 
      $('#stnav').addClass("sticky"); 
      $('#content').css('margin-top',divh); 
      $('#logoheader').stop().animate({marginTop:"0"},800); 
      $('#nav').stop().fadeIn(1500); 
     } else { 
      $('#stnav').removeClass("sticky"); 
      $('#content').css('margin-top','0px'); 
      $('#logoheader').stop().animate({marginTop:"-90px"},800); 
      $('#nav').stop().fadeOut(1500); 
     } 
    }) 
}); 

はちょうどそのを使用して上記のコードを置き換えます。

リボンのアニメーションを追加しました(あなたはelseブロックからそれを見逃してしまいました)。アニメーションとフェードの前にストップを追加しました。次はアニメーション/フェードします。

編集:非常に良いサイトBTW!

+0

ご返信ありがとうございます。正直言って私はすでに.stop()のことをやっていました。私はあなたのコードをコピーしましたが、もう一つの問題があります。 navはまったくフェードインしません。 #navから.stop()を削除して表示されますが、すべてが非常にぎくしゃくして100%にフェードインしません。奇妙な。ありがとう!それは単なるスタートです。私はそれをすてきなサイトにするために最善を尽くします! – 6olden

関連する問題