Siedem znaczników sekcji HTML5: co znaczy każdy z nich, ile razy może wystąpić, czym różni się od znacznika div i jak z rysunku układu w arkuszu CKE zbudować strukturę strony. Lekcja 3.4 kursu INF.03.
Znaczniki sekcji to elementy HTML5, które dzielą stronę na nazwane części: baner, menu, treść główną, panel boczny i stopkę. Nazwa znacznika mówi, CZYM jest blok, więc strukturę strony widać w samym kodzie, a nie dopiero na ekranie po włączeniu stylów. W części pisemnej wracają pytania „które znaczniki służą do budowania struktury strony" i „dla której wersji języka charakterystyczne są <header>, <article>, <section> i <footer>". W części praktycznej arkusz daje RYSUNEK układu i każe zbudować z niego bloki „za pomocą znaczników sekcji": to osobno oceniany rezultat, więc <div> postawiony tam, gdzie miał być <nav>, kosztuje punkt.
Siedem znaczników sekcji
Znacznik sekcji to element blokowy, który sam z siebie nie zmienia wyglądu tekstu, tylko nazywa fragment strony. Przeglądarka wyświetli zawartość <section> dokładnie tak samo jak zawartość <div>, bo różnica leży w znaczeniu, nie w wyglądzie. Znaczników jest siedem i wszystkie stoją wewnątrz <body>, czyli w tej części dokumentu, którą opisuje lekcja o szkielecie dokumentu. Znacznik
Znaczy
Typowa zawartość
<header>
nagłówek strony albo bloku
baner z tytułem witryny i logo
<nav>
nawigacja
menu, czyli zestaw odnośników do podstron
<main>
treść główna
to, po co użytkownik wszedł na tę podstronę
<section>
sekcja tematyczna
wydzielona część treści z własnym nagłówkiem
<article>
samodzielna całość
opis produktu, wpis, komentarz, wiadomość
<aside>
treść poboczna
panel boczny, reklama, lista polecanych
<footer>
stopka
kontakt, adres, prawa autorskie, mapa witryny
Liczba wystąpień nie jest dla wszystkich taka sama. <main> może wystąpić na stronie tylko RAZ i nie wolno go włożyć do <article>, <aside>, <header>, <footer> ani <nav>, bo treści głównej z definicji jest jedna. Pozostałe sześć wolno powtarzać: <nav> bywa dwa razy (menu górne i menu w stopce), <section> i <article> tyle razy, ile jest bloków treści, a <header> i <footer> raz dla całej strony plus po jednym w każdym artykule.
Dwa znaczniki mylą się najczęściej. Sprawdzian jest taki: jeśli blok ma sens wyjęty ze strony i wklejony gdzie indziej, na przykład w wynikach wyszukiwania albo w czytniku wiadomości, to <article>. Jeśli jest kawałkiem większej całości i bez niej traci sens, to <section>. W sklepie <section> grupuje promocje, a każdy pojedynczy produkt w środku to <article>, bo opis Monitora 24 czyta się osobno.
Kiedy <div>, a kiedy znacznik sekcji
<div> (division, podział) to pojemnik bez znaczenia: grupuje elementy, żeby dało się je razem ostylować albo przesunąć, ale nie mówi o nich nic. Przed HTML5 nie było czym powiedzieć, więc cała strona składała się z <div id="header">, <div id="menu"> i <div id="stopka">, a jeszcze wcześniej z tabel i ramek <frame>. Ramki i układanie strony na tabelach są dziś przestarzałe, układem zajmuje się CSS. HTML5 dał siedem gotowych nazw, więc <div> zostaje tam, gdzie żadna z nich nie pasuje: opakowanie ograniczające szerokość treści, siatka na dwie kolumny, kontener dla skryptu.
Semantyka, czyli nazywanie bloków zgodnie z ich rolą, ma trzy praktyczne skutki. Czytnik ekranu potrafi przeskoczyć od razu do <main> albo wymienić wszystkie <nav> na stronie, więc osoba niewidoma nie słucha menu przy każdej podstronie. Wyszukiwarka odróżnia treść właściwą od panelu z reklamami, co ma znaczenie przy pozycjonowaniu. Trzeci skutek jest najbardziej codzienny: w kodzie z nazwami widać strukturę bez czytania klas, a w kodzie z samych <div> trzeba jej się domyślać.
Pułapka: <div> i <section> wyglądają na stronie identycznie, dopóki nie ma CSS. Wygląd nie jest dowodem, że kod jest poprawny, a punkt idzie za nazwę znacznika.
Układ strony sklepu z rysunku
Arkusz praktyczny nie opisuje układu słowami, tylko rysuje go prostokątami z podpisami. Nasz sklep komputerowy ma układ typowy dla takich rysunków.
Układ sekcji strony sklepu: baner header, pod nim menu nav, niżej panel boczny aside obok bloku main z dwoma artykułami, na dole stopka footer
Rysunek mówi trzy rzeczy: jakie bloki są, w jakiej kolejności idą od góry i które stoją obok siebie. HTML zapisuje dwie pierwsze. Tego, że panel boczny jest po lewej, a treść po prawej, w HTML nie ma wcale: kolejność znaczników to kolejność czytania, a ustawienie dwóch bloków obok siebie robi CSS, właściwościami układu z osobnego działu kursu. Dlatego <aside> i <main> stoją w kodzie jeden pod drugim, a na ekranie i tak wylądują w dwóch kolumnach.
<body>
<header><h1>Sklep komputerowy</h1></header>
<nav>
<a href="produkty.html">Produkty</a>
<a href="kontakt.html">Kontakt</a>
</nav>
<aside><p>Wysyłka w 24 godziny.</p></aside>
<main>
<section id="promocje">
<h2>Promocje</h2>
<article><h3>Monitor 24</h3></article>
</section>
</main>
<footer><address>ul. Kolejowa 5</address></footer>
</body>
Baner to <header> z nagłówkiem <h1>, czyli z nazwą witryny; hierarchię nagłówków opisuje lekcja o tekście i nagłówkach. Menu to <nav> z odnośnikami, a gdy arkusz wymaga menu jako listy punktowanej, odnośniki wkłada się do <ul> i <li>, co pokazuje lekcja o listach, tabelach i odnośnikach. Panel boczny to <aside> z krótkim tekstem. Blok główny to <main>, a w nim <section> z nagłówkiem i artykułami produktów. Stopka to <footer>, a dane kontaktowe w środku oznacza <address>, znacznik przeznaczony właśnie do adresu i kontaktu, nie do dowolnego tekstu na dole strony. Zagnieżdżanie, id i class
Znaczniki sekcji zagnieżdżają się w sobie i to jest normalny sposób ich używania. <section> leży w <main>, <article> leży w <section>, a wewnątrz <article> może stać własny <header> z tytułem i datą oraz własny <footer> z autorem. Nie ma w tym sprzeczności: te dwa znaczniki opisują górę i dół najbliższego bloku, niekoniecznie całej strony. Zasada, o której łatwo zapomnieć: każda sekcja powinna zaczynać się nagłówkiem, żeby wiadomo było, co grupuje. W bloku wyżej <section> ma <h2>, a <article> ma <h3>.
Bloki trzeba jeszcze umieć wskazać z zewnątrz i do tego służą dwa atrybuty. id (identyfikator) to nazwa unikalna: jedna wartość może wystąpić na stronie tylko raz, więc id="promocje" z bloku wyżej nie powtórzy się w żadnym innym elemencie. class (klasa) to nazwa zbiorcza: tę samą klasę wolno dać dziesięciu elementom i wszystkie dostaną ten sam styl. Jeden element może mieć obie rzeczy naraz i kilka klas rozdzielonych spacją.
Po co to jest, widać w trzech miejscach. CSS wybiera element po id zapisem z krzyżykiem, a po klasie zapisem z kropką. JavaScript sięga po element metodą, która szuka po identyfikatorze. Trzecie zastosowanie zostaje w samym HTML: odnośnik href="#promocje" przewija stronę do elementu o tym id, więc menu może prowadzić do bloku na tej samej stronie, a nie do osobnego pliku.
Projekt układu: od rysunku do znaczników
Podstawa programowa wymaga zaprojektowania układu sekcji i zbudowania struktury zgodnej z projektem, więc egzamin sprawdza dwie umiejętności naraz: odczytanie projektu i zapisanie go w kodzie. Kolejność pracy jest zawsze ta sama i nie zaczyna się od pisania znaczników.
1.
Nazwij bloki. Przy każdym prostokącie z rysunku dopisz sobie znacznik: baner to <header>, pasek odnośników to <nav>, panel przy krawędzi to <aside>, blok z treścią to <main>, pasek na dole to <footer>.
2.
Ustal kolejność od góry do dołu, czytając rysunek wierszami. To będzie kolejność znaczników w pliku.
3.
Zaznacz, które bloki stoją w jednym wierszu obok siebie. Te idą w kodzie jeden po drugim, a rozstawi je CSS.
4.
Sprawdź zawartość każdego bloku: nagłówek, liczba artykułów, obraz, lista. Dopiero teraz pisz kod.
Układy, które wracają w arkuszach, są trzy. Jedna kolumna: baner, menu, treść i stopka jeden pod drugim. Dwie kolumny: to samo, ale w środku panel boczny i blok główny obok siebie, przy czym panel bywa raz po lewej, raz po prawej stronie. Trzy kolumny: dwa panele boczne po obu stronach bloku głównego, czyli dwa razy <aside>. Nazwy z arkusza brzmią po polsku: „baner", „panel lewy", „panel prawy", „blok główny", „stopka", i to ty przekładasz je na znaczniki. Sam blok główny bywa podzielony na dwa mniejsze bloki jeden nad drugim i wtedy każdy z nich dostaje własny <section> albo <article>.
Na egzaminie
Pytania pisemne o sekcje mają kilka stałych kształtów. Pierwszy to wskazanie grupy, która NIE buduje struktury strony: między <header> i <footer>, <section> oraz <div> a zestawem <i>, <b>, <u> błędna jest ta ostatnia trójka, bo te znaczniki zmieniają wygląd tekstu w akapicie, a nie dzielą strony na bloki. Drugi kształt to pojedynczy znacznik do wskazania: który z <em>, <aside>, <input>, <mark> może posłużyć do budowy struktury, czyli <aside>. Trzeci to przypisanie wersji języka: <header>, <article>, <section> i <footer> są charakterystyczne dla HTML5, a nie dla XHTML 1.1 ani HTML 4.01, bo w starszych wersjach ich po prostu nie było. Czwarty to <div> jako odpowiedź na pytanie o grupowanie obszarów na poziomie bloków, bez znaczenia semantycznego. Wraca też rysunek projektu z podpisanymi sekcjami i polecenie w rodzaju „sekcja B powinna być zawarta w znaczniku", gdzie odpowiedź odczytuje się z położenia bloku: pasek pod banerem to menu, czyli <nav>.
W zadaniu praktycznym rysunek układu jest poleceniem, nie ilustracją. Zbuduj bloki dokładnie w tej kolejności, w jakiej stoją na rysunku, i użyj nazw znaczników, o których mówi treść zadania. Jeśli arkusz pisze „za pomocą znaczników sekcji", to zamiana <section> na <div> oznacza utratę punktu za ten rezultat, choć strona będzie wyglądać identycznie. Odwrotnie też: gdy zadanie wymienia konkretne bloki, dokładanie własnych sekcji ponad projekt nic nie daje. Zanim przejdziesz do stylów, sprawdź, czy <main> jest jeden, czy każda sekcja ma nagłówek i czy stopka jest ostatnim blokiem w <body>.
Ściąga
Znacznik
Znaczy
Ile razy na stronie
<header>
baner, nagłówek strony albo bloku
wiele, także wewnątrz <article>
<nav>
nawigacja, menu z odnośnikami
wiele, zwykle jeden albo dwa
<main>
treść główna podstrony
dokładnie raz, poza innymi sekcjami
<section>
tematyczna część treści z nagłówkiem
wiele
<article>
samodzielna całość, sensowna poza stroną
wiele
<aside>
panel boczny, treść poboczna
wiele, przy dwóch panelach dwa razy
<footer>
stopka z kontaktem i prawami
wiele, także wewnątrz <article>
<div>
pojemnik bez znaczenia, do stylu i układu
wiele, gdy żadna nazwa nie pasuje
Pobierz ściągę PDF