Ada beberapa hal tentang jawaban lain yang hanya diutarakan dengan buruk atau mungkin sedikit salah.
FALSE (ish): Elemen HTML non-standar "tidak diizinkan", "ilegal", atau "tidak valid".
Belum tentu. Mereka "tidak sesuai" . Apa bedanya? Sesuatu dapat "tidak sesuai" dan masih "diizinkan". W3C tidak akan mengirim polisi HTML ke rumah Anda dan membawa Anda pergi.
W3C meninggalkan hal-hal seperti ini karena suatu alasan. Kesesuaian dan spesifikasi ditentukan oleh suatu komunitas. Jika Anda memiliki komunitas yang lebih kecil yang mengonsumsi HTML untuk tujuan yang lebih spesifik dan mereka semua sepakat tentang beberapa Elemen baru yang mereka perlukan untuk mempermudah, mereka dapat memiliki apa yang W3C sebut sebagai "spesifikasi lain yang berlaku" . (Ini jelas lebih dari penyederhanaan, jelas, tetapi Anda mendapatkan ide)
Yang mengatakan, validator ketat akan menyatakan elemen non-standar Anda menjadi "tidak valid". tapi itu karena tugas validator adalah memastikan kesesuaian dengan spesifikasi apa pun yang divalidasi, bukan untuk memastikan "legalitas" untuk browser atau untuk digunakan .
FALSE (ish): Elemen HTML non-standar akan menghasilkan masalah rendering
Mungkin, tetapi tidak mungkin. (ganti "akan" dengan "mungkin") Satu-satunya cara ini menghasilkan masalah rendering adalah jika elemen kustom Anda bertentangan dengan spesifikasi lain, seperti perubahan pada spesifikasi HTML atau spesifikasi lain yang dihormati dalam sistem yang sama (seperti SVG, Matematika, atau sesuatu yang khusus).
Faktanya, alasan CSS dapat membuat tag non-standar adalah karena spesifikasi HTML dengan jelas menyatakan bahwa:
Agen pengguna harus memperlakukan elemen dan atribut yang tidak mereka pahami sebagai netral semantik; meninggalkan mereka di DOM (untuk prosesor DOM), dan menata mereka sesuai dengan CSS (untuk prosesor CSS), tetapi tidak menyimpulkan makna dari mereka
Catatan: jika Anda ingin menggunakan tag khusus, ingat saja perubahan pada spesifikasi HTML di lain waktu dapat meledakkan gaya Anda, jadi bersiaplah. Namun, sangat tidak mungkin W3C akan mengimplementasikan <imsocool>
tag.
Tag dan JavaScript yang tidak standar (via DOM)
Alasan Anda dapat mengakses dan mengubah elemen khusus menggunakan JavaScript adalah karena spesifikasi bahkan berbicara tentang bagaimana mereka harus ditangani dalam DOM , yang merupakan API (sangat mengerikan) yang memungkinkan Anda untuk memanipulasi elemen pada halaman Anda.
Antarmuka HTMLUnknownElement harus digunakan untuk elemen HTML yang tidak ditentukan oleh spesifikasi ini (atau spesifikasi lain yang berlaku).
TL; DR: Sesuai dengan spesifikasi dilakukan untuk tujuan komunikasi dan keselamatan. Ketidaksesuaian masih diizinkan oleh segalanya kecuali validator , yang tujuan utamanya adalah untuk menegakkan kepatuhan, tetapi yang penggunaannya adalah opsional.
Sebagai contoh:
var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]
(Saya yakin ini akan menarik api, tapi ada 2 sen saya)