hiện bất kỳ ai biết mã js nào cũng cho phép phần tử svg (toàn bộ nội dung) được thay đổi kích cỡ tùy thuộc vào kích thước cửa sổ do người dùng đặt. người dùng của tôi sẽ muốn xem đồ họa d3 trong chế độ xem tùy chỉnh nhỏ trên máy tính để bàn hoạt động của họ. trong khi đó, những người khác sẽ có nó chạy toàn màn hình trên máy tính để bàn hoạt động của họ. điều này có nghĩa là các đồ thị sẽ cần phải tự thay đổi kích thước chúng tùy theo sở thích của người dùng.Các phần tử SVG có thể định lại được bằng JavaScript và D3
Trả lời
Bạn có thể điều chỉnh svg.attr ("chiều rộng") .xuất ("chiều cao") hoặc khi tải trang hoặc thay đổi kích thước, nhưng bạn cần thêm hành vi trong mã của mình để chuyển các phần tử d3 thành kích thước mới.
Bạn cũng có thể xem xét các thuộc tính của một đối tượng .viewBox svg, mà sẽ mở rộng quy mô các yếu tố svg động, nhưng tôi đã tìm thấy hành vi của nó giữa các trình duyệt khác nhau để có đốm:
tôi đặt cùng một bản demo về hành vi mong muốn này cách đây vài ngày. Kiểm tra nó ra ở đây - http://bl.ocks.org/4444770
Về cơ bản, bạn nghe kích thước cửa sổ, áp dụng biến đổi tỷ lệ cho phần tử g bao bọc tất cả các phần tử SVG và điều chỉnh kích thước của SVG gốc. Gọi mã này khi tải trang và thay đổi kích thước cửa sổ, trong đó "vùng chứa" là div giữ số SVG:
d3.select("g").attr("transform", "scale(" + $("#container").width()/900 + ")");
$("svg").height($("#container").width()*0.618);
Đây là phương pháp hay nếu SVG của bạn được đặt trong div.
Cách khác là sử dụng hộp xem SVG, như được minh họa bởi Mike Bostock tại đây - http://bl.ocks.org/harlantwood/raw/6900108/. Phương pháp này là tốt nhất nếu bạn đang thêm SVG vào cơ thể, và tôi chắc chắn có một cách để sử dụng phương pháp này khi đặt SVG bên trong một div, nhưng tôi không thể tìm thấy một giải pháp, và do đó tạo ra ở trên làm việc xung quanh.
- 1. Không thể chọn phần tử SVG foreignObject trong d3
- 2. D3 Chọn phần tử bên trong SVG
- 3. Cách truy cập các phần tử SVG bằng Javascript
- 4. Làm cách nào để tham chiếu đến phần tử SVG (con) được lồng trong phần tử SVG khác (cha mẹ) bằng D3?
- 5. Prototype có thể mở rộng các phần tử SVG không?
- 6. D3: Loại bỏ các phần tử
- 7. d3.js bố trí lực trên các phần tử không phải là svg
- 8. Gắn thêm phần tử vào phần tử hiện có trong d3.js
- 9. Xuất phần tử SVG sang PDF?
- 10. d3.on ("di chuột") sự kiện không hoạt động với các phần tử SVG lồng nhau
- 11. Cài đặt phần tử svg động qua javascript
- 12. Thêm thuộc tính tiêu đề vào phần tử svg: g trong D3.js
- 13. Chọn các phần tử SVG bằng cách vẽ xung quanh chúng
- 14. Sizing của phần tử SVG foreignObject để phù hợp với phần tử HTML
- 15. Lập trình tạo phần tử hình ảnh SVG với javascript
- 16. Tạo thẻ SVG bằng JavaScript
- 17. Nghe nhấp chuột phải vào phần tử svg bằng Raphael.js
- 18. Fit văn bản sang SVG tử (Sử dụng D3/JS)
- 19. Màu nền mặc định của phần tử gốc SVG
- 20. SVG có thể chứa âm thanh bằng javascript không?
- 21. Truy cập các thuộc tính phần tử d3.js từ datum?
- 22. Tôi có thể đếm các phần tử bằng jQuery không?
- 23. JS trên SVG - nhận được innerHTML của một phần tử
- 24. Tại sao lồng phần tử <svg> bên trong phần tử <svg> khác?
- 25. d3.js - cách chèn các phần tử anh chị em mới
- 26. Cách kiểm tra giao điểm của các phần tử Svg
- 27. đảm bảo phần tử dữ liệu d3 khớp với id?
- 28. Tốc độ phần tử văn bản SVG
- 29. Có thể thay thế nút asp: bằng phần tử HTML
- 30. cách quy mô phần tử bằng cách giữ vị trí cố định trong svg
không chắc chắn cách bạn thực hiện trong D3 nhưng raphael có thể chia tỷ lệ SVG dễ dàng, hãy xem tại đây: http://stackoverflow.com/questions/4322660/scaling-svg-raphael-js-like-an-swf – Richard