2012-06-01 6 views

risposta

18

Uso getBoundingClientRect: http://ejohn.org/blog/getboundingclientrect-is-awesome/

Ad esempio:

var div = document.getElementById("yourDiv"); 
var rect = div.getBoundingClientRect(); 
alert("Coordinates: " + rect.left + "px, " + rect.top + "px"); 

Ricordate che getBoundingClientRect dà le coordinate relative alla finestra corrente, il che significa che se si vuole conoscere le coordinate relative al document.body, è necessario aggiungere gli importi di scorrimento orizzontale e verticale (document.documentElement.scrollLeft o document.body.scrollLeft per Firefox e .scrollTop ovviamente).

1

Se ho ben capito, si vuole fare questo http://www.quirksmode.org/js/findpos.html

+0

Ah, si. Buona lettura se si desidera supportare i client più vecchi. Quella pagina deve essere aggiornata, però. – MaxArt

+0

Oh davvero? Qualche possibilità che potresti spiegare cosa manca qui? – Jakub

+1

Come ho sottolineato nella mia risposta, 'getBoundingClientRect' è un ottimo strumento ed è supportato da tutti i principali browser. Semplifica davvero le cose. Non che il vecchio codice quirksmode.org non funzioni più ... È solo più lento. – MaxArt

1

Gli esempi mostrano soffietto come recuperare il ClientRect di un elemento HTML

# first tag link of this page 
document.getElementsByClassName('post-taglist')[0].children[0].getClientRects()[0] 
# question div 
document.getElementById('question').getClientRects()[0] 

Con esso si accede alle destra, in alto, altezza, larghezza, sinistra e attributi in basso.

+0

'getClientRects' è eccessivo, non è necessario conoscerne tutti. La ragione principale per ottenere tutte le rects è se si desidera conoscere la posizione e la dimensione delle righe di testo. – MaxArt

+0

NM. Missed qualcosa che MaxArt ha scritto altrove. –