Co je HTML a CSS: pevné základy webu
HTML (HyperText Markup Language) definuje strukturu a význam obsahu webové stránky pomocí sémantických značek (např. <article>, <nav>, <header>). CSS (Cascading Style Sheets) určuje prezentaci tohoto obsahu – barvy, rozvržení, typografii, animace a responzivní chování. Společně zajišťují oddělení obsahu od prezentace, což zvyšuje udržovatelnost, přístupnost i výkon.
Sémantická struktura HTML: od kostry k významu
- Hlavní bloky:
<header>,<main>,<footer>,<section>,<article>,<aside>zlepšují čitelnost pro čtečky obrazovky a SEO. - Navigace:
<nav>pro primární i sekundární nabídky; používejte popisné texty odkazů (např. „O nás“ místo „Klikněte zde“). - Nadpisy a hierarchie: udržujte logickou posloupnost nadpisů
<h2>…<h6>v rámci sekcí; každý dokument má mít jeden hlavní účel a jasnou strukturu. - Obrázky a média:
<img alt="popis">s výstižným alternativním textem; pro složitější popisy využijte<figure>a<figcaption>. - Formuláře: vždy propojujte
<label for>a<input id>; používejte nativní typy (email,tel,date) pro lepší uživatelský komfort a validaci.
Metadata, SEO a hlavička dokumentu
- Jazyk a kódování:
<html lang="cs">,<meta charset="utf-8">. - Viewport a responzivita:
<meta name="viewport" content="width=device-width, initial-scale=1">. - Popisky:
<title>a<meta name="description">s jasným sdělením; Open Graph (og:) a karty Twitteru pro sdílení. - Strukturovaná data: JSON-LD (schema.org) pro zvýraznění ve výsledcích vyhledávání (události, produkty, články).
- Kanoničnost a indexace:
<link rel="canonical">, direktivyrobots, kvalitní interní prolinkování.
Kaskáda v CSS: pořadí, dědičnost a specificita
- Pořadí zdrojů: později načtená pravidla přepisují dřívější (pokud je specificita shodná).
- Dědičnost: vlastnosti jako
colorafont-familyse dědí; vlastnosti rozvržení (např.margin) se obvykle nedědí. - Specificita: vložené styly > selektory ID > selektory tříd/atributů/pseudotříd > selektory značek; pro snadné přepisování používejte co nejnižší specificitu.
- !important: nouzový nástroj, který komplikuje údržbu; upřednostňujte refaktorování pravidel a architekturu stylů.
Selektory a pseudotřídy: přesné cílení bez přestřelů
- Základ: typové selektory (
p), třídy (.btn), ID (#app), potomci a sourozenci (.card > h2,+ / ~). - Atributové selektory: např.
a[href^="https"],input[type="search"]pro cílení bez dalších tříd. - Pseudotřídy uživatelského rozhraní:
:hover,:focus,:focus-visible,:disabled,:checkedzlepšují použitelnost. - Strukturální pseudotřídy:
:first-child,:last-of-type,:nth-child()pro tabulky a seznamy. - Pseudoelementy:
::before,::after,::markerpro dekorace bez zbytečného HTML.
Box model a typografie: základní stavebnice vzhledu
- Box model: obsah → výplň (
padding) → ohraničení (border) → vnější okraj (margin). Nastavtebox-sizing: border-boxpro předvídatelné výpočty. - Typografie: volte promyšlenou škálu (
clamp()pro plynulé velikosti), řádkování 1.4–1.8 podle fontu, dostatečný kontrast a délku řádku kolem 60–80 znaků. - Webové fonty:
font-display: swappomáhá předcházet FOIT; zvažte proměnné fonty (variable fonts) pro snížení počtu souborů.
Moderní rozvržení: Flexbox a CSS Grid
- Flexbox: jednorozměrné rozvržení (osy, centrování, mezery pomocí
gap), ideální pro řádky karet, navigace a formulářů. - CSS Grid: dvourozměrné mřížky, pojmenované oblasti,
minmax(),auto-fit/auto-fillpro responzivní šablony bez mediálních dotazů. - Subgrid: konzistentní zarovnání vnořených prvků napříč složitými komponentami.
- Mezery: upřednostňujte
gappřed „hřebínkovým“ používáním marginů pro jednodušší údržbu.
Responzivní design: media a container queries
- Media queries: rozvržení a typografie pro různé šířky; postupujte od mobilních zařízení (
@media (min-width: ...)). - Container queries: stylujte komponenty podle šířky jejich kontejneru, nikoli okna; zvyšují modularitu a znovupoužitelnost.
- Plynulé jednotky:
rem,vw,ch; funkceclamp(min, pref, max)pro plynulé škálování. - Preferované režimy: respektujte
prefers-color-scheme(světlý/tmavý režim) aprefers-reduced-motionpro lepší přístupnost.
Proměnné CSS a kaskádové vrstvy
- Vlastní vlastnosti:
--color-primary,--space-2umožňují motivy, tmavý režim a konzistentní designový systém. - Kaskádové vrstvy (
@layer): definujte pořadí (např.@layer reset, base, components, utilities;) a minimalizujte konflikty. - Vypočítané hodnoty:
calc(),min(),max()pro adaptivní rozměry bez zbytečných bodů zlomu.
Animace a interakce bez JavaScriptu
- Přechody:
transition: property duration timing-functionpro plynulé změny stavu. - Klíčové snímky:
@keyframespro složitější pohyby; kvůli výkonu dávejte přednost vlastnostemtransformaopacity. - Důraz na přístupnost: umožněte omezení pohybu a nikdy nespoléhejte na animaci při předávání zásadních informací.
Přístupnost (a11y) a ARIA v praxi
- Nejprve sémantika: upřednostňujte nativní prvky před rolemi ARIA; ARIA HTML „doplňuje“, nikoli nahrazuje.
- Fokus a klávesnice:
:focus-visible, logická posloupnost, viditelné obrysy; neodstraňujte outline bez náhrady. - Kontrast a barvy: dodržujte minimální kontrast; nepředávejte informace pouze barvou.
- Dynamický obsah: používejte
aria-livepro dynamické zprávy a validaci formulářů.
Architektura stylů: škálovatelnost a údržba
- Metodiky: BEM (
.blok__prvek--modifikator), ITCSS (vrstvení od resetu po utility), OOCSS pro znovupoužitelnost. - Modularita: komponentové styly na úrovni prvků uživatelského rozhraní; minimalizujte globální selektory.
- Designové tokeny: jediný zdroj pravdy pro barvy, mezery, poloměry zaoblení a stíny; sdílení napříč platformami.
Výkon a osvědčené postupy
- Kritické CSS: vložte přímo pouze nezbytné styly pro první vykreslení; zbytek načtěte asynchronně.
- Minimalizace a deduplikace: odstraňte nepoužívané CSS (např. během procesu sestavení); upřednostňujte nižší specificitu a kratší kaskádu.
- Obrázky: moderní formáty (AVIF/WebP), atributy
width/height,loading="lazy",decoding="async". - Reflow a překreslování: optimalizujte změny rozvržení pomocí
transform, vyhýbejte se nákladným vlastnostem (např.box-shadowve velkém rozsahu).
Kompatibilita a progresivní vylepšování
- Podpora prohlížečů: používejte
@supports()pro podmíněné styly a náhradní řešení. - Autoprefixer a PostCSS: generují předpony dodavatelů podle cílových prohlížečů; snižují technický dluh.
- Progresivní vylepšování: základní uživatelský komfort funguje všude, pokročilé efekty se aktivují tam, kde jsou podporovány.
Formuláře, validace a detaily uživatelského komfortu
- Typy vstupů:
email,number,range,datezlepšují nápovědu i ovládání klávesnicí na mobilech. - Stavy polí: styly pro
:focus,:valid,:invalid,:disableda chybové zprávy zvyšují srozumitelnost. - Velikost klikacích ploch: minimálně přibližně 44 × 44 px pro dotykové ovládání; zajistěte, aby bylo možné kliknutím na štítek vybrat celý řádek.
Bezpečnost HTML/CSS na úrovni šablon
- Sanitizace vstupů: nikdy nevkládejte do DOM neověřený řetězec HTML; předejdete tak XSS.
- Content Security Policy (CSP): omezte zdroje stylů a skriptů; místo vloženého kódu upřednostňujte nonce/hash.
- Atributy bezpečných odkazů:
rel="noopener noreferrer"protarget="_blank".
Nástroje, workflow a automatizace
- Build pipeline: PostCSS, Autoprefixer, minifikace, extrakce kritického CSS.
- Lintování a stylové konvence: Stylelint, Prettier; společná pravidla pro konzistentní kód.
- Designové systémy: dokumentace komponent, živé náhledy, katalogizace vzorů.
- Verzování a CI/CD: kontrola regresí stylů (vizuální testy), kontrola velikosti balíčků.
Mezinárodní prostředí a lokalizace
- Směr psaní: podpora LTR/RTL pomocí
dira logických vlastností (margin-inline,padding-block). - Jednotky a formáty: místní formáty data, času a čísel; dostatek prostoru pro delší řetězce v jiných jazycích.
Kontrolní seznam před nasazením
- Validní HTML, sémantika, alternativní texty a nadpisy sekcí.
- Dostatečný kontrast, možnost zaměření prvků a navigace klávesnicí.
- Kritické CSS vložené přímo, zbytek načítaný se zpožděním; minifikace a deduplikace.
- Responzivní chování ověřené v široké škále šířek a zařízení.
- Bezpečnost odkazů, CSP, žádné vložené styly tam, kde je politika vyžaduje nepoužívat.
- Automatické testy stylů a vizuálních regresí v CI.
Závěr: cílem je udržitelný web
Kombinace sémantického HTML a disciplinovaného CSS vytváří weby, které jsou přístupné, rychlé, škálovatelné a snadno udržovatelné. Důraz na kaskádu, nízkou specificitu, proměnné a moderní rozvržení (Flexbox, Grid, container queries) umožňuje vytvářet robustní komponenty, které lze bez problémů dále rozvíjet. Spojením těchto principů s automatizovaným workflow a pečlivým testováním vzniká dlouhodobě udržitelný základ front-endu.
