2011-11-06 24 views
23

tôi muốn lấy lại phần tử bù trừ bắt đầu từ tọa độ trung tâm x của chính nó.Cách tìm tọa độ trung tâm x của phần tử và bù trừ cửa sổ liên quan

Tôi có thể làm như thế nào?

Thực ra tôi có thể tìm thấy những cửa sổ bù đắp của một nguyên tố nhưng nó lấy tọa độ từ biên giới của nguyên tố như thế này:

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

Tôi không chắc chắn những gì bạn đang cố gắng để có được, vị trí của phần giữa của phần tử của bạn thay vì phần trên cùng bên trái của nó? Ngoài ra, $ vị trí không phải là một cú pháp đúng, nếu như vậy chỉ cần thêm chiều rộng/2 cho X và chiều cao/2 đến chiều cao và bạn tốt. –

+0

@ShaiMishali Đó là cú pháp đúng. Nó hoạt động hoàn hảo. Nó không phải là quy ước để đặt tên biến như vậy trong JavaScript. –

Trả lời

51

Bạn phải sử dụng offset() để có được vị trí dẫn đầu và bên trái, sau đó thêm một nửa trong số các giá trị height()width() cho chúng. Điều đó cho các tọa độ trung tâm.

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

bạn có biết chiều rộng() sẽ xử lý quy tắc padding css không? – sbaaaang

+6

Thuộc tính 'padding' không được bao gồm. Nếu bạn muốn cũng bao gồm padding, sử dụng '.outerWidth()'. –

3

này bây giờ có thể được thực hiện thông qua Javascript mẹ đẻ thêm:

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

nơi targetNode là yếu tố mà bạn muốn để có được trung tâm của nó tọa độ.