2011-11-06 12 views
23

Vorrei recuperare l'offset dell'elemento partendo dalle sue coordinate del centro x.Come trovare le coordinate del centro x dell'elemento e il relativo offset della finestra

come posso fare?

In realtà posso trovare l'offset di un elemento della finestra, ma recupera le coordinate dal confine dell'elemento in questo modo:

var _position = $(this).offset(); 
+0

Non sono sicuro di cosa stai cercando di ottenere, la posizione del centro del tuo elemento invece del suo punto più a sinistra? Inoltre, $ posizione non è una sintassi corretta, in tal caso basta aggiungere larghezza/2 alla X e altezza/2 all'altezza e sei a posto. –

+0

@ShaiMishali Questa è la sintassi corretta. Funziona perfettamente. Non è solo la convenzione a nominare variabili come quella in JavaScript. –

risposta

51

Devi usare offset() per ottenere la posizione superiore e sinistro, quindi aggiungere metà dei valori height() e width(). Questo dà le coordinate del centro.

var $this = $(this); 
var offset = $this.offset(); 
var width = $this.width(); 
var height = $this.height(); 

var centerX = offset.left + width/2; 
var centerY = offset.top + height/2; 
+0

sai se width() si prende cura della regola css padding? – sbaaaang

+6

La proprietà 'padding' non è inclusa. Se vuoi includere anche il padding, usa '.outerWidth()'. –

3

Questo può ora essere fatto tramite JavaScript nativo anche:

let centerX = targetNode.offsetLeft + targetNode.offsetWidth/2; 
let centerY = targetNode.offsetTop + targetNode.offsetHeight/2; 

dove TARGETNODE è l'elemento che si desidera ottenere le coordinate suo centro.