0

当窗口大小低于 767px 时,我有一些 jQuery 代码可以将 div 移动到流中的稍后位置。一切正常。

我还有一些 jQuery 代码可以在页面加载后滚动到主导航,然后再滚动到主要内容,如果设备小于 767 像素。

scrollTop功能工作正常。detach()+insertAfter()函数工作正常。

但是……

insertAfter()代码影响的单个页面上,scrollTop代码滚动到错误的区域。它似乎正在滚动到元素移动之前锚点所在的位置。

有任何想法吗?该页面位于http://northqueensviewhomes.com/community(请记住,您必须缩小浏览器窗口才能看到这些行为,并且必须重新加载小窗口才能看到滚动功能)。

这是两个函数及其调用...</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 回答