Vytvoříme aplikaci pro výběr oblohy hot dogů.
- Založte si nový projekt s HTML a JavaScriptem, zatím bez Vite, jen s
index.htmlaindex.js. - Založte si soubor
hotdog.jsa v něm založte datovou strukturu pro přísady hot dogů. Každá přísada bude mít název a cenu. Např:const toppings = [ { name: 'Hořčice', price: 5, selected: false }, { name: 'Kečup', price: 5, selected: false }, { name: 'Cibule', price: 5, selected: false }, { name: 'Okurka', price: 5, selected: false }, { name: 'Paprika', price: 5, selected: false }, { name: 'Rajče', price: 5, selected: false }, { name: 'Chilli', price: 5, selected: false }, { name: 'Sýr', price: 10, selected: false }, { name: 'Slanina', price: 10, selected: false }, ];
- Tuto datovou strukturu exportujte z
hotdog.jsa importujte ji do hlavního souboruindex.js. - V souboru
hotdog.jsvytvořte funkcirenderToppings, která pomocíforEachvykreslí každou položku do stránky. Každá přísada bude mít svůj vlastní elementdivs třídoutopping. V tomto elementu budeh3s názvem přísady aps cenou. Funkci správně exportujte a použijte v hlavním souboruindex.js. - V CSS vytvořte třídu
topping--selected, která bude mít nějakým vizuálním způsobem zvýrazněnou přísadu, která je vybraná. Ve funkcirenderToppingspřidejte do elementudivtřídutopping--selected, pokud je přísada vybraná. - V souboru
hotdog.jsvytvořte funkcitoggleTopping, která bude mít jako parametr index přísady. Funkce bude měnit hodnotu vlastnostiselectedna opačnou hodnotu. Funkci správně exportujte a importujte ji v hlavním souboruindex.js. - Upravte funkci
renderToppingstak, že pomocíquerySelectorAllvyberete všechny přísady a pověsíte na ně posluchač událosticlick. Když uživatel klikne na přísadu, přepíšete její vlastnostselectedna opačnou hodnotu a zavoláte znova funkcirenderToppingspro překreslení celého seznamu. Tím by se měla přísada zvýraznit nebo zvýraznění zrušit.
- Založte si nový projekt, tentokrát s Vite bundlerem:
npm init kodim-app@latest hot-dog-vite jsx
- Smažte obsah složky
src/pagesa vlože do ní soubory z projektu hot dogu z minulého cvičení. - Styly pro stránku nyní nechceme mít nalinkované přímo v HTML, ale chceme je importovat do souboru
index.js. Proveďte tedy následující změny:- V souboru
index.htmlsmažte elementlinkpro styly. - V souboru
index.jsimportujte styly pomocíimport "./style.css";.
- V souboru
- Projekt spusťte pomocí
npm run deva vyzkoušejte si, že vše funguje.