czy ktoś zna kod js, który pozwoliłby na zmianę rozmiaru elementu svg (całej zawartości) w zależności od rozmiaru okna ustawionego przez użytkownika. moi użytkownicy będą chcieli wyświetlać grafikę d3 w małym dostosowanym widoku na swoich aktywnych komputerach. w tym samym czasie inni będą go uruchamiać na pełnym ekranie na swoich aktywnych komputerach. oznacza to, że wykresy będą musiały zmienić ich rozmiar w zależności od preferencji użytkownika.Elementy rozmiaru SVG z JavaScript i D3
Odpowiedz
Możesz dostosować svg.attr ("width") .attr ("height") podczas ładowania strony lub zmiany rozmiaru, ale potrzebujesz dodatkowego zachowania w kodzie, aby zmienić elementy d3 za pomocą nowy rozmiar.
Można również zajrzeć do atrybutu .viewBox obiektu svg, który będzie skalować elementy svg dynamicznie, ale znalazłem jego zachowanie między różnymi przeglądarkami być zawodny:
I razem stworzyłem demo tego pożądanego zachowania kilka dni temu. Sprawdź to tutaj - http://bl.ocks.org/4444770
Zasadniczo, słuchasz rozmiaru okna, stosujesz transformację proporcjonalną do elementu g, który otacza wszystkie elementy SVG i dostosowujesz rozmiar nadrzędnego SVG. Nazywamy ten kod na pageload i na okno rozmiaru, gdzie „pojemnik” oznacza div trzymając SVG:
d3.select("g").attr("transform", "scale(" + $("#container").width()/900 + ")");
$("svg").height($("#container").width()*0.618);
Jest to dobra metoda, jeśli SVG jest umieszczona wewnątrz div.
Innym sposobem jest użycie okna podglądu SVG, co zademonstrował Mike Bostock tutaj - http://bl.ocks.org/harlantwood/raw/6900108/. Ta metoda jest najlepsza, jeśli dodajesz SVG do ciała i jestem pewien, że jest sposób na użycie tej metody podczas umieszczania SVG wewnątrz div, ale nie byłem w stanie znaleźć rozwiązania i w ten sposób stworzyłem powyższe obejść.
- 1. Dołączanie wielu svg tekstu z d3
- 2. d3.js - jak wstawić nowe elementy rodzeństwa
- 3. JavaScript createElement i SVG
- 4. SVG na płótno z d3.js
- 5. Dlaczego nie zostały narysowane programowo elementy SVG <tspan>, z wyjątkiem d3.js?
- 6. D3: Scalanie wewnętrznych ścieżek svg?
- 7. D3 Wybieranie elementu wewnątrz SVG
- 8. Symbole osi multilinii svg tekstu w d3
- 9. Zdarzenie d3.on ("mouseover") nie działa z zagnieżdżonymi elementami SVG
- 10. Powiązanie javascript (d3.js) z błyszczącym
- 11. Utwórz tag SVG z JavaScript
- 12. Transformacje SVG w języku JavaScript
- 13. D3: Wiele układów sił w jednym SVG?
- 14. SVG - rozmiaru prostokąta umieszczone pod kątem
- 15. d3.js - Jak ustawić kursor pod ręką po najechaniu myszką na te elementy w kontenerze SVG?
- 16. Dodawanie atrybutu tytułu do elementu svg: g w D3.js
- 17. Tworzenie selekcji d3 na istniejącym, odłączonym elemencie SVG
- 18. Skalowanie SVG w javascript
- 19. html i Svg na płótno javascript
- 20. przezroczysty kolor w javascript D3.js
- 21. d3 javascript alternatywne kolory po kliknięciu
- 22. Wybierz elementy SVG, wykonując wolny rysunek wokół nich.
- 23. Punkt w sprawdzaniu wieloboków za pomocą SVG i JavaScript?
- 24. Jak zapisać/wyeksportować plik SVG po utworzeniu SVG w D3.js (IE, safari i chrome)?
- 25. Zmiana liczby wyświetlanych jako tekst svg stopniowo, z przejściem D3
- 26. kłopoty z wprowadzeniem do d3.js
- 27. Używanie D3 z Elmem
- 28. Koło svg nie jest rysowane z javascript
- 29. Mapa z d3.js i TopoJSON, Albers Syberia projekcja
- 30. AngularJS: Transcluding elementy SVG w dyrektywach
Nie wiesz, jak to zrobić w D3, ale raphael może łatwo skalować SVG, zajrzyj tutaj: http://stackoverflow.com/questions/4322660/scaling-svg-raphael-js-like-an-swf – Richard