
HTML značky <div> a <span>
Div a span jsou neutrální HTML značky, které se používají k aplikování vzhledu pomocí CSS.
Elementy <div> a <span> jsou hodně zvláštní tím, že na rozdíl od ostatních HTML značek prakticky nemají žádný význam a používají se téměř výhradně pro účely CSS stylování.
Pro účely stylování se těmto značkám přidávají třídy nebo identifikátory.
<div class="trida">
Element stylovaný přes třídu
</div>
Druhé využití je pro obalení skupiny prvků, které potřebují mít stejný atribut (například určení jazyku atributem lang) nebo pro manipulaci pomocí JavaScriptu.
Rozdíl mezi <div> a <span>
Jediný rozdíl mezi oběma značkami je v tom, že <div> je blokový (display: block) a <span> řádkový (display: inline).
Před a za značkou <div> se tedy zalomí řádek. U <span>u nikoliv.
<div>
Název značky je odvozen od anglického division = česky oddíl.
Jedná se o blokový element s povinnou počáteční i koncovou značkou. Atributy má pouze globální.
Protože se pomocí <div>ů s oblibou stavěl a staví celý layout stránek, autory HTML specifikací napadlo přidat nové strukturální značky jako jsou <header>, <article>, <section>, <footer> a podobně.
Správně by se měly používat místo <div>u, kdykoliv to dává smysl. S ohledem na problémy těchto značek ve starších prohlížečích (IE 8 je neumí stylovat bez použití JS) je k úvaze, jestli přináší tak velkou výhodu, aby mělo smysl je používat místo <div>ů.
Psát v CSS místo .footer jen footer a v HTML <div class="footer"> nebo <footer> není zase takový rozdíl.
<span>
Řádková neutrální značka, která při samotném použití nic nedělá. Například v předchozí větě je každé slovo obalené ve <span>u. Jako by nebylo.
Používá se mnohem méně než <div> (cca 3× méně). Asi proto, že řádkových značek pro zvýraznění obsahu existuje víc, než je potřeba.
Sémantika
Protože <div> a <span> nemají zvláštní sémantický význam, mělo by jejich použití být až poslední možnost, po které tvůrce webu sáhne.
Pomocí stylování není problém celý web sestavit jen z <div>ů a <span>ů a nahradit tak nadpisy, odstavce nebo seznamy.
Někteří začátečníci sahají k tomuto řešení, protože <div> a <span> mají minimum výchozích CSS pravidel, které tak není nutné přebíjet.
Není to ale úplně rozumné, protože bez používání odpovídajících HTML značek se z kódu vytratí čitelnost pro nevisuální zařízení, jako jsou:
- roboti některých vyhledávačů,
- slepí uživatelé odkázaní na hlasové čtečky
I některé velké JS aplikace používají <div>/<span> místo sémanticky vhodnějších značek. Tam to nemusí vadit, protože požadovaná funkce je zajištěna skriptem, aplikace nepotřebují být indexované vyhledávači a pro přístupnost slouží atributy aria a role:
Pro běžné weby ale bývá pohodlnější a snazší volit sémantické značky.
Související články
Zanořování nezanořitelných HTML značek
Jak funguje zanořování značek jako <p> nebo <button> v HTML parseru versus DOM metodách.
Možnosti stylování <iframe>
Co lze a nelze u <iframe> ovlivnit pomocí CSS a jak na změnu textu nebo barev.
