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, складаються з усіх класів, повернених, коли значення атрибута класу розділено на пробіли. (Дублікати ігноруються.)
Немає додаткових обмежень для лексем, які автори можуть використовувати в атрибуті класу, але авторам рекомендується використовувати значення, що описують природу вмісту, а не значення, що описують бажане представлення вмісту.