2010-07-15 18 views
10

Se si dispone di un div con altezza e larghezza fisse, che si sta spostando utilizzando la pressione di un tasto (o keydown/keyup). Posso ottenere la finestra per "seguire" quel div?jQuery - Se sto spostando un div con la tastiera

So che è possibile scorrere automaticamente una pagina, ma è possibile ottenere le coordinate di un div e scorrere la pagina mentre il div si muove?

+0

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

+0

Ah, no, non l'ho fatto - mi piacerebbe piuttosto codificarlo da solo, piuttosto che usare un plugin. –

+0

puoi abbandonare il supporto per IE6? :) – Anurag

risposta

1

stai usando un framework javascript? Se si utilizza jQuery è possibile ottenere la posizione del div con:

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

Inoltre, se si utilizza jQuery, la finestra scorrerà automaticamente per mantenere la Div in vista in ogni caso, senza ulteriore lavoro da voi.

In risposta al tuo commento:

È possibile utilizzare jQuery ('body') animare. ({ScrollTop: xPosOfDiv});

+0

Ah, eccellente - ci sarebbe un modo per far scorrere la pagina fino a quella posizione? Sospetto che sia .scroll() in realtà ... –

+1

Senza offesa, ma il titolo e i tag affermano che usa JQuery. ;) – Bobby

+0

Nevermind - OTTENUTO! Saluti! - Accetto in 6 minuti –

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

Nota che 'scrollTo' richiede il plugin scrollTo: http://plugins.jquery.com/project/ScrollTo – kingjeffrey

+1

@kingjeffey No, non sto usando alcun plugin. Sto usando il metodo Javascript nativo: https://developer.mozilla.org/en/DOM/window.scrollTo –

1

Un modo:

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

Un altro modo:

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

modo agevole:

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

Stavo per suggerire anche questo: l'unica cosa a cui prestare attenzione è che a volte il renderer IE6/7 viene confuso da 'scrollIntoView' e interrompe il layout. Tuttavia funziona sicuramente * la maggior parte * del tempo. – Pointy