2012-06-21 66 views
6

Tôi rất mới đối với SVG (sử dụng D3.js để gọi mọi thứ). Gần đây, tôi đã đi vào một hạn chế rất lớn với một dự án tôi đang làm việc. Tôi muốn có thể tạo các lớp "g" cho từng loại dữ liệu mà tôi đang làm việc. Thật không may, tôi nhận được dữ liệu của tôi từ một tập tin XML mà chỉ kết nối dữ liệu theo một cách (ví dụ: person1 ---> person2, nhưng không phải person2 ---> person1). Những gì tôi muốn có thể làm là đặt mỗi hình dạng được tạo ra từ dữ liệu của tôi trong lớp gốc và lớp mà nó đang kết nối với. Nếu tôi có thể thêm hình dạng này vào hai hoặc nhiều lớp (như g class = person1 và person2), đó sẽ là giải pháp nhanh nhất mà tôi tin ... Nhưng có phải thứ như thế này có thể không? Tôi có thể đặt hình dạng SVG thành hai hoặc nhiều lớp không? Hay nó sẽ ghi đè nó khi tôi định nghĩa cái mới.Nhiều lớp học trong SVG

Tôi thực sự hy vọng ai đó có thể hiểu những gì tôi đang yêu cầu. Thật khó để giải thích vấn đề của tôi mà không cho đi mọi chi tiết của dự án cuối cùng của tôi.

Trả lời

11

Có, bạn có thể đặt nhiều lớp. Ví dụ,

<g class="person1 person2"> 

Hoặc, trong D3:

g.attr("class", "person1 person2"); 
+1

Đây là một tin đáng kinh ngạc. Cách giải quyết mà sếp của tôi gợi ý có lẽ sẽ đưa tôi đến gần một tháng (anh ấy không thông thạo JS, D3, hay tiếng Anh nên rất khó để giải thích tại sao cách tiếp cận của anh ấy quá cồng kềnh). Với kiến ​​thức này, tôi có thể hoàn thành trong một tuần. – 1080p

+2

Ngoài ra, cảm ơn tất cả công việc của bạn! Tôi chỉ có một buổi thực tập hình dung hóa dữ liệu một vài tuần trước. Tôi đã được giao nhiệm vụ để làm việc trên một hình ảnh mạng rất năng động. Sau một số nghiên cứu, tôi đã đi với d3 là thư viện vẽ chính của tôi. Thư viện github của bạn và các hướng dẫn bạn đã đăng tải đã mang tôi qua từng bước của dự án này. – 1080p

0

hơn Một lưu ý: Nếu bạn đang gọi một chức năng từ bên trong một tập tin:

.attr("class",function(d) { return d.person1+" "+ d.person2;} ) 
Các vấn đề liên quan