Tag <article> reprezentuje samodzielną, kompletną jednostkę treści, która ma sens niezależnie od reszty strony i może być potencjalnie rozprowadzana lub ponownie wykorzystana w całości. To element semantyczny HTML5, który porządkuje dokument w sposób zrozumiały dla przeglądarek, narzędzi analitycznych i czytników ekranowych.
Kluczową cechą <article> jest jego samodzielność – zawartość powinna mieć sens bez kontekstu strony. Oto praktyczny test:
„Czy mogę opublikować tę treść w kanale RSS jako osobny dokument?”
Jeśli odpowiedź brzmi „tak”, to <article> jest właściwym elementem.
Typowe zastosowania <article>
Element <article> idealnie sprawdza się w następujących sytuacjach:
- Post na blogu – główne zastosowanie tego elementu;
- Artykuł informacyjny – materiały prasowe lub edukacyjne;
- Wpis na forum – pojedyncze wiadomości dyskusyjne;
- Komentarz użytkownika – opinie i odpowiedzi;
- Opis produktu – w sklepach internetowych;
- Interaktywny widżet – aplikacje osadzone na stronie;
- Artykuł w gazecie – treści dziennikarskie.
Praktyczne przykłady
Przykład 1 – post na blogu
Oto najpowszechniejsze zastosowanie <article>:
<main>
<article class="blog-post">
<header>
<h2>Jak efektywnie uczyć się HTML?</h2>
<p>Autor: Anna Nowak, Opublikowano: <time datetime="2025-04-30">30 kwietnia 2025</time></p>
</header>
<p>HTML to język znaczników, który stanowi fundament każdej strony internetowej...</p>
<p>Aby nauczyć się HTML efektywnie, warto praktykować codziennie i budować własne projekty.</p>
</article>
</main>
W tym przykładzie cały post jest niezależną jednostką treści. Element <header> zawiera metadane artykułu, takie jak tytuł, autor i data publikacji. Tag <time> z atrybutem datetime umożliwia maszynową interpretację daty.
Przykład 2 – artykuł z zagnieżdżonymi komentarzami
Bardzo ważna cecha <article> to możliwość zagnieżdżania – artykuły mogą zawierać inne artykuły:
<article class="blog-post">
<header>
<h2>Tytuł Posta</h2>
<p>Autor: Jan Kowalski</p>
</header>
<p>Treść głównego artykułu...</p>
<section id="comments">
<h3>Komentarze</h3>
<article class="comment">
<header>
<p>Autor: Użytkownik1</p>
<time datetime="2025-05-01">1 maja 2025</time>
</header>
<p>Bardzo fajny artykuł, dziękuję za wskazówki!</p>
</article>
<article class="comment">
<header>
<p>Autor: Użytkownik2</p>
<time datetime="2025-05-02">2 maja 2025</time>
</header>
<p>Mógłbyś rozwinąć temat CSS?</p>
</article>
</section>
</article>
W tym przypadku zagnieżdżone elementy <article> reprezentują komentarze powiązane z głównym artykułem. Gdy <article> znajduje się wewnątrz innego <article>, jego treść powinna być tematycznie powiązana z artykułem nadrzędnym.
Przykład 3 – wiele artykułów na stronie głównej
Tak może wyglądać sekcja z wieloma artykułami na stronie głównej:
<main>
<section id="latest-posts">
<h2>Najnowsze Posty</h2>
<article>
<h3>Podstawy CSS Flexbox</h3>
<p>Data: 15 marca 2026</p>
<p>Flexbox to nowoczesny system układu w CSS, który pozwala na elastyczne rozmieszczanie elementów...</p>
<a href="/flexbox-guide">Czytaj więcej</a>
</article>
<article>
<h3>JavaScript ES6 – funkcje strzałkowe</h3>
<p>Data: 10 marca 2026</p>
<p>Funkcje strzałkowe to cukier składniowy JavaScript, który czyni kod bardziej czytelnym...</p>
<a href="/arrow-functions">Czytaj więcej</a>
</article>
<article>
<h3>Semantic HTML – dlaczego to ważne?</h3>
<p>Data: 5 marca 2026</p>
<p>Semantyczny HTML nie tylko poprawia SEO, ale także czyni kod bardziej dostępnym...</p>
<a href="/semantic-html">Czytaj więcej</a>
</article>
</section>
</main>
Sekcja zawiera wiele niezależnych artykułów, z których każdy mógłby być rozprowadzany oddzielnie.
<article> vs <section> – kiedy używać którego?
To pytanie często pojawia się przy poznawaniu semantycznych tagów HTML5. Oba elementy tworzą nowe sekcje w dokumencie, ale mają różne zastosowania:
| Cecha | <article> |
<section> |
|---|---|---|
| Samodzielność | Pełna – treść ma sens sama w sobie | Częściowa – treść tworzy część większej całości |
| Redystrybuowalność | Może być opublikowana niezależnie (np. w RSS) | Zwykle wymaga kontekstu całej strony |
| Zastosowanie | Niezależne jednostki treści | Logiczne części większej zawartości |
| Przykłady | Post bloga, artykuł, komentarz | Sekcja „O nas”, rozdział, część artykułu |
Praktyczna reguła – jeśli wyobrażasz sobie treść jako artykuł, który mógłby istnieć samodzielnie – użyj <article>. Jeśli grupujesz powiązaną treść, która tworzy logiczną całość – użyj <section>.
Przykładowa różnica w znacznikach:
<!-- ARTICLE – samodzielny post bloga -->
<article>
<h2>Mój Artykuł o Web Developmencie</h2>
<p>Treść artykułu...</p>
</article>
<!-- SECTION – logiczna część większej zawartości -->
<section id="o-nas">
<h2>O Naszej Firmie</h2>
<p>Jesteśmy firmą z wieloletnim doświadczeniem...</p>
</section>
Struktura wewnętrzna artykułu
Artykuł najczęściej zawiera kilka charakterystycznych elementów:
<article>
<!-- Nagłówek artykułu z metadanymi -->
<header>
<h2>Tytuł Artykułu</h2>
<p>Autor: Imię Nazwisko</p>
<p>Data publikacji: <time datetime="2026-03-20">20 marca 2026</time></p>
</header>
<!-- Główna zawartość -->
<section>
<h3>Wstęp</h3>
<p>Wprowadzenie do tematu...</p>
</section>
<section>
<h3>Główna treść</h3>
<p>Szczegółowe wyjaśnienia...</p>
</section>
<!-- Stopka artykułu -->
<footer>
<p>Słowa kluczowe: <span class="tag">HTML</span>, <span class="tag">CSS</span></p>
<p>Udostępnij: <a href="#">Facebook</a> | <a href="#">Twitter</a></p>
</footer>
</article>
<article> a <div> – co wybrać?
Ważne rozróżnienie: <article> to element semantyczny, podczas gdy <div> to generyczny kontener.
Używaj <div> gdy:
- Stylizacja CSS – potrzebujesz kontenera wyłącznie do celów prezentacyjnych;
- Brak semantyki – treść nie wnosi znaczenia strukturalnego;
- Swobodne grupowanie – łączysz elementy bez logicznego związku treści.
Używaj <article> gdy:
- Samodzielna treść – stanowi kompletną jednostkę informacyjną;
- Znaczenie semantyczne – element wspiera strukturę dokumentu;
- Redystrybuowalność – może być opublikowana niezależnie.
Porównanie niepoprawnego i poprawnego oznaczenia:
<!-- ❌ Niepoprawnie – artykuł jako div -->
<div class="article">
<h2>Tytuł</h2>
<p>Treść...</p>
</div>
<!-- ✅ Poprawnie – semantyczny article -->
<article>
<h2>Tytuł</h2>
<p>Treść...</p>
</article>
Wiele artykułów w dokumencie
Dokument HTML może zawierać więcej niż jeden element <article> – to wręcz zalecane na stronach z wieloma niezależnymi treściami.
Przykładowa struktura strony z wieloma artykułami:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Blog Programistyczny</title>
</head>
<body>
<header>
<h1>Mój Blog o Web Developmencie</h1>
<nav>
<ul>
<li><a href="#">Strona główna</a></li>
<li><a href="#">Archiwa</a></li>
<li><a href="#">O mnie</a></li>
</ul>
</nav>
</header>
<main>
<article>
<h2>Pierwszy Artykuł</h2>
<p>Treść...</p>
</article>
<article>
<h2>Drugi Artykuł</h2>
<p>Treść...</p>
</article>
<article>
<h2>Trzeci Artykuł</h2>
<p>Treść...</p>
</article>
</main>
<footer>
<p>© 2026 Mój Blog. Wszelkie prawa zastrzeżone.</p>
</footer>
</body>
</html>
Stylizacja artykułów CSS
Chociaż <article> to element semantyczny, jego wygląd definiujemy w CSS:
/* Podstawowe stylizowanie artykułu */
article {
background-color: #ffffff;
border: 1px solid #ddd;
border-radius: 8px;
padding: 20px;
margin-bottom: 30px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* Tytuł artykułu */
article h2 {
color: #333;
font-size: 28px;
margin-bottom: 10px;
border-bottom: 3px solid #007bff;
padding-bottom: 10px;
}
/* Nagłówek artykułu z metadanymi */
article header {
margin-bottom: 20px;
font-size: 14px;
color: #666;
}
/* Treść artykułu */
article p {
line-height: 1.6;
color: #444;
margin-bottom: 15px;
}
/* Stopka artykułu */
article footer {
margin-top: 20px;
padding-top: 15px;
border-top: 1px solid #eee;
font-size: 13px;
color: #999;
}
/* Zagnieżdżone komentarze */
article article {
background-color: #f9f9f9;
margin-left: 20px;
margin-top: 15px;
padding: 15px;
border-left: 4px solid #007bff;
}
article article h3 {
font-size: 18px;
margin-top: 0;
}
/* Responsive design */
@media (max-width: 768px) {
article {
padding: 15px;
}
article h2 {
font-size: 22px;
}
article article {
margin-left: 10px;
}
}
Dostępność i SEO
Używanie semantycznego <article> realnie poprawia dostępność i widoczność w wynikach wyszukiwania:
- Czytniki ekranowe – lepiej rozumieją strukturę dokumentu;
- SEO – wyszukiwarki dokładniej indeksują powiązane treści;
- Urządzenia mobilne – łatwiejsze, automatyczne formatowanie treści;
- Kanały RSS – artykuły mogą być automatycznie dystrybuowane.