Składnia data-* i konwencje nazewnictwa
Poznanie prawidłowych nazw atrybutów data-* i ich przeznaczenia
Składnia data-* i konwencje nazewnictwa to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.
Powtórzenie: atrybuty data-*
Atrybuty danych (data-*) przechowują niestandardowe informacje w elementach HTML:
<div data-user-id="42" data-role="admin" data-active="true">
User Card
</div>Prawidłowe zasady nazewnictwa
Wymagania dotyczące nazewnictwa atrybutów data-*:
- Muszą zaczynać się od
data- - Po prefiksie musi występować co najmniej jeden znak
- Dozwolone są wyłącznie małe litery, cyfry, łączniki, podkreślenia, kropki i dwukropki
- Nie mogą zawierać wielkich liter (parser HTML zamienia atrybuty na małe litery)
- Nie mogą zawierać spacji
Konwencje nazewnictwa
Konwencje nazewnictwa stosowane w społeczności:
<!-- BEM-style: module__element--modifier -->
data-card="profile"
data-card-id="42"
data-card-state="expanded"
<!-- Descriptive: domain-concept -->
data-product-id="SKU-123"
data-analytics-event="click-cta"
data-feature-flag="dark-mode"Wiele atrybutów danych
Element może mieć dowolną liczbę atrybutów data:
<button
type="button"
data-action="delete"
data-target-id="user-42"
data-confirm="true"
data-confirm-message="Delete this user permanently?"
>Delete</button>Wartości są zawsze ciągami znaków
Wartości atrybutów data są zawsze ciągami znaków — należy je analizować w JavaScript:
const el = document.querySelector('[data-user-id]');
console.log(el.dataset.userId); // '42' (string)
console.log(typeof el.dataset.userId); // 'string'
// Parse to number:
const id = parseInt(el.dataset.userId, 10); // 42 (number)
// Parse to boolean:
const active = el.dataset.active === 'true'; // true (boolean)
// Parse to JSON:
const config = JSON.parse(el.dataset.config); // objectPrzechowywanie JSON w data-*
Złożone dane należy przechowywać jako ciągi JSON:
<div
data-config='{"theme":"dark","locale":"en-US","pageSize":20}'
id="app"
></div>
<script>
const el = document.getElementById('app');
const config = JSON.parse(el.dataset.config);
console.log(config.theme); // 'dark'
console.log(config.pageSize); // 20
</script>data-* a elementy niestandardowe
Kiedy wybrać data-*, elementy niestandardowe lub obiekty JavaScript:
- data-* — metadane specyficzne dla elementu, widoczne w HTML i dostępne z poziomu CSS
- Elementy niestandardowe — złożone, wielokrotnego użytku komponenty z hermetyzowanym działaniem
- JavaScript Map/WeakMap — dane, które nie są potrzebne w HTML; duże lub złożone dane
Wykorzystanie data-* w frameworkach
Typowe zastosowania atrybutów data we frameworkach:
<!-- Bootstrap: target collapsible elements -->
<button data-bs-toggle="collapse" data-bs-target="#menu">
Toggle
</button>
<!-- Alpine.js: component data -->
<div x-data="{ open: false }">
<!-- Stimulus: controller identification -->
<div data-controller="menu" data-menu-open-value="false">
<!-- Testing libraries: stable selectors -->
<button data-testid="submit-btn">Submit</button>Dostępność a data-*
Atrybuty data nie są odczytywane przez czytniki ekranu — nie należy używać ich do przechowywania informacji dotyczących dostępności:
<!-- BAD: accessibility info in data-* -->
<button data-label="Close dialog">×</button>
<!-- Screen reader does NOT read data-label -->
<!-- GOOD: use aria-label for accessibility -->
<button aria-label="Close dialog">×</button>Kwestie wydajności
Atrybuty data-* mają pomijalny wpływ na wydajność:
- Odczyt dataset jest szybki (O(1))
- Intensywne używanie data-* na tysiącach elementów nie stanowi problemu
- Przechowywanie dużych porcji danych (obrazów, dużych obiektów JSON) w data-* jest nieefektywne
- Do przechowywania dużych obiektów JavaScript powiązanych z elementami DOM należy używać WeakMap
Podsumowanie: dobre praktyki dotyczące data-*
Dobre praktyki dotyczące data-*:
- Należy używać nazw pisanych małymi literami i rozdzielanych łącznikami
- Wartości są zawsze ciągami znaków — należy je analizować w razie potrzeby
- W przypadku JSON należy używać JSON.stringify / JSON.parse
- Należy używać ich do metadanych potrzebnych CSS lub JavaScriptowi
- Nie zastępują atrybutów ARIA
- Nie należy przechowywać sekretów (są widoczne w DevTools)
Szybkie sprawdzenie
Jakiego typu wartości atrybutów zawsze zwraca dataset?
Powtórzenie: składnia data-*
Najważniejsze zasady nazewnictwa data-*:
- Format:
data-[lowercase-name]="value" - Dostęp:
element.dataset.camelCaseName - Wszystkie wartości są ciągami znaków — należy je jawnie analizować
- W przypadku złożonych danych należy przechowywać JSON
- Nazwy atrybutów muszą być pisane małymi literami, bez wielkich liter i spacji
Często zadawane pytania
Czy lekcja „Składnia data-* i konwencje nazewnictwa” jest bezpłatna?
Tak — pełny tekst „Składnia data-* i konwencje nazewnictwa” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Składnia data-* i konwencje nazewnictwa”?
Poznanie prawidłowych nazw atrybutów data-* i ich przeznaczenia Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć HTML Academy?
Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Składnia data-* i konwencje nazewnictwa”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?
Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Składnia data-* i konwencje nazewnictwa
- Dostęp do data-* za pomocą dataset w JavaScript
- Używanie data-* z selektorami atrybutów CSS
- Wzorce z praktyki — podpowiedzi i śledzenie stanu