HTML5: Nilai yang Diizinkan untuk ID & Atribut Kelas
Pada HTML5, satu-satunya batasan pada nilai ID adalah:
- harus unik dalam dokumen
- tidak boleh mengandung karakter spasi apa pun
- harus mengandung setidaknya satu karakter
Aturan serupa berlaku untuk kelas (kecuali untuk keunikan, tentu saja).
Jadi nilainya bisa semua digit, hanya satu digit, hanya karakter tanda baca, termasuk karakter khusus, apa pun. Hanya tanpa spasi. Ini sangat berbeda dari HTML4.
Dalam HTML 4, nilai ID harus dimulai dengan huruf, yang kemudian hanya dapat diikuti oleh huruf, angka, tanda hubung, garis bawah, titik dua, dan titik.
Di HTML5 ini valid:
<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>
Ingatlah bahwa menggunakan angka, tanda baca atau karakter khusus dalam nilai ID dapat menyebabkan masalah dalam konteks lain (misalnya, CSS, JavaScript, regex).
Misalnya, ID berikut ini valid dalam HTML5:
<div id="9lions"> ... </div>
Namun, itu tidak valid dalam CSS:
Dari spec CSS2.1:
4.1.3 Karakter dan huruf besar-kecil
Dalam CSS, pengidentifikasi (termasuk nama elemen, kelas, dan ID dalam pemilih) hanya dapat berisi karakter [a-zA-Z0-9] dan ISO 10646 karakter U + 00A0 dan lebih tinggi, ditambah dengan tanda hubung (-) dan garis bawah ( _); mereka tidak bisa mulai dengan angka, dua tanda hubung, atau tanda hubung diikuti oleh angka .
Dalam kebanyakan kasus, Anda mungkin dapat melarikan diri karakter dalam konteks di mana mereka memiliki batasan atau makna khusus.
Referensi W3C
HTML5
3.2.5.1 id
Atribut
The id
Atribut menentukan identifier unik elemen-nya (ID).
Nilai harus unik di antara semua ID di subtree beranda elemen dan harus mengandung setidaknya satu karakter. Nilai tidak boleh mengandung karakter spasi apa pun.
Catatan: Tidak ada batasan lain pada formulir apa yang dapat diambil ID; khususnya, ID dapat terdiri dari hanya digit, mulai dengan digit, mulai dengan garis bawah, terdiri dari hanya tanda baca, dll.
3.2.5.7 class
Atribut
Atribut, jika ditentukan, harus memiliki nilai yang merupakan set token yang dipisahkan ruang yang mewakili berbagai kelas yang dimiliki elemen tersebut.
Kelas yang ditetapkan oleh elemen HTML terdiri dari semua kelas yang dikembalikan ketika nilai atribut kelas dibagi pada spasi. (Duplikat diabaikan.)
Tidak ada batasan tambahan pada token yang dapat digunakan penulis dalam atribut kelas, tetapi penulis didorong untuk menggunakan nilai yang menggambarkan sifat konten, bukan nilai yang menjelaskan presentasi konten yang diinginkan.