HTML5: Дозволені значення для атрибутів ID та класу
Щодо HTML5, єдиними обмеженнями на значення ідентифікатора є:
- повинні бути унікальними в документі
- не повинен містити символів пробілу
- повинен містити принаймні один символ
Подібні правила діють і до класів (крім унікальності, звичайно).
Таким чином, значенням можуть бути всі цифри, лише одна цифра, просто знаки пунктуації, включати спеціальні символи, будь-що. Просто немає пробілів. Це дуже відрізняється від HTML4.
У HTML 4 значення ідентифікатора повинні починатися з літери, за якою потім можуть слідувати лише літери, цифри, дефіси, підкреслення, крапки та крапки.
У HTML5 вони дійсні:
<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>
Просто майте на увазі, що використання цифр, пунктуації або спеціальних символів у значенні ідентифікатора може спричинити неполадки в інших контекстах (наприклад, CSS, JavaScript, регулярний вираз).
Наприклад, наступний ідентифікатор дійсний у HTML5:
<div id="9lions"> ... </div>
Однак він недійсний у CSS:
З специфікації CSS2.1:
4.1.3 Персонажі та відмінок
У CSS ідентифікатори (включаючи назви елементів, класи та ідентифікатори у селекторах) можуть містити лише символи [a-zA-Z0-9] та ISO 10646 символів U + 00A0 і вище, плюс дефіс (-) та підкреслення ( _); вони не можуть починатись цифрою, двома дефісами або дефісом, за яким слід цифра .
У більшості випадків ви можете уникнути символів у контекстах, де вони мають обмеження або особливе значення.
Посилання на W3C
HTML5
3.2.5.1 id
Атрибут
id
Атрибут вказує унікальний ідентифікатор свого елемента (ID).
Значення повинно бути унікальним серед усіх ідентифікаторів домашнього піддерева елемента і повинно містити принаймні один символ. Значення не повинно містити символів пробілу.
Примітка. Немає інших обмежень щодо форми форми ідентифікатора; зокрема, ідентифікатори можуть складатися з просто цифр, починати з цифри, починати з підкреслення, складатися з просто розділових знаків тощо.
3.2.5.7 class
Атрибут
Атрибут, якщо він вказаний, повинен мати значення, яке є набором розділених пробілом лексем, що представляють різні класи, до яких належить елемент.
Класи, які присвоїв йому елемент HTML, складаються з усіх класів, повернених, коли значення атрибута класу розділено на пробіли. (Дублікати ігноруються.)
Немає додаткових обмежень для лексем, які автори можуть використовувати в атрибуті класу, але авторам рекомендується використовувати значення, що описують природу вмісту, а не значення, що описують бажане представлення вмісту.