2010-12-30 31 views
30

Así que este es el código actual que tengoscrollTop jquery, desplazándose a div con id?

$(document).ready(function() { 
    $('.abouta').click(function(){ 
     $('html, body').animate({scrollTop:308}, 'slow'); 
     return false; 
    }); 
    $('.portfolioa').click(function(){ 
     $('html, body').animate({scrollTop:708}, 'slow'); 
     return false; 
    }); 
    $('.contacta').click(function(){ 
     $('html, body').animate({scrollTop:1108}, 'slow'); 
     return false; 
    }); 
}); 

Al hacer clic en un enlace, por ejemplo, 'abouta' se desplaza a esa sección específica de la página. Prefiero hacer un scrollTo y luego la identificación de un div para no tener que seguir cambiando la posición de scrollTo si cambio el relleno etc. ¿Hay alguna manera? Gracias

Respuesta

95

en lugar de

$('html, body').animate({scrollTop:xxx}, 'slow'); 

uso

$('html, body').animate({scrollTop:$('#div_id').position().top}, 'slow'); 

esto devolverá la primera posición absoluta de cualquier elemento que seleccione como #div_id

+1

funciona perfectamente, aplausos: D – Jake

+3

me sorprende que nadie ha comentado en tanto tiempo - la pregunta tal como está, realmente pide '.offset()' en lugar de '.position()' como una solución, ¿verdad? El div de destino puede estar en cualquier lugar de la página, y '.position()' [devuelve el desplazamiento superior relativo a su cuadro contenedor] (http://api.jquery.com/position/). Entonces, el código anterior lo llevará a la parte superior de su documento, si el div de destino es el primer hijo de su padre. ¿O me estoy perdiendo algo? – sameers

+0

Gracias Sameers, ese es exactamente el problema que estaba teniendo. .offset() funciona como un regalo. – Dan382

-2

si desea desplazar sólo sólo algunos div , puede utilizar el id. de div en lugar de 'html, body'

$('html, body').animate(... 

uso

$('#mydivid').animate(... 
+3

No, '$ ('# div'). Animate ({scrollTop: $ ('# div'). Position(). Top}, 'slow');' no funciona. (Chrome 23). Mejor uso '$ ('html, body'). Animate ({scrollTop: $ ('# div_id'). Position(). Top}, 'slow');' – bicycle

0

intente esto:

$('html, body').animate({scrollTop:$('#xxx').position().top}, 'slow'); 
$('#xxx').focus(); 
-2

probar este

$('#div_id').animate({scrollTop:0}, '500', 'swing');