2010-10-21 19 views
17

Ho il seguente script di scorrimento, che scorre perfettamente nella pagina, funziona esattamente come lo voglio anch'io.JQuery Scorrere fino a Offset dalla parte superiore del browser?

$(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; 
      } 
     } 
    }); 
}); 

Tuttavia, ho bisogno di ignorare all'inizio dico 200px come ho un'intestazione fissa nella parte superiore della pagina che i rotoli di contenuti dietro.

Significa che quando si scorre verso l'alto si scorre il contenuto dietro l'intestazione fissa in modo che non possa vederlo, quindi ho bisogno di scorrere fino appena sotto l'intestazione .. quindi per trattare la parte inferiore dell'intestazione come la parte superiore del browser suppongo ....

Questo può essere fatto come sarebbe molto utile?

Molte grazie per qualsiasi aiuto

+0

Grazie per questa domanda lottato tutta la notte cercando di capire come compire questo per la stessa identica ragione! – Robert

risposta

26

Sarebbe qualcosa di simile a questo lavoro?

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

Oppure prendere l'altezza dell'elemento di intestazione per l'offset extra.

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

Si potrebbe usare qualcosa di simile se la condizione sul codice ur per farlo

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

Grazie ragazzi per il vostro aiuto. Non sono sicuro che funzionino anche se non riesco a capire dove metterli nel codice per avere un effetto, nei casi di nebbia ho appena rotto il rotolo :( – Jezthomp

0

Il codice va bene, è sufficiente rimuovere l'altezza dell'intestazione fissa qui, ad esempio se è 200 px. funzionerà perfettamente.

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

È inoltre possibile controllare questo quando un pulsante viene premuto

$(function() { 

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

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

rimuoverlo dal compensato

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