Niepodważalną zaletą grafiki wektorowej SVG jest fakt, że jest ona kompatybilna z HTML, CSS oraz JavaScript. W skrócie oznacza to, że tak dokument można wkleić bezpośrednio na stronę i jego styl automatycznie zostanie dopasowany, a co więcej może być interaktywny. W niniejszym artykule przedstawię jak wstawić grafikę wektorową na stronę, ustawić jej właściwości, a następnie stworzyć prosty skrypt, który wyświetli kolor obiektu po kliknięciu.
Jak już wcześniej wspomniałem grafikę wektorową można wstawić bezpośrednio na stronę. Oznacza to, że poniższy kod:
Można wstawić bezpośrednio do kodu strony co spowodowuje wyświetlenie obrazka na stronie:
Atrybut xlmns określa dokument według, którego ma być parsowany obiekt, ponieważ przeglądarka widząc obiekt SVG nie będzie wiedzieć, że to grafika i zinterpretuje jako kolejny obiekt HTML. Dalsze atrybuty width oraz height są domyślnie określone w px i przekazują przeglądarce informacje jakiej wielkości powinien być obrazek na stronie.
Dotychczas nieomawiany atrybut viewBox służy do określenia, która część obrazka ma zostać wyświetlona. Jego wartość składa się z czterech liczb oddzielonych spacją i są domyślnie zapisane w px. Pierwsza dwa z nich określają lewy, górny róg, a drugi prawy, dolny róg wycinanego fragmentu.
W przypadku strony internetowej nieokreślenie atrybutu viewBox może mieć nieoczekiwane skutki. Przeglądarka wyświetli wtedy fragment płótna od punktu (0, 0) do punktu (width, height). Wtedy nie zawsze oznacza, że cały obrazek zostanie wyświetlony jak to jest pokazane na obrazku poniżej:
Jednak po dodaniu atrybutu viewBox rysowane koło zostaje prawidłowo przeskalowane tak, aby zmieścić się do przeznaczonego obszaru na stronie internetowej. Dobrą praktyką jest dodawanie drobnego marginesu na boku obrazka, aby wszystkie na pewno zostały wyświetlona prawidłowo.
W przypadku, gdy nie zostawi się drobnego marginesu po każdej stronie rysunku mogłoby dojść do sytuacji jak poniżej. Linie zostały delikatnie przycięte, ponieważ prawdziwa szerokość i wysokość obrazka to suma średnicy koła oraz dwóch szerokości czarnej obwódki koła.
Załóżmy, że potrzebna jest aplikacja, która po kliknięciu w określony kolor wyświetli jego nazwę. Jako wyjściowy plik graficzny posłuży paleta kolorów przedstawiona na górze strony. Dodatkowo zostanie utworzone specjalne pole, które będzie wyświetlać żądane wartości.
Zadanie jest możliwe do zrealizowania dzięki JavaScript, którego skrypty można umieszczać bezpośrednio w kodzie SVG. Bardzo ważne jest, aby prawidłowo dodać pole tekstowe - musi mieć ono unikalny identyfikator, aby łatwiej było je znaleźć z poziomu kodu. Przypuśćmy, że id to będzie poleTekstowe.
w skrypcie zostanie zadeklarowana funkcja pokazKolor( el ), która z podanego elementu el pobierze kolor wypełnienia fill i wyświetli tę wartość w utworzonym wcześniej polu tekstowym. Funkcja pokazKolor() wygląda następująco:
Kod ten należy wstawić najlepiej zaraz po nagłówku SVG, wewnątrz obiektu svg. Następnie do każdego obiektu należy dodać onclick="pokazKolor(this)", aby po kliknięciu w dany obiekt została wywołana funkcja pokazKolor().
Jak widać po kliknięciu zaczynają się pojawiać angielskie nazwy użytych kolorów. Pełny kod programu wygląda wtedy następująco:
Napisz plik SVG, który będzie miał pięć kółek o kolorze czerwonym. Po kliknięciu w dowolną lampkę kolor powinien zmienić się na zielony, ale po ponownym na żółty i dopiero po jeszcze jednym na czerwony.
Poniżej znajduje się przykładowe, gotowe rozwiązanie: