Sebagian besar peran yang Anda lihat didefinisikan sebagai bagian dari ARIA 1.0, dan kemudian dimasukkan ke dalam HTML5. Beberapa elemen HTML5 baru (dialog, utama, dll.) Bahkan didasarkan pada peran ARIA asli.
http://www.w3.org/TR/wai-aria/
Ada dua alasan utama untuk menggunakan peran selain elemen semantik asli Anda.
Alasan # 1. Mengganti peran di mana tidak ada elemen bahasa host yang sesuai atau, karena berbagai alasan, elemen yang kurang semantik digunakan.
Dalam contoh ini, tautan digunakan, meskipun fungsionalitas yang dihasilkan lebih mirip tombol daripada tautan navigasi.
<a href="#" role="button" aria-label="Delete item 1">Delete</a>
Pembaca layar akan mendengar ini sebagai tombol (sebagai lawan dari tautan), dan Anda dapat menggunakan pemilih atribut CSS untuk menghindari class-itis dan div-itis.
*[role="button"] {
/* style these a buttons w/o relying on a .button class */
}
Alasan # 2. Mencadangkan peran elemen asli, untuk mendukung browser yang menerapkan peran ARIA tetapi belum menerapkan peran elemen asli.
Misalnya, peran "utama" telah didukung di browser selama bertahun-tahun, tetapi ini merupakan tambahan yang relatif baru untuk HTML5, sehingga banyak browser yang belum mendukung semantik untuk <main>
.
<main role="main">…</main>
Ini secara teknis berlebihan, tetapi membantu beberapa pengguna dan tidak membahayakan siapa pun. Dalam beberapa tahun, teknik ini kemungkinan akan menjadi tidak perlu.
Anda juga menulis:
Saya melihat beberapa orang membuat sendiri. Apakah itu diizinkan atau penggunaan atribut peran yang benar?
Itu penggunaan atribut yang valid kecuali peran nyata tidak dimasukkan. Browser akan menerapkan peran yang dikenali pertama dalam daftar token.
<span role="foo link note bar">...</a>
Keluar dari daftar, hanya link
dan note
peran-peran valid, sehingga peran link akan diterapkan karena datang pertama. Jika Anda menggunakan peran khusus, pastikan peran tersebut tidak bertentangan dengan peran yang ditentukan dalam ARIA atau bahasa host yang Anda gunakan (HTML, SVG, MathML, dll.)