Làm cách nào để tìm tọa độ XY của phần tử HTML (DIV) từ JavaScript nếu chúng không được đặt rõ ràng?Tìm X/Y của phần tử HTML có JavaScript
Trả lời
Điều đó có thể phức tạp tùy thuộc vào trình duyệt và phiên bản. Tôi sẽ đề nghị sử dụng jQuery và plugin vị trí.
Hầu hết các vị trí plugin bây giờ là một phần của lõi jQuery. Vì vậy, bạn chỉ có thể làm $ (phần tử) .offset ({relativeTo: "body"}) - và nó sẽ cung cấp cho bạn phần trên và bên trái của đối tượng liên quan đến phần thân. – Sugendran
Tuyệt vời, tôi đã không tải về jQuery trong một vài tháng, tốt để biết họ đã cuộn nó vào. – palehorse
+1 cho jQuery offset – shan
Tôi không chắc bạn cần gì và những thứ như vậy luôn tương đối (màn hình, cửa sổ, tài liệu). Nhưng khi tôi cần thiết để con số đó ra, tôi tìm thấy trang web này hữu ích: http://www.mattkruse.com/javascript/anchorposition/source.html
Và tôi cũng phát hiện ra rằng các tooltip cắm ai đó làm cho jQuery có tất cả các loại cái nhìn sâu sắc thú vị để x, y vị trí thủ thuật (nhìn vào khung nhìn của nó và hỗ trợ cơ bản mà jQuery cung cấp cho nó). http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
Bạn có thể sử dụng một thư viện như Prototype hoặc jQuery, hoặc bạn có thể sử dụng this handy function:
Nó trả về một mảng.
myPos = findPos(document.getElementById('something'))
x = myPos[0]
y = myPos[1]
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
curtop = obj.offsetTop
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft
curtop += obj.offsetTop
}
}
return [curleft,curtop];
}
Bạn nên gán thuộc tính cho quirksmode.org, chức năng đó trông rất quen thuộc. – pilsetnieks
Đây là cách tôi làm điều đó:
// Based on: http://www.quirksmode.org/js/findpos.html
var getCumulativeOffset = function (obj) {
var left, top;
left = top = 0;
if (obj.offsetParent) {
do {
left += obj.offsetLeft;
top += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return {
x : left,
y : top
};
};
Tôi nghĩ rằng tôi thích ý tưởng của bạn về việc trở về một đối tượng hơn sự lựa chọn của Peter-Paul Koch về việc trả lại một mảng trong giải pháp ban đầu của mình. – cssimsek
Đối với những gì nó có giá trị, đây là một phiên bản đệ quy:
function findPos(element) {
if (element) {
var parentPos = findPos(element.offsetParent);
return [
parentPos.X + element.offsetLeft,
parentPos.Y + element.offsetTop
];
} else {
return [0,0];
}
}
parentPos.X phải là parentPos [0], parentPos.Y phải là parentPos [1] – Noah
Bạn có thể thêm hai thuộc tính cho Element.prototype
để có được trên/trái của bất kỳ phần tử nào.
window.Object.defineProperty(Element.prototype, 'documentOffsetTop', {
get: function() { return this.offsetTop + (this.offsetParent ? this.offsetParent.documentOffsetTop : 0); }
});
window.Object.defineProperty(Element.prototype, 'documentOffsetLeft', {
get: function() { return this.offsetLeft + (this.offsetParent ? this.offsetParent.documentOffsetLeft : 0); }
});
Dưới đây là một bản demo so sánh kết quả với jQuery offset().top
và .left
: http://jsfiddle.net/ThinkingStiff/3G7EZ/
- 1. xoá kiểu phần tử html qua javascript
- 2. Tìm phần tử ở HTML chuỗi
- 3. Tìm phần tử con của parent pure javascript
- 4. Chỉ màu một phần của phần tử HTML
- 5. Tìm xem phần tử có hiển thị hay không (JavaScript)
- 6. javascript lấy thẻ phần tử của
- 7. mã javascript đơn giản để đánh dấu phần tử html
- 8. JavaScript trên iOS: mở phần tử chọn HTML
- 9. lấy phần tử html bên trong một phần tử khác trong javascript
- 10. Sizing của phần tử SVG foreignObject để phù hợp với phần tử HTML
- 11. Có thể thay thế nút asp: bằng phần tử HTML
- 12. Có thể sao chép các đối tượng phần tử html trong JavaScript/JQuery không?
- 13. hasOwnProperty phần tử html Firefox
- 14. Cách tìm phần tử gốc bằng cách sử dụng javascript
- 15. Tìm các phần tử có Id động
- 16. JavaScript: Thêm phần tử vào văn bảnNode
- 17. hiển thị có điều kiện các dạng phần tử html
- 18. html & javascript: Cách lưu trữ dữ liệu tham chiếu đến các phần tử html
- 19. Cách lấy vị trí x, y của các phần tử html với javascript
- 20. Làm cách nào để thay đổi ID của phần tử HTML bằng JavaScript?
- 21. Cách lấy màu nền của phần tử bằng javascript?
- 22. Hide phần tử HTML bằng id
- 23. Phân tích vị trí của phần tử html trong iframe
- 24. Cách nhắm mục tiêu phần tử HTML từ một lớp cụ thể của phần tử BODY
- 25. HTML, jQuery: Ràng buộc chiều rộng của một phần tử thành một phần tử khác
- 26. Tìm xem liệu phần tử có tồn tại trong toàn bộ trang html
- 27. JavaScript: Nhận phần tử được nhấp
- 28. Văn bản phần tử cập nhật jQuery html mà không ảnh hưởng đến các phần tử HTML của trẻ em
- 29. Làm thế nào để tìm ra giá trị tính toán của thuộc tính lang của một phần tử trong JavaScript?
- 30. ẩn một phần của văn bản html, css, javascript
đóng cửa như trùng lặp theo http://meta.stackexchange.com/questions/147643/should-i-vote-to- close-a-duplicate-question-even-dù-nó-nhiều-mới-và-ha – user123444555621