// htmltahak/ · 05 z 09

Inline textové tagy

strong, em, b, i, code, kbd, samp, mark, del, ins, abbr, time, sub, sup — sémantické formátování textu inline. Každý tag nese jiný význam.

// Rychlý přehled — co který tag znamená
TagVizuální efektSémantika / Kdy použít
<strong>tučnýDůležitý text — sémantický důraz (screen reader změní tón)
<em>kurzívaEmfáze měnící smysl věty — screen reader změní intonaci
<b>tučnýVizuálně odlišný bez sémantiky (klíčová slova, produkty)
<i>kurzívaVizuálně odlišný bez emfáze (tituly, cizí slova, technické termíny)
<code>monospaceInline kód, příkaz, název souboru, technický termín
<kbd>monospace+boxKlávesnicový vstup — Ctrl, Enter, Tab
<samp>monospaceVýstup programu / počítače
<mark>žlutý highlightZvýraznění relevantního textu (výsledky hledání)
<del>přeškrtnutýSmazaný / odstraněný text (changelog, přeškrtnutá cena)
<ins>podtrženýVložený / přidaný text (changelog, diff)
<abbr>tečkované podtrženíZkratka s rozvinutím v title — tooltip
<time>Datum/čas — strojově čitelné přes datetime atribut
<sub>H2ODolní index — chemické vzorce, matematika
<sup>E=mc2Horní index — exponenty, poznámky pod čarou
<strong>

Důležitý text

Silná důležitost, závažnost nebo naléhavost. Vizuálně tučný. Screen readery změní tón hlasu.

INLINE

strong označuje text se sémanticky silnou důležitostí. Screen readery mohou změnit tón hlasu. SEO: Google může brát strong jako signál relevance klíčového slova. Vizuálně tučný — ale tučnost je vedlejší efekt, ne účel.

// strong vs b — klíčový rozdíl<strong> = "toto je důležité" — sémantický záměr. <b> = "toto má být vizuálně tučné" — bez sémantiky. Screen reader reaguje na strong, b ignoruje. Pro čistě vizuální tučnost použijte b nebo CSS font-weight.
Alternativy
<b> pro vizuálně tučný bez sémantiky CSS font-weight: bold
  • strong = "toto je důležité" (sémantické)
  • b = "toto je vizuálně odlišné" (bez sémantiky)
  • Nepřehánějte — strong ztrácí efekt pokud je všude
  • Vnořené strong zvyšují důraz
Živé demo
Varování: Nikdy neotvírejte tento soubor!
Cena: 299 Kč
Přečtěte si bezpečnostní pokyny.
Příklad
HTML
<!-- Důležité varování -->
<p>
  Varování:
  <strong>Nikdy neotvírejte tento soubor!</strong>
</p>

<!-- Cena / klíčový údaj -->
<p>Cena: <strong>299 Kč</strong></p>

<!-- strong vs b -->
<p>
  <strong>Důležité:</strong> toto je klíčové.
  Výsledky jsou <b>tučně</b> — jen vizuálně.
</p>
<strong> pro důležité varování
<strong> pro každé druhé slovo
<em>

Emfáze textu

Mění smysl věty zdůrazněním slova. Vizuálně kurzíva. Screen reader změní intonaci.

INLINE

em (emphasis) mění smysl věty zdůrazněním konkrétního slova. Příklad: "Chci toto jablko" vs "Chci toto jablko" — jiný smysl! Vizuálně kurzíva. Screen reader změní intonaci mluvené řeči.

// em vs i — klíčový rozdíl<em> = sémantická emfáze měnící smysl věty. <i> = vizuální kurzíva bez emfáze (název knihy, cizí slovo, technický termín, vnitřní myšlenky postavy). Screen reader reaguje na em, i čte normálně.
Alternativy
<i> pro kurzívu bez emfáze CSS font-style: italic
  • em = mění smysl věty zdůrazněním
  • i = vizuální kurzíva (tituly, cizí slova)
  • Vnořené em zvyšují důraz
  • Screen reader: em mění intonaci, i ne
Živé demo — rozdíl v důrazu
Chci toto jablko. (toto, ne tamto)
Chci toto jablko. (jablko, ne hruška)
Přečtěte důkladně. (sémantický důraz)
Přečtěte Harry Potter. (název — i)
Příklad
HTML
<!-- em mění smysl věty -->
<p>Chci <em>toto</em> jablko.</p>
<p>Chci toto <em>jablko</em>.</p>

<!-- em vs i -->
<p>Přečtěte <em>důkladně</em>.</p>
<!-- ↑ sémantický důraz -->

<p>Přečtěte <i>Harry Potter</i>.</p>
<!-- ↑ název knihy = i, ne em -->

<p lang="la">
  Termín <i lang="la">in absentia</i>.
</p>
<!-- ↑ latinský výraz = i -->
<code> <kbd> <samp>

Kód, klávesy, výstup

code = inline kód. kbd = klávesnicový vstup. samp = výstup programu. Všechny monospace.

INLINE

Tři příbuzné tagy pro technický obsah. code = kód nebo technický termín inline v textu. kbd = klávesnicový vstup (Ctrl, Enter...). samp = výstup počítače nebo programu. Všechny prohlížeč zobrazuje monospace fontem.

// Proč ne jen span?code, kbd, samp mají sémantiku — screen readery a vývojářské nástroje je rozlišují. Syntaktické zvýrazňovače (Prism.js, highlight.js) hledají code elementy. Pro víceřádkový kód: pre+code.
Kdy co použít
<code>Inline kód, příkaz, proměnná, soubor, funkce
<kbd>Klávesnicový vstup — Ctrl, Enter, Tab, F5
<samp>Výstup z terminálu nebo programu
<var>Matematická nebo programovací proměnná
  • code inline, pre+code pro víceřádkové bloky
  • kbd lze stylovat jako fyzická klávesa
  • samp pro terminálový výstup, chybové hlášky
  • class="language-js" pro Prism.js highlighting
Živé demo
Použijte console.log() pro debug.
Uložte: Ctrl + S
Výstup: Error: file not found
Příklad
HTML + CSS
<!-- Inline kód -->
<p>
  Funkce <code>console.log()</code>
  vypíše hodnotu.
</p>

<!-- Klávesová zkratka -->
<p>
  Uložte pomocí
  <kbd>Ctrl</kbd> + <kbd>S</kbd>.
</p>

<!-- Výstup programu -->
<p>
  Terminál zobrazil:
  <samp>Permission denied</samp>.
</p>

<!-- CSS pro kbd jako fyzická klávesa -->
<style>
kbd {
  background: #f5f5f5;
  border: 1px solid #ccc;
  border-bottom: 2px solid #aaa;
  border-radius: 3px;
  padding: 1px 6px;
  font-family: monospace;
  font-size: 0.85em;
  color: #333;
}
</style>
<mark>

Zvýraznění

Označí text relevantní v aktuálním kontextu. Výsledky vyhledávání, důležité pasáže v citaci.

INLINEHTML5

mark označuje text relevantní pro uživatele v aktuálním kontextu — výsledky vyhledávání (highlight hledaného slova), důležité pasáže v citaci. Vizuálně žluté pozadí. Sémanticky odlišný od strong (důležitost) a em (emfáze).

// Dynamické zvýraznění vyhledáváníJavaScript dynamicky obaluje hledané slovo do <mark> tagu při search funkci. Například: text.replace(query, '<mark>$&</mark>'). mark je pro toto přesně určen — "toto je relevantní pro vaše hledání".
Alternativy
<span> s žlutým background — bez sémantiky
  • Dynamicky přidávejte JS při vyhledávání na stránce
  • CSS: mark { background: #fff176; }
  • Nepoužívejte pro stylování — použijte span
  • mark vs strong: mark = relevantní, strong = důležité
Živé demo
Hledali jste "HTML": HTML je základní jazyk webu.
Zvýraznění v citaci:
"Věnujte pozornost bezpečnosti."
Příklad + JS zvýraznění
HTML + JS
<!-- Výsledky vyhledávání -->
<p>
  Hledali jste "HTML":
  <mark>HTML</mark> je jazyk webu.
</p>

<!-- JS: dynamické zvýraznění -->
<script>
function highlightSearch(text, query) {
  if (!query) return text;
  const re = new RegExp(
    query.replace(/[.*+?^${}()|]/g, '\\$&'),
    'gi'
  );
  return text.replace(re,
    match => `<mark>${match}</mark>`
  );
}

// Použití:
const el = document.getElementById('content');
el.innerHTML = highlightSearch(
  el.textContent, 'html'
);
</script>
<del> & <ins>

Smazaný / vložený text

del = přeškrtnutý (odstraněno), ins = podtržený (přidáno). Pro changelog, diff, přeškrtnuté ceny.

INLINE

del označuje odstraněný text, ins vložený text. Typicky pro changelog, diff zobrazení, nebo přeškrtnuté staré ceny v e-shopu. Oba mají cite (URL zdroje změny) a datetime (kdy se změna stala) atributy.

// del vs s (strike)<del> = sémantické odstranění textu (bylo odstraněno při editaci). <s> = text který již není přesný nebo relevantní — přeškrtnutý bez kontextu změny. Přeškrtnutá cena v e-shopu = <s> (původní cena je zastaralá), ne <del>.
Atributy (oba tagy)
citeURL dokumentu vysvětlujícího změnuURL
datetimeKdy byla změna provedena (ISO 8601)2024-03-15
Alternativy
<s> pro zastaralý text (ne změna) CSS text-decoration: line-through
  • del + ins tvoří přirozený diff/changelog
  • datetime atribut pro strojové čtení
  • Přeškrtnutá cena: <s> je sémanticky správnější než <del>
  • Screen reader ohlásí del jako smazaný text
Živé demo
Cena: 499 Kč 299 Kč
Stará verze textu
Nová verze textu
Příklad
HTML
<!-- Přeškrtnutá cena -->
<p>
  Cena:
  <s>499 Kč</s>
  <strong>299 Kč</strong>
</p>

<!-- Changelog / diff -->
<p>
  <del datetime="2024-01-15">
    Stará verze textu článku.
  </del>
  <ins datetime="2024-03-10">
    Aktualizovaná verze textu.
  </ins>
</p>

<!-- CSS -->
<style>
del { color: #999; }
ins {
  color: #2a7;
  text-decoration: none;
  background: rgba(0,200,0,0.1);
}
s { color: #999; }
</style>
<abbr>

Zkratka

Označí zkratku nebo akronym. Atribut title obsahuje plné znění — zobrazí se jako tooltip.

INLINE

abbr (abbreviation) označuje zkratky a akronymy. Atribut title obsahuje plný název — prohlížeč zobrazí tooltip při najetí myší. Screen readery mohou přečíst plné znění místo zkratky.

// Přístupnost pro zkratkyUživatelé ne vždy znají zkratky. abbr+title = tooltip. Ale tooltip není dostupný na mobilech! Pro mobilní přístupnost rozepište zkratku při prvním výskytu v závorce: "HTML (HyperText Markup Language)".
Atributy
titlePlné znění zkratky — zobrazí se jako tooltipstring
  • title obsahuje plné znění — bez teček nebo pomlček
  • CSS: abbr[title] { cursor: help; }
  • Při prvním výskytu rozepište v závorce pro mobily
  • Screen reader může přečíst title místo zkratky
Živé demo
HTML je základní jazyk webu.
DPH je 21 %.
Příklad
HTML + CSS
<!-- Základní zkratka -->
<p>
  <abbr title="HyperText Markup Language">
    HTML
  </abbr>
  je jazyk webu.
</p>

<!-- Při prvním výskytu rozepsat -->
<p>
  <abbr title="Daň z přidané hodnoty">DPH</abbr>
  (Daň z přidané hodnoty) je 21 %.
</p>

<!-- CSS -->
<style>
abbr[title] {
  text-decoration: underline dotted;
  cursor: help;
}
/* Vlastní tooltip (lepší UX) */
abbr[title]:hover::after {
  content: " (" attr(title) ")";
  font-size: 0.85em;
  color: #666;
}
</style>
<time>

Datum a čas

Sémanticky označí datum nebo čas. datetime = strojově čitelná forma pro vyhledávače a RSS.

INLINEHTML5

time označuje datum nebo čas. Vizuálně se nijak neliší, ale datetime atribut obsahuje strojově čitelné datum. Google ho používá pro rich results (datum článku v výsledcích vyhledávání). RSS čtečky čtou datetime.

// datetime formátISO 8601: datum 2024-03-15, čas 14:30, datum+čas 2024-03-15T14:30:00, pouze rok 2024, měsíc 2024-03. JavaScript: nový Date(el.dateTime) vrátí Date objekt.
Atributy
datetimeISO 8601 datum/čas pro stroje2024-03-15T14:30
  • datetime = ISO 8601 formát vždy
  • Viditelný text může být v libovolném formátu
  • JS: el.dateTime vrátí atribut datetime
  • timeago.js pro "před 2 dny" formát
  • Google: datum článku z time datetime
Příklady
HTML + JS
<!-- Datum článku -->
<time datetime="2024-03-15">
  15. března 2024
</time>

<!-- Čas -->
<time datetime="14:30">14:30</time>

<!-- Datum i čas -->
<time datetime="2024-03-15T14:30:00">
  15. 3. 2024 ve 14:30
</time>

<!-- Relativní čas pomocí JS -->
<time datetime="2024-03-15"
  id="pubDate">
  15. 3. 2024
</time>

<script>
const el = document.getElementById('pubDate');
const date = new Date(el.dateTime);
const now = new Date();
const diffDays = Math.floor(
  (now - date) / (1000 * 60 * 60 * 24)
);
if (diffDays === 0) el.textContent = 'Dnes';
else if (diffDays === 1) el.textContent = 'Včera';
else el.textContent = `Před ${diffDays} dny`;
</script>
<sub> & <sup>

Dolní / horní index

sub = dolní index (chemie, matematika). sup = horní index (exponent, poznámka pod čarou).

INLINE

sub (subscript) posune text dolů — pro chemické vzorce (H₂O), matematické indexy. sup (superscript) posune text nahoru — pro exponenty (x²), poznámky pod čarou (text¹). Oba automaticky zmenší velikost fontu.

// Proč ne jen CSS?sub a sup mají sémantiku — screen readery je správně interpretují jako "dolní index" nebo "horní index". CSS vertical-align: sub/super pouze posune text vizuálně, bez sémantiky. Pro vědecký obsah vždy použijte HTML tagy.
Alternativy
CSS vertical-align: sub/super (bez sémantiky) MathML pro složitou matematiku
  • sub pro dolní indexy: H₂O, CO₂, xₙ
  • sup pro horní indexy: x², m³, poznámky¹
  • MathML nebo KaTeX pro komplexní vzorce
  • Velikost písma lze upravit CSS font-size
Živé demo
H2O — voda
CO2 — oxid uhličitý
E = mc2 — Einsteinova rovnice
xn + yn = zn
Tvrzení1 je pravdivé.
Příklad
HTML
<!-- Chemie -->
<p>Voda je H<sub>2</sub>O.</p>
<p>CO<sub>2</sub> = skleníkový efekt.</p>

<!-- Matematika -->
<p>E = mc<sup>2</sup></p>
<p>Obvod: r<sup>2</sup> × π</p>

<!-- Poznámka pod čarou -->
<p>
  Toto tvrzení
  <sup>
    <a href="#poznamka-1">1</a>
  </sup>
  je ověřeno.
</p>

<!-- Samotná poznámka -->
<footer>
  <p id="poznamka-1">
    <sup>1</sup>
    Viz studie z roku 2024, strana 42.
  </p>
</footer>
← 04 Text 05 / 09 — Inline textové tagy 06 Média →