{"id":133,"date":"2024-08-12T12:15:47","date_gmt":"2024-08-12T12:15:47","guid":{"rendered":"https:\/\/www.accessibilita.digital\/?p=133"},"modified":"2024-08-23T11:52:11","modified_gmt":"2024-08-23T11:52:11","slug":"come-usare-gli-attributi-aria-e-i-role","status":"publish","type":"post","link":"https:\/\/www.accessibilita.digital\/come-usare-gli-attributi-aria-e-i-role\/","title":{"rendered":"Come usare gli attributi ARIA e i role"},"content":{"rendered":"<p>Quando si parla di accessibilit\u00e0, \u00e8 molto utile comprendere l&#8217;uso degli <strong>attributi HTML<\/strong>.<\/p>\n\n<h2>Attributi ARIA e uso dei role<\/h2>\n<p>Accessible Rich Internet Applications, o meglio noti come <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Accessibility\/ARIA\" rel=\"nofollow noopener\">ARIA<\/a>, sono un insieme di attributi e ruoli che possono essere assegnati a determinati tag HTML e sono <b>strettamente legat<\/b><b>i<\/b><b> all\u2019accessibilit\u00e0<\/b>.<\/p>\n<h3>Role<\/h3>\n<p>Il \u201crole\u201d \u00e8 un attributo usato in alcuni tag HTML e pu\u00f2 essere utile per ridefinire il contesto d\u2019utilizzo di un tag, <b>\u00e8 importante per\u00f2 non abusare di questo attributo<\/b>, perch\u00e9 alla lunga pu\u00f2 creare pi\u00f9 danni di ci\u00f2 che risolve.<\/p>\n<p>Ci tengo a riportare quanto presente sulla <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Accessibility\/ARIA\" rel=\"nofollow noopener\">pagina MDN dedicata agli ARIA<\/a>:<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134 size-full\" src=\"https:\/\/www.accessibilita.digital\/app\/uploads\/2024\/08\/Figura-3-ARIA-MDN.png\" alt=\"\" width=\"687\" height=\"296\" srcset=\"https:\/\/www.accessibilita.digital\/app\/uploads\/2024\/08\/Figura-3-ARIA-MDN.png 687w, https:\/\/www.accessibilita.digital\/app\/uploads\/2024\/08\/Figura-3-ARIA-MDN-300x129.png 300w, https:\/\/www.accessibilita.digital\/app\/uploads\/2024\/08\/Figura-3-ARIA-MDN-580x250.png 580w\" sizes=\"(max-width: 687px) 100vw, 687px\" \/><figcaption>MDN descrive gli ARIA come attributi opzionali e incoraggia l&#8217;uso dei tag HTML semantici corretti<\/figcaption><\/figure>\n<p>Molto spesso potremmo vedere il \u201crole\u201d usato per cambiare il significato ai \u201cdiv\u201d di una pagina, ma <b>questo non \u00e8 l\u2019uso pi\u00f9 adatto<\/b>. \u00c8 fortemente raccomandato <b>usare il tag appropriato<\/b> invece di usare il \u201crole\u201d.<\/p>\n<p>Ad esempio, invece di usare &lt;div role=\u201dcomplementary\u201d&gt; \u00e8 meglio usare il tag \u201caside\u201d corrispondente.<\/p>\n<p><b>L\u2019elenco dei vari \u201crole\u201d<\/b> \u00e8 disponibile anche su MDN: <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Accessibility\/ARIA\/Roles\" rel=\"nofollow noopener\">WAI-ARIA Roles<\/a><\/p>\n<p>In alcuni contesti, l\u2019uso pu\u00f2 essere effettivamente utile, ad esempio <b>quando un elemento pu\u00f2 essere ambiguo<\/b>. Un caso adatto pu\u00f2 essere l\u2019uso del tag \u201chr\u201d che traccia una linea orizzontale (<i>horizontal row<\/i>), al quale potremmo applicare il <b>role<\/b><b>=\u201dpresentation<\/b>\u201d, che significa assegnargli una funzione di pura decorazione, in quanto questo role definisce che il tag perde qualsiasi semantica, e diventa come un semplice &lt;div&gt;.<\/p>\n<p>Approfondimento: <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Accessibility\/ARIA\/Roles\/presentation_role\" rel=\"nofollow noopener\">MDN: ARIA presentation role<\/a><\/p>\n<p>Teniamo quindi presente che <b>usare gli ARIA significa sovrascrivere il comportamento di default che il browser si aspetta,<\/b> e questo potrebbe creare alcuni problemi.<\/p>\n<h3>Attributi ARIA nei tag HTML<\/h3>\n<p>Mentre mi permetto di <b>sconsigliare l\u2019uso dei role quando possibile evitarlo<\/b>, gli attributi ARIA possono essere utili in diversi casi, anche se \u00e8 bene fare molta attenzione.<\/p>\n<p><b>Gli attributi pi\u00f9 noti<\/b> sono probabilmente \u201caria-label\u201d, \u201caria-labelledby\u201d, \u201caria-live\u201d, \u201caria-haspopup\u201d, \u201caria-expanded\u201d perch\u00e9 <b>molto usati da Bootstrap e WordPress<\/b>, ma ve ne sono molti altri.<\/p>\n<p>Ad esempio, possiamo usare <b>\u201caria-label\u201d<\/b> per definire il testo accessibile, o etichetta, di un elemento.<\/p>\n<p>Un uso molto comune, <b>per incontrare le esigenze grafiche<\/b> nella realizzazione di un sito web accessibile, \u00e8 di usare un aria-label per il contenitore di navigazione (tag \u201cnav\u201d) che per motivi grafici non ha un titolo di riferimento:<\/p>\n<p><code>&lt;nav aria-label=\u201dPrincipale\u201d&gt;<\/code><\/p>\n<p>In alternativa, una <b>buona soluzione <\/b>pu\u00f2 essere questa:<\/p>\n<p><code>&lt;nav aria-labelledby=\u201dlabel-1\u201d&gt;&lt;h2 class=\u201dvisually-hidden\u201d id=\u201dlabel-1\u201d&gt;Navigazione principale&lt;\/h2&gt;&lt;\/nav&gt;<\/code><\/p>\n<p><i>Nota: la classe CSS \u201cvisually-hidden\u201d viene usata da <a href=\"https:\/\/getbootstrap.com\/docs\/5.0\/helpers\/visually-hidden\/\" rel=\"nofollow noopener\">Bootstra<\/a><a href=\"https:\/\/getbootstrap.com\/docs\/5.0\/helpers\/visually-hidden\/\" rel=\"nofollow noopener\">p 5<\/a> per nascondere visivamente un elemento, che rimane per\u00f2 disponibile alla lettura per i lettori di schermo e altre tecnologie. Un tempo, questa classe era conosciuta come \u201csr-only\u201d che stava per \u201cscreen readers only\u201d.<\/i><\/p>\n<p>Negli esempi, <i>aria-label<\/i> indica <b>il testo che le tecnologie assistive dovrebbero leggere<\/b>, mentre <i>aria-labelledby<\/i> indica <b>l\u2019ID di riferimento<\/b> al tag che contiene il testo. Da notare che <b>nell\u2019aria-label non ripetiamo il termine \u201cNavigazione\u201d<\/b>, che dovrebbe gi\u00e0 venire letto dalle tecnologie assistive perch\u00e9 abbiamo usato il tag semantico <b>&lt;<\/b><b>nav&gt;<\/b><\/p>\n<p>Per unire le due cose, potremmo anche avere un <i>aria-label<\/i> diverso rispetto al testo del tag <i>h2<\/i>, ma senza dunque usare <i>aria-labelledby<\/i> perch\u00e9 non avrebbe senso.<\/p>\n<p>L\u2019<i>aria-labelledby <\/i>pu\u00f2 anche <b>combinare pi\u00f9 elementi, separando gli ID con lo spazio<\/b>, come in questo caso:<\/p>\n<p><code>&lt;h2 id=\u201dlabel-1\u201d&gt;Come fare il tiramis\u00f9&lt;\/h2&gt;<br \/>\n&lt;a href=\u201d#\u201d id=\u201dlink-1\u201d aria-labelledby=\u201dlink-1 label-1\u201d&gt;Scopri&lt;\/a&gt;<\/code><\/p>\n<p>La tecnologia assistiva dovrebbe leggere \u201cScopri come fare il tiramis\u00f9\u201d perch\u00e9 sono stati uniti i due testi tramite la <b>concatenazione<\/b> dei \u201cnomi accessibili\u201d.<\/p>\n<p>Vi sono <b>molti altri attributi<\/b> che \u00e8 bene conoscere, come i gi\u00e0 citati \u201caria-expanded\u201d e \u201caria-haspopup\u201d, e <b>l\u2019uso corretto si pu\u00f2 apprendere solo con l\u2019esperienza<\/b>, premesso che non vi \u00e8 un solo uso corretto, ma dipende molto dal singolo caso. Il mio invito \u00e8 quello di <b>testarli con strumenti come NVDA<\/b> o simili, e capire effettivamente come funzionano, guardando anche come vengono usati nei siti web gi\u00e0 accessibili.<\/p>\n<p>Spiegare ogni singolo attributo sarebbe superfluo, per questo rimando alla lista completa degli attributi ARIA: <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Accessibility\/ARIA\/Attributes\" rel=\"nofollow noopener\">ARIA states and properties<\/a><\/p>\n<h2><span id=\"leggi-anche\">Leggi anche<\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/www.accessibilita.digital\/come-possiamo-rendere-accessibile-un-sito-web\/\">Come possiamo rendere accessibile un sito web<\/a><\/li>\n<li><a href=\"https:\/\/www.accessibilita.digital\/accessibilita-gli-obblighi-da-giugno-2025-per-i-privati\/\">Accessibilit\u00e0: Gli obblighi da Giugno 2025 per i privati<\/a><\/li>\n<li><a href=\"https:\/\/www.accessibilita.digital\/perche-un-sito-web-dovrebbe-essere-accessibile\/\">Perch\u00e9 un sito web dovrebbe essere accessibile?<\/a><\/li>\n<li><a href=\"https:\/\/www.accessibilita.digital\/che-cose-laccessibilita-web\/\">Che cos\u2019\u00e8 l\u2019accessibilit\u00e0 web?<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Quando si parla di accessibilit\u00e0, \u00e8 molto utile comprendere l&#8217;uso degli attributi HTML. Attributi ARIA e uso dei role Accessible Rich Internet Applications, o meglio noti come ARIA, sono un insieme di attributi e ruoli che possono essere assegnati a determinati tag HTML e sono strettamente legati all\u2019accessibilit\u00e0. Role Il \u201crole\u201d \u00e8 un attributo usato [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":246,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-133","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/posts\/133"}],"collection":[{"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/comments?post=133"}],"version-history":[{"count":4,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/posts\/133\/revisions"}],"predecessor-version":[{"id":139,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/posts\/133\/revisions\/139"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/media\/246"}],"wp:attachment":[{"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/media?parent=133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/categories?post=133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/tags?post=133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}