Interaktivita SVG + JavaScript Cvičení 3 Z8144 Počítačová grafika v kartografii Jaro 2019 Šimon Leitgeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly Syntaxe Příklady Základní tvary rectangle rect obdélník/čtverec circle circle kruh ellipse ellipse elipsa line line úsečka polygon polygon polyline polyline lomená čára path path trasa text text Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly Syntaxe Příklady Trasa Path Velká písmena – absolutní pozice malá písmena – relativní pozice moveto M(x y)+ (posun na místo) closepath Z- (uzavření trasy) lineto L(x y)+ (vykresli čáru až do bodu) horizontal lineto H(x)+ (rovnoběžná čára až do) vertical lineto V(y)+ (svislá čára) curveto C(x1 y1 x2 y2 x y)+ smooth curveto S(x2 y2 x y)+ quadratic Bézier curve Q(x1 y1 x y)+ smooth quadratic Bézier curveto T(x y)+ elliptical Arc A(…) (eliptická výšeč/úseč) http://www.w3.org/TR/SVG/paths.html Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly Syntaxe Příklady Trasa – příklad 1 Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly Syntaxe Příklady Trasa – příklad 2 Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly Syntaxe Příklady Trasa – příklad 3 Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly onclick onmouseover / onmouseout onkeydown / onkeyup JavaScript – základní eventy (události) onclick kliknutí myší onmouseover najetí myší na prvek onmouseout odjetí myší z prvku onkeydown stisk klávesy onkeyup konec stisku klávesy Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly onclick onmouseover / onmouseout onkeydown / onkeyup onclick

Testovací div

Příklad: https://codepen.io/LeSimon/pen/ywgovB Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly onclick onmouseover / onmouseout onkeydown / onkeyup onmouseover / onmouseout function testmouseover(element){ element.style.backgroundColor='green'; }; function testmouseout(element){ element.style.backgroundColor='red'; };

Testovací div

Příklad: https://codepen.io/LeSimon/pen/oVBeqe Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly onclick onmouseover / onmouseout onkeydown / onkeyup onkeydown / onkeyup function testKeyUp(event){ event.target.style.backgroundColor='red'; } function testKeyDown(event){ event.target.style.backgroundColor='green'; } document.getElementById("input").addEventListener("keyup", testKeyUp);→ document.getElementById("input").addEventListener("keydown", testKeyDown);→ → Příklad: https://codepen.io/LeSimon/pen/ywgoEL Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly 1. úkol 2. úkol 1. úkol V SVG: Vytvořte mapové pole, které bude obsahovat smyšlený stát a jeho okresy (alespoň 5 okresů). Toto mapové pole (obrysy jednotlivých krajů) vytvořte pomocí tras. Použijte i křivky nebo kruhové výseče. Jednotlivým „krajům“ přidejte atribut ”data-population”, který bude obsahovat fiktivní data o populaci. Výsledek si uložte někam na disk (budeme s ním dále pracovat). Šimon Leitgeb Interaktivita SVG + JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SVG – opakování JavaScript – opakování Úkoly 1. úkol 2. úkol 2. úkol Přidejte interaktivitu této „mapě“. Pomocí JavaScriptu (mimo SVG) nastavte ”onmouseover” a ”onmouseout” event. Po najetí myší na libovolný „kraj“ by se tento kraj měl zabarvit definovanou barvou (vyberte si vlastní). Zároveň by se někde na stránce měl zobrazit údaj o populaci daného kraje. Pokud jste správně nastavili atribut data-population, dostanete se k němu v JS pomocí element.dataset.population Po odjetí myší se daný kraj odbarvit a informace o populaci zmizí. úkol odevzdávejte jako jeden HTML soubor nebo archiv .zip Šimon Leitgeb Interaktivita SVG + JavaScript Díky za pozornost! https://discord.gg/UHTPUDU . . . . . . . . . . . . . . . . . . . .