Mire jó a HTML5 main jelölőeleme?
A cikk témái:
Már a HTML5 legelső munkaverzióiban is megjelentek azok az új jelölőelemek, amelyekkel végre szemantikailag is korrekt módon megjelölhetjük a weboldalunk legfőbb területeit. Például a header
és a footer
elem segítségével az oldal fejlécét, illetve láblécét. Ugyanakkor az egyik legfontosabb terület, az oldal fő beltartalmi szakaszának megjelölésére eredetileg nem készült ilyen elem. A HTML5 első revíziójába, a HTML5.1-be viszont bekerült a main
nevű jelölőelem, ami pont ezt a célt szolgálja.
Eredetileg miért nem volt main elem?
Állítólag az egyik ilyen indok az volt, hogy a fő beltartalmi szakasz algoritmikus módon, kizárásos alapon adja magát. Vagyis a body
elemen belül, ami nem header
, nav
, aside
vagy footer
elemmel van megjelölve, az automatikusan az oldal beltartalmához tartozik. Az alábbi kódban ilyen a p
elem:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Hol van a tartalom?</title>
</head>
<body>
<header>Ez itt az oldal fejléc területe</header>
<nav>Ez itt a navigáció területe</nav>
<p>Ez itt a fő beltartalom</p>
<aside>Ez itt a másodlagos tartalmi terület</aside>
<footer>Ez itt a lábléc területe</footer>
</body>
</html>
Természetesen a régi beidegződés alapján a fő tartalmi szakaszt továbbra is szinte mindenki a div
elemmel jelölte, valamilyen id
azonosítással együtt. Például így:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Hol van a tartalom?</title>
</head>
<body>
<header>Ez itt az oldal fejléc területe</header>
<nav>Ez itt a navigáció területe</nav>
<div id="tartalom">
<p>Ez itt a fő beltartalom</p>
</div>
<aside>Ez itt a másodlagos tartalmi terület</aside>
<footer>Ez itt a lábléc területe</footer>
</body>
</html>
Miért jó, ha megjelöljük a fő tartalmi szakaszt?
A különálló vizuális formázás lehetőségét leszámítva a fő tartalmi szakasz megjelölése több szempontból is szerencsés. Természetesen az egyik a weboldal akadálymentessége, de lehetnek keresőbarátsági, illetve felhasználói élményt növelő vonzatai is. Utóbbira egy tipikus példa a Safari böngészőkben megtalálható Olvasó funkció, ami képes a lényegi beltartalmat kiemelni, és egy önálló, letisztult felületen megjeleníteni.
Akadálymentességi szempontból azért lényeges a fő tartalmi szakasz megjelölése, mert ezzel olyan kisegítő funkciók előtt nyílhat meg az út, amelyek segítségével az érintett felhasználók (elsősorban a vak és a mozgássérült felhasználók) viszonylag gyorsan és egyszerűen eljuthatnak ehhez a szakaszhoz. Klasszikus példa erre a tartalomhoz ugró link alkalmazása, amit jelenleg még nekünk kell beépíteni az oldalba a tartalmi szakasz id
attribútumát felhasználva. Ugyanakkor a legújabb szemantikai lehetőségek, köztük az WAI-ARIA navigációs szakaszjelzőinek, vagy a main
elem alkalmazásával hasonló célú navigációs funkciót kaphatunk a böngésző- és a képernyőolvasó programoktól.
Félúton a div és main elem között
A WAI-ARIA szabvány még jóval a HTML5 main elemének megjelenése előtt már biztosított egy olyan lehetőséget, hogy az úgynevezett navigációs szakaszjelző szerep segítségével szemantikai jelentést adhassunk a div
elemmel megjelölt tartalmi szakasznak is. Csak annyit kell tennünk, hogy a kérdéses div
elemhez egy main
értékű role
attribútumot társítunk:
<div id="tartalom" role="main">
<p>Ez itt a fő beltartalom</p>
</div>
Ezt a plusz információt például a modern képernyőolvasó programok megértik, ami jellegzetesen abban nyilvánul meg, hogy ehhez a szakaszhoz érve közlik a felhasználóval, hogy a tartalmi szakaszhoz ért, illetve bármikor közvetlen ugrási lehetőséget biztosítanak ide.
Nem véletlen, hogy ezt a lehetőséget látva, idővel felmerült, hogy miért is ne lehetne egy olyan natív HTML elemet létrehozni, ami már önmagában hordozza ezt a szerepet. Sokáig lebegett, hogy ez esetleg a content
nevet viselhetné, de végül ez lett a main
jelölőelem.
A main jelölőelem használata
Borzasztó egyszerű az elv. HTML5-ben az oldal fő tartalmi szakaszát a main
elemmel jelöljük meg:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Hol van a tartalom?</title>
</head>
<body>
<header>Ez itt az oldal fejléc területe</header>
<nav>Ez itt a navigáció területe</nav>
<main>
<p>Ez itt a fő beltartalom</p>
</main>
<aside>Ez itt a másodlagos tartalmi terület</aside>
<footer>Ez itt a lábléc területe</footer>
</body>
</html>
Amíg például a header
elem szemantikailag a teljes weboldal fejlécét, vagy akár az oldalon szereplő cikkek (article
elemek) fejlécét is jelölheti, azaz egy HTML dokumentumon belül több is lehet belőle, addig a main
elemből kizárólag egy lehet. Ha szükséges, akkor a main
elemnek is adható id
vagy class
attribútum.
Mi van, ha nem támogatja a main elemet a böngészőprogram?
Tisztázzuk, hogy mit is jelent az, hogy nem támogatja a böngészőprogram.
Mivel alapvetően egy szemantikai elemről van szó, ezért értelemszerűen nem érti a szemantikai szerepét. Tulajdonképpen egy div
, vagy inkább egy span
jellegű elemnek fogja fel. Szerencsére a WAI-ARIA segítségével az elem valódi szerepét mi magunk definiálhatjuk. Sőt, ezt mindaddig javasolt is megtenni, amíg a main elem nem lesz széleskörűen támogatott. A role
attribútumot természetesen main
értékkel kell megadnunk:
<main role="main">
<p>Ez itt a fő beltartalom</p>
</main>
Erre amúgy nem lenne szükség, hiszen a main
elemnek önmagában main
a szerepe.
Speciálisan az Internet Explorer böngészőprogramra jellemző, hogy csak akkor hajlandó az általa nem ismert elemeket megformázni, ha előbb egy JavaScript kód segítségével bemutatjuk neki ezeket. Erre tökéletesen jó a html5shim nevű kód, aminek legfrissebb verziója már tartalmazza a main
elem definícióját.
A CSS formázás szempontjából irreleváns, hogy a böngésző érti-e a main
elem szemantikáját. A CSS-ben alapból minden elem sorközi, azaz inline szintű elemként viselkedik. Mivel a main
elem általában blokk szintű elem, ezért az elemet nem ismerő böngészőprogramok esetén nekünk magunknak kell beállítani ezt a megjelenést:
main {
display: block;
}
Innentől tulajdonképpen bármilyen megszokott CSS formázás definiálható a main
elemre.
Mindebből látható, hogy a main
elemet - a felsorolt kiegészítésekkel - már mostantól bátran lehet használni, hiszen a weboldalunk akadálymentességén nagyon sokat lendíthetünk vele.