Câu trả lời:
.offset()
sẽ trả về vị trí bù của một phần tử dưới dạng một đối tượng đơn giản, ví dụ:
var position = $(element).offset(); // position = { left: 42, top: 567 }
Bạn có thể sử dụng giá trị trả về này để định vị các phần tử khác tại cùng một vị trí:
$(anotherElement).css(position)
offset()
không trả lại tọa độ hàng đầu thích hợp. Thay vào đó, nó trả về khoảng 300 pixel so với tọa độ trên cùng của phần tử trong tài liệu. Tại sao??
Lưu ý rằng $(element).offset()
cho bạn biết vị trí của một yếu tố liên quan đến tài liệu . Điều này hoạt động tuyệt vời trong hầu hết các trường hợp, nhưng trong trường hợpposition:fixed
bạn có thể nhận được kết quả bất ngờ.
Nếu tài liệu của bạn dài hơn chế độ xem và bạn đã cuộn theo chiều dọc xuống dưới cùng của tài liệu, thì giá trị position:fixed
phần tử của bạn sẽ lớn hơnoffset()
giá trị mong đợi theo số lượng bạn đã cuộn.
Nếu bạn đang tìm kiếm một giá trị liên quan đến chế độ xem (cửa sổ), thay vì tài liệu trên một vị trí: phần tử cố định, bạn có thể trừ scrollTop()
giá trị của tài liệu khỏi phần tử cố địnhoffset().top
. Thí dụ:$("#el").offset().top - $(document).scrollTop()
Nếu position:fixed
phần tử bù của phần tử là tài liệu , bạn muốn đọc parseInt($.css('top'))
thay thế.
$(document).scrollTop()