Câu trả lời:
Cho dù chúng giống nhau tùy thuộc vào bối cảnh.
position
trả về một {left: x, top: y}
đối tượng liên quan đến cha mẹ bù
offset
trả về một {left: x, top: y}
đối tượng liên quan đến các tài liệu .
Rõ ràng, nếu tài liệu là cha mẹ bù, thường là trường hợp này, chúng sẽ giống hệt nhau. Phụ huynh bù là "phần tử chứa vị trí gần nhất."
Ví dụ, với tài liệu này:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
Sau đó $('#sub').offset()
sẽ là {left: 200, top: 200}
, nhưng nó .position()
sẽ được {left: 0, top: 0}
.
sub
định vị trí tuyệt đối thành 0: 0, thì nó sẽ nằm ở góc trên cùng bên trái của cha mẹ bù.
.position
đã được cập nhật vào 1.12.0 => github.com/jquery/jquery/issues/1708
Phương thức .offset () cho phép chúng tôi truy xuất vị trí hiện tại của một phần tử so với tài liệu . Tương phản điều này với .poseition () , lấy ra vị trí hiện tại so với cha mẹ bù . Khi định vị một phần tử mới trên phần tử hiện có để thao tác toàn cầu (cụ thể là để thực hiện kéo và thả), .offset () sẽ hữu ích hơn.
Cả hai hàm trả về một đối tượng đơn giản với hai thuộc tính: chiều rộng và chiều cao.
offset () đề cập đến vị trí liên quan đến tài liệu.
vị trí () đề cập đến vị trí liên quan đến phần tử cha của nó
NHƯNG khi vị trí css của đối tượng là "tuyệt đối", cả hai hàm sẽ trả về width = 0 & height = 0