7 changed files with 265 additions and 3 deletions
@ -0,0 +1,29 @@ |
|||||
|
# 21 - Souhrnné Opakování |
||||
|
|
||||
|
## 🎯 Co se naučíte |
||||
|
|
||||
|
Tato lekce slouží k upevnění znalostí z předchozích částí kurzu, zejména práce s Bootstrapem, layoutem a základní DOM manipulací. |
||||
|
|
||||
|
## 📚 Témata lekce |
||||
|
|
||||
|
- **Bootstrap Layout** - container, row, col a jejich kombinace |
||||
|
- **Komponenty** - Card, Navbar, Buttons |
||||
|
- **Responzivita** - breakpointy a utility třídy |
||||
|
- **DOM interakce** - načítání dat a jejich zobrazování v Bootstrap struktuře |
||||
|
|
||||
|
## 📂 Soubory v projektu |
||||
|
|
||||
|
- `index.html` - hlavní soubor s opakováním |
||||
|
- `css/` - vlastní styly pro doplnění Bootstrapu |
||||
|
- `js/` - JavaScriptová logika |
||||
|
|
||||
|
## 🚀 Jak s lekcí pracovat |
||||
|
|
||||
|
1. Otevřete `index.html` v prohlížeči. |
||||
|
2. Projděte si strukturu stránky a podívejte se, jak jsou použity Bootstrap třídy. |
||||
|
3. Zkuste změnit barvy nebo rozložení prvků pomocí utility tříd. |
||||
|
|
||||
|
## 🔗 Související lekce |
||||
|
|
||||
|
- **Předchozí:** 20_ajax - Práce s daty |
||||
|
- **Navazující:** 22_javascripthra - Praktické využití v logice hry |
||||
@ -0,0 +1,31 @@ |
|||||
|
# 22 - JavaScript Hra (Logika a DOM) |
||||
|
|
||||
|
## 🎯 Co se naučíte |
||||
|
|
||||
|
V této lekci si vytvoříte jednoduchou hru, na které si procvičíte herní logiku, stavové proměnné a dynamickou aktualizaci HTML. |
||||
|
|
||||
|
## 📚 Témata lekce |
||||
|
|
||||
|
- **Stav hry (State)** - proměnné, které drží aktuální skóre, počet životů apod. |
||||
|
- **Události (Events)** - reakce na kliknutí, stisk klávesy |
||||
|
- **DOM Manipulace** - přepisování textu, měnění barev a obrázků podle stavu hry |
||||
|
- **Podmínky a Cykly** - logika pro výhru/prohru |
||||
|
- **Raw vs. Final** - rozdíl mezi základní kostrou (`index_raw.html`) a hotovým projektem |
||||
|
|
||||
|
## 📂 Soubory v projektu |
||||
|
|
||||
|
- `index.html` - hotová hra |
||||
|
- `index_raw.html` - výchozí stav pro začátek kódování |
||||
|
- `hra.js` - kompletní logika hry |
||||
|
- `hra_raw.js` - šablona pro samostatnou práci |
||||
|
|
||||
|
## 🚀 Jak s lekcí pracovat |
||||
|
|
||||
|
1. Otevřete `index.html` a zahrajte si hru. |
||||
|
2. Podívejte se do `hra.js` na to, jak jsou ošetřeny různé herní situace. |
||||
|
3. Zkuste si hru upravit (přidat úrovně obtížnosti, změnit grafiku). |
||||
|
|
||||
|
## 🔗 Související lekce |
||||
|
|
||||
|
- **Předchozí:** 21_opakovani - Základy pro stavbu aplikací |
||||
|
- **Následující:** 23_zvetsovadlo - Interaktivní prvky |
||||
@ -0,0 +1,30 @@ |
|||||
|
# 23 - Zvětšovadlo (Dynamické Styly) |
||||
|
|
||||
|
## 🎯 Co se naučíte |
||||
|
|
||||
|
V této lekci se naučíte, jak pomocí JavaScriptu ovládat vzhled prvků v reálném čase, včetně práce s barvami a velikostmi. |
||||
|
|
||||
|
## 📚 Témata lekce |
||||
|
|
||||
|
- **Input Events** - události `input`, `change` |
||||
|
- **Dynamic Styling** - přímá manipulace s `element.style` |
||||
|
- **Typy Inputů** - práce s `color`, `range` a `text` |
||||
|
- **Interpolace řetězců** - skládání CSS hodnot (např. `fontSize = size + "px"`) |
||||
|
|
||||
|
## 📂 Soubory v projektu |
||||
|
|
||||
|
- `index.html` - interaktivní stránka s ovládacími prvky |
||||
|
- `css/` - základní stylování |
||||
|
- `js/` - logika pro změnu stylů |
||||
|
|
||||
|
## 🚀 Jak s lekcí pracovat |
||||
|
|
||||
|
1. Otevřete `index.html`. |
||||
|
2. Hýbejte s posuvníky a sledujte, jak se mění text uprostřed. |
||||
|
3. Vyzkoušejte změnu barvy pozadí i textu. |
||||
|
4. Prostudujte kód v JavaScriptu, který tyto změny provádí. |
||||
|
|
||||
|
## 🔗 Související lekce |
||||
|
|
||||
|
- **Předchozí:** 22_javascripthra - Logika aplikací |
||||
|
- **Následující:** 24_fetch - Načítání externích dat |
||||
@ -0,0 +1,53 @@ |
|||||
|
# 24 - Fetch API (Praktické ukázky) |
||||
|
|
||||
|
## 🎯 Co se naučíte |
||||
|
|
||||
|
V této lekci si prakticky vyzkoušíte práci s externími API pro načítání textových i obrazových dat. |
||||
|
|
||||
|
## 📚 Témata lekce |
||||
|
|
||||
|
- **Fetch API** - základní použití s `.then()` |
||||
|
- **Dynamické URL** - skládání parametrů do URL adresy |
||||
|
- **Template Literals** - práce s backticks (`` ` ``) pro vkládání proměnných do řetězců |
||||
|
- **Práce s obrázky** - dynamická změna `src` atributu a událost `onload` |
||||
|
- **Integrace Bootstrapu** - vizuální stránka aplikací |
||||
|
|
||||
|
## 📂 Soubory v projektu |
||||
|
|
||||
|
- `cnj.html` - generátor náhodných vtipů Chucka Norrise (api.chucknorris.io) |
||||
|
- `picsum.html` - generátor náhodných obrázků s nastavitelnými rozměry (picsum.photos) |
||||
|
|
||||
|
## 💻 Klíčové koncepty |
||||
|
|
||||
|
### Načítání JSON dat (cnj.html): |
||||
|
```javascript |
||||
|
function getJoke(){ |
||||
|
fetch("https://api.chucknorris.io/jokes/random") |
||||
|
.then(response => response.json()) |
||||
|
.then(data => { |
||||
|
jokeText.textContent = data.value; |
||||
|
}); |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### Práce s obrázky a parametry (picsum.html): |
||||
|
```javascript |
||||
|
function getRandomImg(){ |
||||
|
let width = widthIn.value; |
||||
|
let height = heightIn.value; |
||||
|
// Použití template literals a náhodného parametru pro zamezení cachování |
||||
|
let newImgUrl = `https://picsum.photos/${width}/${height}?random=${Math.random()}` |
||||
|
randomImg.src = newImgUrl; |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## 🚀 Jak s lekcí pracovat |
||||
|
|
||||
|
1. Otevřete `cnj.html` a vyzkoušejte tlačítko pro nový vtip. |
||||
|
2. Otevřete `picsum.html`, změňte rozměry a klikněte na "Další obrázek". |
||||
|
3. Prozkoumejte, jak se v JavaScriptu mění atributy HTML elementů. |
||||
|
|
||||
|
## 🔗 Související lekce |
||||
|
|
||||
|
- **Předchozí:** 20_ajax - Základy Fetch API |
||||
|
- **Následující:** 25_fetch_await - Moderní zápis pomocí async/await |
||||
@ -0,0 +1,59 @@ |
|||||
|
# 25 - Moderní Fetch s Async / Await |
||||
|
|
||||
|
## 🎯 Co se naučíte |
||||
|
|
||||
|
V této lekci se naučíte moderní a přehlednější způsob práce s asynchronním kódem pomocí klíčových slov `async` a `await`. |
||||
|
|
||||
|
## 📚 Témata lekce |
||||
|
|
||||
|
- **async / await** - moderní syntax pro asynchronní operace |
||||
|
- **try / catch / finally** - komplexní ošetření chyb v asynchronním kódu |
||||
|
- **Response.ok** - kontrola úspěšnosti HTTP požadavku (stavové kódy 200-299) |
||||
|
- **Dynamické generování HTML** - vytváření seznamů a karet (cards) z JSON dat |
||||
|
- **Vnořené požadavky** - načítání souvisejících dat (např. příspěvky konkrétního uživatele) |
||||
|
- **Stav aplikace** - práce s UI během načítání (loading indicators, zablokování tlačítek) |
||||
|
|
||||
|
## 📂 Soubory v projektu |
||||
|
|
||||
|
- `index.html` - uživatelské rozhraní pro vyhledávání uživatelů a jejich příspěvků |
||||
|
- `script.js` - logika aplikace s využitím `async/await` a JSONPlaceholder API |
||||
|
- `style.css` - stylování výsledků a karet uživatelů |
||||
|
|
||||
|
## 💻 Klíčové koncepty |
||||
|
|
||||
|
### Struktura async funkce s error handlingem: |
||||
|
```javascript |
||||
|
async function nactiData() { |
||||
|
try { |
||||
|
const odpoved = await fetch(url); |
||||
|
|
||||
|
// Kontrola, zda server odpověděl úspěšně |
||||
|
if (!odpoved.ok) { |
||||
|
throw new Error("Data se nepodařilo načíst"); |
||||
|
} |
||||
|
|
||||
|
const data = await odpoved.json(); |
||||
|
// Práce s daty... |
||||
|
|
||||
|
} catch (error) { |
||||
|
// Ošetření chyby |
||||
|
console.error("Chyba:", error.message); |
||||
|
} finally { |
||||
|
// Provede se vždy (např. skrytí loaderu) |
||||
|
console.log("Pokus o načtení dokončen"); |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## 🚀 Jak s lekcí pracovat |
||||
|
|
||||
|
1. Otevřete `index.html`. |
||||
|
2. Klikněte na "Načíst vše" pro zobrazení seznamu uživatelů. |
||||
|
3. Zadejte ID uživatele (1-10) a vyhledejte konkrétní osobu. |
||||
|
4. Po nalezení uživatele se aktivuje tlačítko pro načtení jeho příspěvků (postů). |
||||
|
5. Sledujte v `script.js`, jak jsou funkce řetězeny a jak se mění stav UI. |
||||
|
|
||||
|
## 🔗 Související lekce |
||||
|
|
||||
|
- **Předchozí:** 24_fetch - Fetch API se syntaxí .then() |
||||
|
- **Následující:** 26_localstorage - Ukládání dat v prohlížeči |
||||
@ -0,0 +1,57 @@ |
|||||
|
# 26 - LocalStorage (Perzistence dat) |
||||
|
|
||||
|
## 🎯 Co se naučíte |
||||
|
|
||||
|
V této lekci se naučíte, jak ukládat jednoduchá data přímo do prohlížeče uživatele, aby zůstala zachována i po zavření okna nebo restartování počítače. |
||||
|
|
||||
|
## 📚 Témata lekce |
||||
|
|
||||
|
- **LocalStorage** - úložiště v prohlížeči (trvalé, dokud není smazáno) |
||||
|
- **setItem(key, value)** - uložení dat pod konkrétním klíčem |
||||
|
- **getItem(key)** - načtení dat pomocí klíče |
||||
|
- **removeItem(key)** / **clear()** - mazání dat |
||||
|
- **Perzistence** - zachování stavu aplikace (vítání uživatele, počítadlo návštěv) |
||||
|
- **JSON.stringify / JSON.parse** - techniky pro ukládání objektů a polí (v této lekci jen zmíněno pro jednoduchá data) |
||||
|
|
||||
|
## 📂 Soubory v projektu |
||||
|
|
||||
|
- `index.html` - rozhraní pro zadání jména a zobrazení počítadla |
||||
|
- `script.js` - logika pro práci s `localStorage` |
||||
|
- `style.css` - stylování stránky |
||||
|
|
||||
|
## 💻 Klíčové koncepty |
||||
|
|
||||
|
### Práce s daty v LocalStorage: |
||||
|
```javascript |
||||
|
// Uložení jména |
||||
|
localStorage.setItem("userName", "Jan Novák"); |
||||
|
|
||||
|
// Načtení jména |
||||
|
const savedName = localStorage.getItem("userName"); |
||||
|
|
||||
|
// Smazání konkrétního klíče |
||||
|
localStorage.removeItem("userName"); |
||||
|
|
||||
|
// Smazání celého úložiště |
||||
|
localStorage.clear(); |
||||
|
``` |
||||
|
|
||||
|
### Počítadlo návštěv: |
||||
|
```javascript |
||||
|
let visits = localStorage.getItem("visitCount") || 0; |
||||
|
visits = parseInt(visits) + 1; |
||||
|
localStorage.setItem("visitCount", visits); |
||||
|
``` |
||||
|
|
||||
|
## 🚀 Jak s lekcí pracovat |
||||
|
|
||||
|
1. Otevřete `index.html`. |
||||
|
2. Zadejte své jméno a klikněte na tlačítko uložit. |
||||
|
3. Obnovte stránku (F5) - uvidíte, že vás stránka stále vítá jménem a počítadlo návštěv se zvýšilo. |
||||
|
4. Zavřete prohlížeč a znovu jej otevřete - data tam stále budou. |
||||
|
5. Klikněte na tlačítko pro vymazání dat a pozorujte změnu. |
||||
|
|
||||
|
## 🔗 Související lekce |
||||
|
|
||||
|
- **Předchozí:** 25_fetch_await - Práce s asynchronními daty |
||||
|
- **Dokumentace:** [Web Storage API - MDN](https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API) |
||||
Loading…
Reference in new issue