2013-10-08 12 views
5

Tôi muốn đặt một hình chữ nhật quanh một văn bản trong SVG. Chiều cao của văn bản được biết đến với tôi (các font-size thuộc tính của phần tử text). Nhưng chiều rộng phụ thuộc vào nội dung thực tế. Sử dụng getBBox() hoặc getComputedTextLength() sẽ hoạt động. Nhưng điều này chỉ hoạt động sau khi hiển thị.nhận được chiều rộng văn bản trong SVG trước khi render

Có cách nào để xác định rằng một cách khác? Ví dụ định xwidth thuộc tính tương ứng với các giá trị khác? Tôi đã không tìm thấy bất cứ điều gì như thế trong SVG Spec.

+0

Có vấn đề gì khi đo lường sau khi hiển thị? –

+0

@RobertLongson Mã phức tạp và nhảy trực quan. Tôi đang tạo toàn bộ tài liệu. Tất cả các đối tượng cần được chuẩn bị sau đó được thêm vào tài liệu và sau đó được hiển thị. Khi tính toán sau khi render, tôi sẽ phải render các đối tượng chưa hoàn thành, sau đó thay đổi chúng sau khi render. Điều này sẽ dẫn đến nhảy hình ảnh. – radlan

+0

Thêm mã của bạn vào câu hỏi? Bạn đang cố gắng để có được chiều dài bbox và văn bản của một phần tử chưa được chèn vào tài liệu? –

Trả lời

0

Xác định nơi văn bản kết thúc có thể yêu cầu khoảng cùng một đường dẫn mã cơ bản như bản thân hiển thị - trải qua chiều rộng của mỗi ký tự dựa trên phông chữ và kiểu, v.v. Vì tôi không biết tiêu chuẩn SVG xác định phương pháp trực tiếp nhận được thông tin này mà không làm rendering đầy đủ thực tế, cho đến các phương pháp như vậy xuất hiện hoặc được báo cáo ở đây bởi những người khác, cách tiếp cận nên để render vô hình trước khi thực hiện vẽ thực tế.

Bạn có thể làm điều đó trong một lớp ẩn (z-index, opacity và các công cụ) hoặc ngoài cửa sổ xem có thể nhìn thấy, bất cứ hoạt động tốt nhất trong thử nghiệm. Bạn chỉ cần làm cho trình duyệt thực hiện hiển thị để tìm hiểu, vì vậy bạn hiển thị vô hình vì mục đích đó, sau đó sử dụng getComputedTextLength()

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