2013-04-25 24 views
7

Ví dụ,Làm thế nào để có được vị trí và kích thước của một nút văn bản HTML bằng cách sử dụng javascript?

<div style="width:100px;text-align:center">text</div> 

Tôi muốn có được vị trí và kích thước của nút text văn bản, không wrapper div của nó. Có thể không?

+0

Bạn có thể có được vị trí div và sau đó bạn sẽ có thêm bất kỳ lớp đệm phía trên và bên trái và biên giới. – Asken

+0

@ user125697: 'văn bản' là một nút, không phải là phần tử. Nó không trùng lặp với câu hỏi đó. – benjaminchanming

+0

[this] (http://stackoverflow.com/questions/7913631/jquery-get-position-of-character-in-a-div) có thể giúp bạn – anpsmn

Trả lời

12

Trong các trình duyệt hiện đại (Mozilla gần đây, WebKit và Opera), bạn có thể sử dụng getClientRects() method of a DOM range bao gồm nút văn bản.

var textNode = document.getElementById("wombat").firstChild; 
 
var range = document.createRange(); 
 
range.selectNodeContents(textNode); 
 
var rects = range.getClientRects(); 
 
if (rects.length > 0) { 
 
    console.log("Text node rect: ", rects[0]); 
 
}
<div id="wombat">Wombat</div>

+0

Mã này có hoạt động với trình duyệt cũ không. nếu không, giải pháp nào cho trình duyệt cũ. – Domezchoc

+1

@Domezchoc: Trình duyệt cũ nào? Có một giải pháp sử dụng ['TextRange'] (http://msdn.microsoft.com/en-us/library/ie/ms535872%28v=vs.85%29.aspx) trong IE rất dễ dàng, miễn là nút văn bản là con duy nhất của một phần tử. Nếu không, nó vẫn còn có thể nhưng nhiều công việc để tạo TextRange. –

+0

i có nghĩa là IE, tôi hiểu rồi. đầu tiên tôi cần phải tìm TextRange và sau đó getClientRects. cảm ơn – Domezchoc

Các vấn đề liên quan