Artykuł ma za zadanie wyjaśnić w jaki sposób można tworzyć grafikę SVG przy pomocy popularnego języka skryptowe JavaScript. Połączenie grafiki wektorowej razem z skryptami pozwala tworzyć wiele różnych ciekawych projektów, które dzięki skalowalności będą od razu dostosowane zarówno dla użytkowników komputerów stacjonarnych jak i urządzeń mobilnych. Na stronie takie połączenie jest wykorzystywane przede wszystkim do tworzenie gier planszowych.
Jak wiadomo SVG jest to określony zapis XML. Chociaż SVG można wstawiać bezpośrednio do kodu przeglądarki i ma podobną strukturę do HTMLa to obiekty SVG tworzy się w trochę inny sposób. Podczas tworzenia elementu należy dodatkowo podać adres, który zawiera specyfikację SVG. Tylko w ten sposób utworzonemu obiektowi będzie można przypisać odpowiednie atrybuty oraz zdarzenia. Dokładny opis co i dlaczego nie jest w tej chwili ważny.
Co należy zapamiętać to jest fakt, że zamiast polecenia createElement należy użyć polecenia createElementNS. Dwa niemalże identyczne polecenia różnią się faktem, że do drugiej funkcji można podać argument, który będzie zawierał adres do dokumentu przestrzeni nazw. Przykładowo w celu utworzeniu dokumentu należy wpisać:
W tym momencie do obiektu obj został przypisany nowy obiekt svg utworzony na podstawie dokumentu http:/www.w3.org/2000/svg. Powyższa linijka utworzyła na razie całkowicie pusty obiekt (tj. utworzyć pusty obiekt div).
Kolejny krok polega teraz na nadaniu obiektowi atrybutów. Najważniejsze z nich to: xmlns, aby przeglądarka wyświetlała SVG prawidłowo, width i height - rozmiar obiektu oraz viewBox, która część płótna ma być widoczna. Atrybuty są dodawane do obiektu przy pomocy funkcji setAttribute, która przyjmuje dwa argumenty: (kolejno) nazwę argumentu oraz jego wartość.
Dotychczas utworzony obiekt ma określoną przestrzeń nazw, wymiary, a nawet, którą część dokumentu ma wyświetlać. Jedyne co teraz pozostaje to dodać jakiś obiekt. Załóżmy, że dodany obiekt to będzie kółko. Tak samo jak w przypadku tworzenia obiektu SVG należy pamiętać, aby skorzystać z funkcji createElementNS.
(1.) Utworzenie obiektu circle i (2. - 3.) ustalenie środka koła oraz (4.) jego promienia.
Do utworzonego obiektu SVG należy dodać teraz koło, następnie utworzony obiekt obj dołączyć do dokumentu. W tym przypadku zostanie od dołączony do specjalnie utworzonego obiektu.
Po wywołaniu w całości dotychczas utworzonego kodu na ekranie powinien pojawić się utworzony rysunek:
Jak można się spodziewać do tworzonych obiektów można dodawać różnego rodzaju zdarzenia. W ten sposób przykładowo można rozpocząć komunikację pomiędzy obiektem SVG, a JavaScript. Jednym z najprostszych przykładów jest dodanie zdarzenia onclick(), które zmieni kolor obiektu.
Przed przystąpieniem do tworzenia rysunku utwórzmy funkcję randomFill(), która będzie przyjmowała tylko jeden argument el. Argument ten będzie klikniętym obiektem, dla którego następnie (2. - 4.) zostaną wylosowane losowe wartości RGB, a (5.) później wylosowany kolor zostanie przypisany do klikniętego obiektu.
Poniższy kod przedstawia tworzenie nowego obiektu SVG i dodaje do niego kwadrat.
Warto zauważyć, że (7.) tworzenie obiektu rect odbywa się tak samo jak svg i circle. Ustalenie (8. - 9.) pozycji, (10. - 11.) rozmiaru, (12. - 13.) stylu obramowania oraz (14.) domyślne wypełnienie. (15.) Zdarzenie na kliknięcie również można ustalić poprzez funkcję setAttribute z atrybutem onlick. Jako wartość podaje się funkcję randomFill i przekazuje się jej kliknięty element this.
Poniższy kod odpowiednio dodaje elementy i (3.) losuje początkowy kolor przycisku:
Poniżej znajduje się efekt powyższego kodu:
Napisz program, który po kliknięciu w obiekt skasuje go, a następnie utworzy dwa nowe obiekty, które będą 20% mniejsze i losowo rozłożone. Poniżej znajduje się demo zadania: