Tagy uvnitř <head> — neviditelné na stránce, ale zásadní pro SEO, přístupnost, výkon a sdílení na sociálních sítích.
Povinný první řádek každého HTML souboru. Říká prohlížeči: "toto je HTML5".
DOCTYPE není HTML tag — je to instrukce pro prohlížeč. Bez ní prohlížeč přepne do quirks mode — retro chybový mód z 90. let, kde CSS layouty, inline-block a tabulky fungují nepředvídatelně. HTML5 DOCTYPE je nejkratší možný, neobsahuje žádnou URL.
<!doctype html> je OK<!DOCTYPE html>
<html lang="cs">
<head>
<meta charset="UTF-8">
<title>Název stránky</title>
</head>
<body>
<p>Obsah stránky</p>
</body>
</html>
Obaluje celý dokument. Atribut lang je povinný pro přístupnost a SEO.
Atribut lang="cs" říká screen readerům jakou výslovnost použít, Googlu v jakém jazyce je obsah, a prohlížeči zda nabídnout překlad. Bez lang jsou tyto funkce nespolehlivé nebo nefunkční.
| lang | Jazyk dokumentu. POVINNÉ! | cs / en / de / sk |
| dir | Směr textu pro arabštinu/hebrejštinu | ltr / rtl / auto |
lang="cs" je ISO 639-1 kód jazykalang="en-US" pro jazykovou variantulang přímo na elementu<html lang="cs"> ... </html> <!-- Více jazyků na stránce --> <html lang="cs"> <p>Ahoj světe!</p> <p lang="en">Hello world!</p> <p lang="de">Hallo Welt!</p> </html>
Obsahuje metadata — nezobrazuje se na stránce, ale je zásadní pro SEO, výkon a funkčnost.
Uvnitř head patří: meta tagy (charset, viewport, description), title, link (CSS, favicon, preload), style (inline CSS), script s defer/async. Pořadí tagů v head záleží — charset a viewport musí být první.
defer v head neblokují render stránky<head>
<!-- 1. Charset — VŽDY první! -->
<meta charset="UTF-8">
<!-- 2. Viewport -->
<meta name="viewport"
content="width=device-width,
initial-scale=1.0">
<!-- 3. Titulek -->
<title>Název | Web</title>
<!-- 4. SEO popis -->
<meta name="description"
content="Popis stránky...">
<!-- 5. CSS -->
<link rel="stylesheet" href="style.css">
<!-- 6. Favicon -->
<link rel="icon" href="favicon.ico">
<!-- 7. JS s defer -->
<script src="app.js" defer></script>
</head>
Text v záložce prohlížeče a ve výsledcích Googlu. Nejdůležitější SEO element.
Google zobrazí prvních ~55–60 znaků. Vzor: "Klíčové slovo | Název webu". Každá stránka musí mít unikátní titulek — stejné titulky poškodí SEO.
document.title = "Nový název" pro SPA<!-- Produktová stránka --> <title>Victorinox Classic | Shop.cz</title> <!-- Homepage --> <title>Shop.cz — Nože od 299 Kč</title> <!-- Kategorie --> <title>Kapesní nože | Shop.cz</title> <!-- Dynamicky v JS (SPA) --> <script> document.title = "Zpráva (3) | Chat"; </script>
Charset, viewport, SEO popis, Open Graph, Twitter Card, robots. Void element — bez zavíracího tagu.
charset UTF-8 zabrání problémům s diakritikou. viewport umožní responzivní design. description ovlivňuje CTR ve výsledcích vyhledávání. og: tagy řídí jak stránka vypadá při sdílení na Facebooku/LinkedIn.
| charset | Kódování dokumentu. Vždy UTF-8! | UTF-8 |
| name | Typ: description, viewport, robots, author | string |
| content | Hodnota metadat | string |
| property | Open Graph / Twitter Card atributy | og:title... |
| http-equiv | HTTP ekvivalent (refresh, CSP) | string |
robots: noindex pro dev/staging prostředí<!-- Charset — VŽDY první! --> <meta charset="UTF-8"> <!-- Viewport — povinné pro mobily --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- SEO popis (max 155-160 znaků) --> <meta name="description" content="Kapesní nože Victorinox. Doprava zdarma od 500 Kč."> <!-- Zakázat indexaci (dev/staging) --> <meta name="robots" content="noindex, nofollow"> <!-- Open Graph (Facebook, LinkedIn) --> <meta property="og:title" content="Victorinox Classic | Shop.cz"> <meta property="og:description" content="Kapesní nůž s 9 funkcemi."> <meta property="og:image" content="https://shop.cz/og.jpg"> <meta property="og:url" content="https://shop.cz/victorinox"> <meta property="og:type" content="website"> <!-- Twitter Card --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image" content="https://shop.cz/og.jpg">
CSS, favicon, preload, prefetch, manifest, canonical. Void element — nemá zavírací tag.
rel="preload" přednahraje kritické zdroje ihned (fonty, LCP obrázek). rel="prefetch" nízká priorita — pro zdroje příští stránky. rel="canonical" říká Googlu, která URL je originál, zabraňuje penalizaci za duplicitní obsah.
| rel | Vztah: stylesheet, icon, preload, prefetch, manifest, canonical, dns-prefetch | string |
| href | URL zdroje | URL |
| as | Pro preload: typ zdroje | font/style/image/script |
| media | Aplikovat jen pro médium | screen / print |
| crossorigin | CORS — nutné pro fonty! | anonymous |
| type | MIME typ zdroje | text/css / image/svg+xml |
crossorigin="anonymous"media="print" = načte se jen při tisku<!-- CSS --> <link rel="stylesheet" href="style.css"> <!-- Favicony --> <link rel="icon" href="favicon.ico"> <link rel="icon" href="icon.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="apple-touch-icon.png"> <!-- PWA manifest --> <link rel="manifest" href="manifest.json"> <!-- Preload — kritické zdroje --> <link rel="preload" href="font.woff2" as="font" crossorigin="anonymous"> <link rel="preload" href="hero.jpg" as="image"> <!-- Prefetch — příští stránka --> <link rel="prefetch" href="/dalsi.html"> <!-- DNS prefetch — třetí strany --> <link rel="dns-prefetch" href="//fonts.googleapis.com"> <!-- Canonical URL --> <link rel="canonical" href="https://web.cz/produkt"> <!-- Tisk --> <link rel="stylesheet" href="print.css" media="print">
Vloží CSS přímo do HTML. Vhodné pro kritické CSS, které musí být načteno okamžitě.
Kritické CSS vložené inline zabrání FOUC (Flash of Unstyled Content — záblesk nestylizované stránky než se načte externí CSS). Vkládejte jen styly potřebné pro viditelnou část stránky (above-the-fold). Zbytek načtěte přes <link>.
| media | Aplikovat jen pro dané médium | screen / print |
<link><!-- Kritické CSS inline -->
<style>
body {
margin: 0;
font-family: sans-serif;
}
.hero {
padding: 2rem;
background: #000;
color: #fff;
}
</style>
<!-- Tiskové styly -->
<style media="print">
.nav, .footer { display: none; }
body { font-size: 12pt; color: #000; }
a::after {
content: " (" attr(href) ")";
}
</style>
Vloží nebo načte JavaScript. defer nebo async zabrání blokování parsování stránky.
Script bez atributů v head blokuje parsování HTML — prohlížeč zastaví čtení stránky, stáhne a spustí JS, teprve pak pokračuje. defer = spustí po parsování, zachová pořadí skriptů. async = spustí hned po stažení, bez čekání na pořadí.
| src | URL externího JS souboru | URL |
| defer | Spustí po parsování, zachová pořadí | boolean |
| async | Spustí hned po stažení, bez pořadí | boolean |
| type | module = ES modules (auto defer) | module |
| nomodule | Fallback pro staré prohlížeče bez ES modules | boolean |
defer zachovává pořadí, async netype="module" má automaticky defer<!-- ✅ DOPORUČENO: defer v head --> <head> <script src="app.js" defer></script> </head> <!-- ✅ ES Modules (automaticky defer) --> <script type="module" src="main.js"> </script> <!-- ✅ Analytika — async (pořadí nehraje) --> <script async src="https://analytics.com/tag.js"> </script> <!-- ❌ Blokuje parsování HTML! --> <script src="app.js"></script> <!-- Nomodule fallback --> <script type="module" src="modern.js"> </script> <script nomodule src="legacy.js"> </script>