Tagi HTML: dfn

6 min. czytania

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:

  1. Wartość atrybutu title w <dfn>.
  2. Wartość title w zagnieżdżonym <abbr>.
  3. 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 title dla 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!