Menu

Atrybuty HTML: składnia, class, id, data-* i atrybuty logiczne

Atrybuty dodają informacje do elementu HTML: dokąd prowadzi link, co pokazuje obrazek, która klasa CSS ma zastosowanie. Poznaj składnię, atrybuty globalne akceptowane przez każdy element, class i id, atrybuty logiczne oraz atrybuty data-*.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Czym są atrybuty HTML

Atrybut dodaje informację do elementu. Umieszcza się go w znaczniku otwierającym jako nazwę, znak równości i wartość w cudzysłowie: name="value". Element może mieć dowolnie wiele atrybutów, oddzielonych spacjami.

href mówi linkowi, dokąd prowadzi, src i alt opisują obrazek, a type, placeholder i required konfigurują pole. Każdy element ma własny zestaw atrybutów, a kilka z nich (atrybuty globalne opisane niżej) działa w każdym elemencie.

Zasady składni

<input type="text" name="city" value="Paris" disabled>
  • Nazwa, znak równości, wartość w cudzysłowie. Przyjęło się używać podwójnych cudzysłowów; pojedyncze też działają (title='Say "hi"' to sposób na umieszczenie podwójnego cudzysłowu w wartości).
  • Wielkość liter w nazwach nie ma znaczenia. CLASS i class to ten sam atrybut. W wartościach ma: class="Box" i class="box" to różne klasy.
  • Bez spacji cudzysłowy są opcjonalne, ale i tak ich używaj. class=big box daje elementowi klasę big i drugi, bezsensowny atrybut o nazwie box.
  • Kolejność nie ma znaczenia. <img alt="" src="a.png"> to to samo co <img src="a.png" alt="">.
  • Każda nazwa raz na element. Jeśli atrybut pojawi się dwa razy, przeglądarka zachowa pierwszy, a drugi po cichu odrzuci.

Atrybuty logiczne

Niektóre atrybuty są po prostu włączone albo wyłączone. W ich przypadku obecność oznacza prawdę, a wartość jest ignorowana. Tak działają disabled, checked, required, readonly, hidden, multiple, autofocus i open.

Trzeci przycisk jest wyłączony, choć wartość to false, bo przeglądarka sprawdza tylko, czy atrybut istnieje. Aby wyłączyć atrybut logiczny, usuń go. W JavaScripcie robi to dokładnie button.disabled = false.

Atrybut class

class nadaje elementowi jedną lub więcej nazw, po których CSS i JavaScript go znajdują. Kilka elementów może mieć tę samą klasę, a jeden element może mieć kilka klas, oddzielonych spacjami:

Każda kolejna klasa dokłada swoje reguły. W CSS klasę wybiera się kropką (.card); w JavaScripcie zmieniają je element.classList.add('featured') i classList.remove. Klasy to standardowy sposób stylowania: większość twojego CSS będzie celować w klasy.

Atrybut id

id nadaje elementowi nazwę, która musi być unikalna na stronie. Używaj go, gdy potrzebujesz dokładnie jednego elementu: celu linku, <label for> albo document.getElementById.

Kliknięcie etykiety przenosi fokus do pola, bo for="email" wskazuje na id="email". Link przewija stronę do #pricing, bo fragment w href pasuje do id.

classid
Ile elementów może go miećDowolnie wieleJeden (unikalny)
Wartości na elementKilka, oddzielonych spacjamiJedna
Selektor CSS.name#name
Typowe użycieStylowanie grup elementówCele linków, etykiety, jeden konkretny element w JavaScripcie

Id nie może zawierać spacji. Zaczynaj je od litery, żeby łatwo było go używać w CSS: #2col bez escapowania nie jest poprawnym selektorem CSS.

Atrybuty globalne

Te atrybuty działają w każdym elemencie:

AtrybutDo czego służy
idUnikalna nazwa elementu
classLista nazw klas oddzielonych spacjami
styleCSS w linii, np. style="color: red"
titlePodpowiedź widoczna po najechaniu kursorem
langJęzyk treści, np. lang="fr"
dirKierunek tekstu: ltr, rtl lub auto
hiddenUkrywa element (logiczny)
tabindexPozwala ustawić fokus na elemencie klawiszem Tab albo ustala kolejność
contenteditablePozwala użytkownikowi edytować tekst elementu
data-*Twoje własne dane, odczytywane w JavaScripcie

Atrybut lang ma własną stronę, bo wpływa na czytniki ekranu, tłumaczenie i wyszukiwarki.

Atrybuty data-*

Gdy chcesz zapisać w elemencie własną wartość, poprzedź nazwę przedrostkiem data-. Po przedrostku może stać dowolna nazwa, a JavaScript odczytuje wartości przez element.dataset, zamieniając myślniki na camelCase:

data-product-id staje się dataset.productId. Wartości zawsze wracają jako tekst, więc przed obliczeniami zamień je funkcją Number(). CSS też może je wybierać: [data-price="4.50"].

Częste błędy

  • Dwukrotne wpisanie class. <div class="a" class="b"> zachowuje tylko a. Umieść obie w jednym atrybucie: class="a b".
  • Powtórzone id. Dwa elementy z tym samym id psują linki typu #links, etykiety i getElementById, które zwraca tylko pierwszy. Do wszystkiego, co się powtarza, używaj klasy.
  • disabled="false" albo checked="false". Atrybut nadal istnieje, więc nadal jest włączony. Zamiast tego go usuń.
  • Wartości ze spacjami bez cudzysłowów. alt=My photo ustawia alt na My. Każdą wartość bierz w cudzysłów.
  • Wymyślanie atrybutów bez data-. <div price="4"> to niepoprawny HTML i może kolidować z przyszłym standardowym atrybutem. Użyj data-price.

Najczęściej zadawane pytania

Co to jest atrybut HTML?

Atrybut to dodatkowa informacja zapisana w znaczniku otwierającym jako name="value". Konfiguruje element: href określa, dokąd prowadzi link, src i alt opisują obrazek, a class i id pozwalają CSS i JavaScriptowi znaleźć element.

Czym różni się class od id w HTML?

id musi być unikalne na stronie i identyfikuje jeden element, na potrzeby linków #fragment, <label for> i getElementById. class może mieć wiele elementów, a jeden element może mieć kilka klas oddzielonych spacjami. Do stylowania używaj klas.

Jak dodać kilka klas do elementu HTML?

Wpisz je w jeden atrybut class, oddzielone spacjami: <div class="card featured dark">. Dwukrotne wpisanie class nie działa: przeglądarka zachowuje tylko pierwszy.

Czy atrybuty HTML wymagają cudzysłowów?

Cudzysłowy są opcjonalne, gdy wartość nie ma spacji ani znaków specjalnych, ale bezpieczniej jest zawsze ich używać. class=big box daje elementowi klasę big oraz osobny atrybut o nazwie box.

Dlaczego mój przycisk nadal jest wyłączony z disabled="false"?

disabled to atrybut logiczny: sama jego obecność oznacza prawdę, niezależnie od wartości. Aby włączyć element, usuń atrybut albo ustaw w JavaScripcie button.disabled = false, co go usuwa.

Czy mogę tworzyć własne atrybuty HTML?

Użyj przedrostka data-: data-price="12" czy data-user-id="7" są poprawne w każdym elemencie i można je odczytać w JavaScripcie przez element.dataset. Wymyślone nazwy bez przedrostka to niepoprawny HTML.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ