0

ウィンドウ サイズが 767px 未満の場合に、フローの後の場所に div を移動する jQuery コードがいくつかあります。すべて正常に動作します。

また、デバイスが 767px 未満の場合、ページの読み込み後にメイン ナビゲーションを超えてメイン コンテンツまでスクロールする jQuery コードもいくつかあります。

scrollTop機能は正常に動作します。detach()+insertAfter()関数は正常に動作します。

しかし

insertAfter()コードが影響する単一のページで、コードがscrollTop間違った領域にスクロールします。要素が移動される前にアンカーがあった場所にスクロールしているようです。

何か案は?このページはhttp://northqueensviewhomes.com/communityにあります (これらの動作を表示するにはブラウザー ウィンドウを縮小する必要があり、スクロール機能を表示するには小さなウィンドウをリロードする必要があることに注意してください)。

2 つの関数とその呼び出しは次のとおりです。</p>

function rearrangeHelpfulLinks() {
   var $theLinks = $('#quicklinks.rc.well');
   if (($theLinks).length) {
      if ($(window).width() <= 767) {
         $theLinks.detach().insertAfter('.core-copy');
      } else {
         $theLinks.detach().insertAfter('#main-nav');
      }
   }
}


function scrollOnSmallScreen() {
   if ($(window).width() <= 767) {
      $('html, body').animate({
         scrollTop: ($('#main').offset().top - 13)
      }, 3210, 'easeInOutExpo');
   }
}

ウィンドウのサイズ変更時にinsertAfter()ルーチンが呼び出されます…</p>

$(window).resize(function() {
   rearrangeHelpfulLinks();
});

…そして、スクロール機能はページの読み込み時に呼び出されます (完全を期すために、単純に…)

   scrollOnSmallScreen();

私を助けるためにさらに何かが必要かどうかはわかりませんが(再び!)、スクロールを正しい場所、つまり単にアンカーまでスクロールしたいと思い#mainます。

すべての助けに感謝します。

4

1 に答える 1

0

scrollOnSmallScreen();を使用して呼び出す

setTimeout(scrollOnSmallScreen,0);

トレッドとDOM変更スレッドが実行された後、自動スクロールが実行されます。

于 2013-04-29T03:41:24.220 に答える