Tag <dfn> (od ang. definition) to semantyczny element HTML służący do oznaczania definiowanego terminu, który jest tematem omawianej treści w najbliższym kontekście nadrzędnym, takim jak paragraf (<p>), lista opisowa (<dl> z <dt> i <dd>) lub sekcja (<section>).
To kluczowy element dla poprawnej semantyki dokumentu, który zwiększa dostępność, poprawia SEO i czytelność struktury strony.
Czym dokładnie jest tag <dfn> i kiedy go używać?
Element <dfn> reprezentuje instancję definiującą termin – zazwyczaj pierwsze wystąpienie słowa lub frazy, której definicja następuje w otoczeniu. Nie obejmuje całej definicji, lecz tylko sam oznaczany termin. Domyślnie przeglądarki renderują go jako tekst kursywą (CSS: font-style: italic), ale to zachowanie można nadpisać stylami.
Główne zasady użycia:
- kontekst nadrzędny – najbliższy przodek to
<p>,<dt>w<dl>,<li>lub<section>; - zawartość – tylko treść frazowana, bez zagnieżdżonych
<dfn>; - semantyka – definiuje termin, którego dotyczy opisująca treść.
Wspierane przeglądarki (od dawna pełne wsparcie):
| Przeglądarka | Wersja wsparcia |
|---|---|
| Chrome | 15 (2011) |
| Firefox | 1 (2004) |
| Edge | 12 (2015) |
| Opera | 15 (2013) |
| Safari | 6 (2012) |
Tag jest elementem liniowym, z obowiązkowymi otwierającym i zamykającym znacznikami. Obsługuje atrybuty globalne (np. class, id, style) oraz zdarzeniowe.
Atrybut title – precyzyjne definiowanie terminu
Atrybut title w <dfn> pozwala jawnie określić definiowany termin, niezależnie od zawartości elementu. Wartość title staje się oficjalną nazwą terminu dla przeglądarki i asystentów.
Hierarchia określania terminu:
- Wartość atrybutu
titlew<dfn>. - Wartość
titlew zagnieżdżonym<abbr>. - Tekstowa zawartość
<dfn>.
Poniżej znajdziesz podstawowy przykład zastosowania atrybutu title w <dfn>:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Przykład dfn z title</title>
</head>
<body>
<dl>
<dt><dfn title="HyperText Markup Language">HTML</dfn></dt>
<dd>Jeden z języków służący do budowy stron internetowych.</dd>
</dl>
</body>
</html>
Rezultat – „HTML” (skrót) definiuje pełny termin „HyperText Markup Language” podany w title. Przeglądarka rozumie pełną nazwę, nawet jeśli użytkownik widzi skrót.
Przykłady praktyczne użycia <dfn>
1. Definicja w liście opisowej (<dl>) – klasyczny słownik
Tak może wyglądać prosta definicja w liście opisowej:
<dl>
<dt><dfn>VoIP</dfn></dt>
<dd>Standard przesyłania głosu przez internet, wykorzystywany w telefonii internetowej.</dd>
</dl>
Tutaj „VoIP” to definiowany termin, a opis w <dd> wyjaśnia jego znaczenie.
2. Termin z title i linkowanie za pomocą id
Najpierw nadaj <dfn> unikalny id, by tworzyć odnośniki do definicji w treści:
<dl id="definicje">
<dt id="html"><dfn title="HyperText Markup Language">HTML</dfn></dt>
<dd>Język znaczników do tworzenia stron WWW.</dd>
</dl>
<p>Poznaj <a href="#html">HTML</a> – podstawę tworzenia stron WWW.</p>
Kliknięcie linku przenosi do definicji, co ułatwia nawigację.
3. Zagnieżdżony <abbr> z title
W przypadku skrótów użyj <abbr> wewnątrz <dfn>, aby dostarczyć pełne rozwinięcie:
<p>Technologia <dfn><abbr title="Voice over Internet Protocol">VoIP</abbr></dfn> rewolucjonizuje komunikację.</p>
Definiowany termin to wartość title z <abbr> („Voice over Internet Protocol”).
4. Prosta definicja w paragrafie
Oto przykład pierwszego użycia terminu w akapicie:
<p>Rolę tekstu w dokumencie określa <dfn>semantyka HTML</dfn>, a nie jego formatowanie wizualne.</p>
„Semantyka HTML” jest pierwszym użyciem terminu w danej sekcji.
5. Zaawansowany przykład z CSS i JavaScript
Stwórzmy interaktywny słownik z dymkami podpowiedzi – wykorzystamy title i prosty CSS:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<style>
dfn {
font-style: italic;
position: relative;
cursor: help;
border-bottom: 1px dotted #007bff;
}
dfn:hover::after {
content: attr(title);
position: absolute;
bottom: 100%;
left: 0;
background: #007bff;
color: white;
padding: 5px;
border-radius: 4px;
white-space: nowrap;
z-index: 10;
}
</style>
</head>
<body>
<h2>Słownik webowy</h2>
<p><dfn title="Cascading Style Sheets">CSS</dfn> stylizuje <dfn title="HyperText Markup Language">HTML</dfn>.</p>
<p><dfn title="JavaScript">JavaScript</dfn> dodaje interaktywność.</p>
</body>
</html>
Efekt – najechanie kursorem na <dfn> pokazuje dymek z podpowiedzią z title; dzięki stylom zapewniasz czytelną, spójną prezentację pojęć.
Najczęstsze błędy i dobre praktyki
Poniżej znajdziesz najważniejsze pułapki oraz rekomendacje dotyczące stosowania <dfn>:
- błąd – zagnieżdżanie
<dfn>w innym<dfn>jest niedozwolone; - błąd – używanie poza dozwolonym kontekstem (np. bezpośrednio w
<body>bez sekcji); - dobra praktyka – stosuj atrybut
titledla precyzji, zwłaszcza przy akronimach; - dostępność –
<dfn>pomaga czytnikom ekranu ogłaszać „definicja: [termin]”, co poprawia UX; - SEO – wyszukiwarki lepiej rozumieją strukturę, co wspiera pozycjonowanie.
Połączenie z innymi tagami semantycznymi
<dfn> idealnie współpracuje z następującymi elementami:
<dl>,<dt>,<dd>– tworzenie list definicji i słowników;<abbr>– prezentacja akronimów i skrótów z wyjaśnieniem;<section>– tematyczne grupowanie definicji w obrębie dokumentu;<a href="#id">– tworzenie wewnętrznych odnośników do terminów.
Dlaczego <dfn> jest ważny w nowoczesnym HTML5?
W erze projektowania dostępnych stron i treści możliwych do odczytu maszynowego (np. dla AI i asystentów głosowych) semantyka, taka jak <dfn>, buduje strukturalny szkielet dokumentu, niezależny od wizualizacji.
To nie tylko kursywa – to metadane dla świata poza ekranem.
Ćwiczenie dla ciebie – stwórz słownik programistyczny z 5 terminami (np. API, DOM, Flexbox) używając <dfn>. Dodaj style hover i linki wewnętrzne. Podziel się w komentarzach!
Ten tag, choć prosty, wzmacnia profesjonalizm twojego kodu HTML. Eksperymentuj i buduj semantyczne strony!