2010-07-15 16 views
10

Si tengo un div con una altura y un ancho fijos, lo cual estoy moviendo usando la tecla (o keydown/keyup). ¿Puedo obtener la ventana para "seguir" ese div?jQuery - Si muevo un div con el teclado

Sé que puede desplazar automáticamente una página, pero ¿puede obtener las coordenadas de un div y desplazarse por la página a medida que se mueve el div?

+0

¿Has visto http://flesler.blogspot.com/2007/10/jqueryscrollto.html? – Adam

+0

Ah, no, no lo he hecho. De alguna manera, quería codificarlo en vez de utilizar un complemento. –

+0

¿puedes soltar soporte para IE6? :) – Anurag

Respuesta

1

¿Está utilizando un marco de JavaScript? Si utiliza jQuery se puede obtener la posición del div usando:

jQuery('#yourdiv').position().top() 
jQuery('#yourdiv').position().left() 

Además, si se utiliza jQuery, la ventana se desplazará automáticamente para mantener la Div a la vista de todos modos con ningún trabajo adicional de su parte.

En respuesta a tu comentario:

Puede usar jQuery ('cuerpo') animar. ({ScrollTop: xPosOfDiv});

+0

Ah, excelente - ¿habría una manera de desplazar la página a esa posición? Sospecho que será .scroll() en realidad ... –

+1

Sin ofender, pero el título y las etiquetas indican que usa JQuery. ;) – Bobby

+0

Nevermind - ¡LO CONSEGUÍ! ¡Aclamaciones! - Acepto en 6 minutos –

0
var pos = $("#theDiv").position(); 
window.scrollTo(pos.left, pos.top); 
+0

Tenga en cuenta que 'scrollTo' requiere el complemento scrollTo: http://plugins.jquery.com/project/ScrollTo – kingjeffrey

+1

@kingjeffey No, no estoy usando ningún complemento. Estoy usando el método nativo de Javascript: https://developer.mozilla.org/en/DOM/window.scrollTo –

1

Una manera:

$(document.body).bind('keydown', function(){ 
    $('#somediv')[0].scrollIntoView(true); 
}); 

Otra forma:

$(document.body).bind('keydown', function(){ 
    $('#somediv').css('top', $(window).scrollTop() + 'px'); 
}); 

liso manera:

$(document.body).bind('keydown', function(){ 
    $('#somediv').animate({'top': $(window).scrollTop() + 'px'}, 1000); 
}); 
+0

Iba a sugerir esto también, lo único que hay que tener en cuenta es que a veces el renderizador IE6/7 se confunde 'scrollIntoView' y rompe el diseño. Sin embargo, definitivamente funciona * la mayoría * del tiempo. – Pointy

Cuestiones relacionadas