2010-10-21 16 views
17

Mam następujący skrypt przewijania, który przewija się wokół strony dobrze, działa dokładnie tak, jak tego chcę.JQuery Przewiń do Offset z góry przeglądarki?

$(function(){ 
    $('a[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) { 
       var targetOffset = $target.offset().top; 
       $('html,body').animate({scrollTop: targetOffset}, 1000); 
       return false; 
      } 
     } 
    }); 
}); 

Jednak muszę go zignorować szczyt powiedzmy 200px jak mam stały nagłówek na górze strony, która przewija zawartość tyle.

Oznacza to, że po przewinięciu do góry przewija zawartość za ustalonym nagłówkiem, więc nie widzę go, więc potrzebuję go przewinąć pod nagłówek ... tak aby potraktować dno nagłówka jako wierzchołek przeglądarki przypuszczam ....

Czy można to zrobić tak, jak byłoby to bardzo przydatne?

Wielkie dzięki za wszelką pomoc

+0

Dziękuję za tym pytaniem zmaga całą noc starając się zrozumieć, w jaki sposób zrealizuj to z dokładnie tego samego powodu! – Robert

Odpowiedz

26

Would coś jak to działa?

var targetOffset = $target.offset().top - 200; 

Albo złap za wysokość elementu nagłówka dla dodatkowego przesunięcia.

var targetOffset = $target.offset().top - $("element").outerHeight(true); 
1

Można użyć coś takiego, jeśli stan na ur Kod do tego

//check if the absolute position is below header 
if ($('#IdOfTheScrollElement').position().top >= 200){ 
//scroll 
} 
else { 
//do nothing 
} 
+0

Dzięki chłopaki za pomoc. Nie jestem pewien, czy działają, ponieważ nie mogłem wymyślić, gdzie umieścić je w kodzie, aby uzyskać efekt, w mglistych przypadkach po prostu zerwałem zwoju :( – Jezthomp

0

Kod jest w porządku, wystarczy usunąć wysokość ustalonego nagłówka tutaj, na przykład, jeśli jest to 200 pikseli. to zadziała idealnie.

$('html,body').animate({scrollTop: (targetOffset().top)-200}, 1000); 

Można również sprawdzić, kiedy kliknięciu przycisku

$(function() { 

$('a[href*=#]:not([href=#])').click(function() { 

    // Check height of the header and padding 
    var header_height = $('.header').outerHeight(); 

usunąć go z offsetu

$('html,body').animate({scrollTop: (targetOffset().top) - header_height }, 1000); 
Powiązane problemy