2011-11-06 9 views
23

Chciałbym pobrać przesunięcie elementu rozpoczynając od jego własnych x współrzędnych środka.Jak znaleźć współrzędne x środka elementu i powiązane z nim przesunięcie okna

jak mogę to zrobić?

Właściwie mogę znaleźć okno przesunięcia elementu ale pobiera współrzędne od granicy elementu jak poniżej:

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

Nie jestem pewien, co próbujesz uzyskać, położenie środka twojego elementu zamiast jego największej lewej strony? Również pozycja $ nie jest poprawną składnią, jeśli tak, po prostu dodaj szerokość/2 do X i wysokość/2 na wysokość i jesteś dobry. –

+0

@ShaiMishali To odpowiednia składnia. Działa idealnie. Konwencja nie polega tylko na nazwaniu takich zmiennych w JavaScript. –

Odpowiedz

51

Musisz użyć offset() dostać górną i lewą pozycję, a następnie dodać połowa wartości height() i width(). To daje współrzędne środkowe.

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

Czy wiesz, jeśli width() zajmuje się dopełnieniem reguły css? – sbaaaang

+6

Właściwość 'padding' nie jest uwzględniana. Jeśli chcesz dołączyć również dopełnienie, użyj '.outerWidth()'. –

3

To może być teraz wykonywane przez natywną JavaScript także:

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

gdzie targetNode jest elementem chcesz uzyskać współrzędne jego centrum.