HTML5: Dozwolone wartości dla identyfikatora i atrybutów klasy
Począwszy od HTML5, jedynymi ograniczeniami wartości identyfikatora są:
- musi być unikalny w dokumencie
- nie może zawierać żadnych spacji
- musi zawierać co najmniej jeden znak
Podobne zasady mają zastosowanie do klas (z wyjątkiem oczywiście wyjątkowości).
Tak więc wartością mogą być wszystkie cyfry, tylko jedna cyfra, tylko znaki interpunkcyjne, zawierać znaki specjalne, cokolwiek. Po prostu brak białych znaków. To bardzo różni się od HTML4.
W HTML 4 wartości identyfikatora muszą zaczynać się od litery, po której mogą następować tylko litery, cyfry, łączniki, podkreślenia, dwukropki i kropki.
W HTML5 są one poprawne:
<div id="999"> ... </div>
<div id="#%LV-||"> ... </div>
<div id="____V"> ... </div>
<div id="⌘⌥"> ... </div>
<div id="♥"> ... </div>
<div id="{}"> ... </div>
<div id="©"> ... </div>
<div id="♤₩¤☆€~¥"> ... </div>
Pamiętaj, że używanie liczb, znaków interpunkcyjnych lub znaków specjalnych w wartości identyfikatora może powodować problemy w innych kontekstach (np. CSS, JavaScript, regex).
Na przykład następujący identyfikator jest poprawny w HTML5:
<div id="9lions"> ... </div>
Jest to jednak nieprawidłowe w CSS:
Ze specyfikacji CSS2.1:
4.1.3 Znaki i wielkość liter
W CSS identyfikatory (w tym nazwy elementów, klasy i identyfikatory w selektorach) mogą zawierać tylko znaki [a-zA-Z0-9] i ISO 10646 znaków U + 00A0 i wyższe, a także myślnik (-) i podkreślenie ( _); nie mogą zaczynać się cyfrą, dwoma myślnikami ani myślnikiem, po których następuje cyfra .
W większości przypadków możesz uciec od znaków w kontekstach, w których mają ograniczenia lub specjalne znaczenie.
Referencje W3C
HTML5
3.2.5.1 id
Atrybut
id
Atrybut określa unikalny identyfikator swojego elementu (ID).
Wartość musi być unikalna wśród wszystkich identyfikatorów w poddrzewie macierzystym elementu i musi zawierać co najmniej jeden znak. Wartość nie może zawierać spacji.
Uwaga: Nie ma żadnych innych ograniczeń dotyczących formy, jaką może przyjąć identyfikator; w szczególności identyfikatory mogą składać się z samych cyfr, zaczynają się od cyfry, zaczynają się od znaku podkreślenia, składają się tylko z interpunkcji itp.
3.2.5.7 class
Atrybut
Atrybut, jeśli jest określony, musi mieć wartość będącą zbiorem tokenów oddzielonych spacjami reprezentujących różne klasy, do których należy element.
Klasy, które przypisał do niego element HTML, składają się ze wszystkich klas zwróconych, gdy wartość atrybutu class zostanie podzielona na spacje. (Duplikaty są ignorowane).
Nie ma żadnych dodatkowych ograniczeń dotyczących tokenów, których autorzy mogą używać w atrybucie klasy, ale autorzy są zachęcani do używania wartości opisujących charakter treści, a nie wartości opisujących pożądaną prezentację treści.