2014-01-09 4 views
2

Я начал с кода из CSS-Tricks и хорошо работает со смещением. Проблема в том, что сайт имеет фиксированный заголовок, поэтому мне нужно, чтобы он применял смещение при навигации по внутренней ссылке с другой страницы. В настоящее время он отключается.jQuery плавная прокрутка для ссылки на другую страницу со смещением

$('a[href*=#]:not([href=#])').click(function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') 
     || location.hostname == this.hostname) { 

     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
      if (target.length) { 
      $('html,body').animate({ 
       scrollTop: target.offset().top-144 
      }, 1000); 
      return false; 
     } 
    } 
}); 

Любая помощь будет очень признательна. Эта страница http://marketingmo.wpengine.com/services/#brand-development

ответ

1

На самом деле нет встроенной функции js, которая может предотвратить привязку кэш-памяти при загрузке страницы. Но есть хорошее обходное решение для этого, и оно находится на этом SO question. Я использовал этот метод раньше, и он работает очень хорошо.

setTimeout(function() { 
    var hash = location.hash 
    if (hash && $(hash).length) { 
     var target = $(hash).offset().top; 
     var headerH = $('header').height(); 
     $(window).scrollTop(target - headerH) 
     /* 
     //or with animate, 
     //but you'll need to reset the scrollTop to 0 (the top) first: 
     $(window).scrollTop(0); 
     $('html,body').animate({scrollTop:target - headerH}, 1000); 
     */ 
    } 
}, 1); 
+0

Это было именно то, что я искал. Я использовал этот бит кода в дополнение к исходному коду, и они отлично сочетаются друг с другом. Спасибо, Марк! –

Смежные вопросы