{"id":140,"date":"2024-08-12T14:04:00","date_gmt":"2024-08-12T14:04:00","guid":{"rendered":"https:\/\/www.accessibilita.digital\/?p=140"},"modified":"2024-08-23T11:53:08","modified_gmt":"2024-08-23T11:53:08","slug":"come-usare-bootstrap-per-laccessibilita-web","status":"publish","type":"post","link":"https:\/\/www.accessibilita.digital\/come-usare-bootstrap-per-laccessibilita-web\/","title":{"rendered":"Come usare Bootstrap per l'accessibilit\u00e0 web"},"content":{"rendered":"<p>Bootstrap \u00e8 un <b>framework CSS<\/b> molto diffuso ed utilizzato da numerosi sviluppatori. La stessa <b>AGID<\/b>, l\u2019Agenzia di riferimento in Italia per il web e l\u2019accessibilit\u00e0, ha creato <a href=\"https:\/\/italia.github.io\/bootstrap-italia\/\" rel=\"nofollow noopener\">Bootstrap Italia<\/a>, una versione personalizzata dello stesso framework per lo sviluppo dei siti della <b>Pubblica Amministrazione<\/b>.<\/p>\n\n<h2>I framework CSS<\/h2>\n<p>Vi sono anche altri framework come <b>Foundation e Bulma<\/b>, anch\u2019essi molto interessanti e con i loro vantaggi. Personalmente posso consigliare di iniziare da Bootstrap e poi, in caso di necessit\u00e0 per alcuni progetti che gi\u00e0 usano altri framework, approcciarsi anche ad altre soluzioni.<\/p>\n<p>In effetti i vari framework ormai contengono anche <b>molti componenti dinamici predefiniti<\/b>, come i <a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/components\/carousel\/\" rel=\"nofollow noopener\">caroselli di immagini<\/a>, gli <a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/components\/accordion\/\" rel=\"nofollow noopener\">accordion<\/a>, i <a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/components\/modal\/\" rel=\"nofollow noopener\">modali<\/a> e via dicendo, tutti realizzati con il supporto di <b>Javascript<\/b>. Al giorno d\u2019oggi <b>usare un framework CSS di partenza pu\u00f2 essere molto utile<\/b>, al quale poi applicheremo le personalizzazioni necessarie tramite un foglio di stile (file CSS) separato.<\/p>\n<p>In molti casi io includo i file di Bootstrap e poi un file personalizzato come \u201cstyle.css\u201d o \u201cstyle-template.css\u201d per le modifiche specifiche che mi servono. Anche qui non abbiamo una regola precisa: una buona pratica \u00e8 <b>tenere sempre inalterato il file originale del framework<\/b>, anche perch\u00e9 poi potremmo doverlo aggiornare e perdere quindi eventuali modifiche, e fare tanti file CSS aggiuntivi quanti ce ne servono.<\/p>\n<p>Potremmo anche creare <strong>un file CSS<\/strong> per ogni <a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/layout\/breakpoints\" rel=\"nofollow noopener\">breakpoint<\/a>, cio\u00e8 per ogni \u201cpunto di rottura\u201d che definisce <b>il cambio di visualizzazione da un tipo di dispositivo ad un altro<\/b>, in genere si tratta di desktop larghi, desktop normali, tablet, telefono.<\/p>\n<h2>Le classi CSS per il supporto all&#8217;accessibilit\u00e0<\/h2>\n<p>Anzitutto, \u00e8 bene sapere che Bootstrap tiene molto in considerazione il tema dell\u2019<a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/getting-started\/accessibility\/\" rel=\"nofollow noopener\">accessibilit\u00e0<\/a>. Ad esempio, con la classe \u201cvisually-hidden\u201d, ma anche con il supporto alla \u201cReduced motion\u201d per utenti che preferiscono avere <strong>meno elementi dinamici<\/strong> all\u2019interno dei siti web.<\/p>\n<h3>Lettori di schermo<\/h3>\n<p>Nelle versioni precedenti di Bootstrap si usava la classe <a href=\"https:\/\/getbootstrap.com\/docs\/4.3\/getting-started\/accessibility\/#visually-hidden-content\" rel=\"nofollow noopener\">sr-only<\/a>, cio\u00e8 &#8220;screen reader only&#8221;, <strong>una classe dedicata ai lettori di schermo per nascondere un testo lasciandolo per\u00f2 visibile nell&#8217;HTML<\/strong>. Infatti, <strong>usare display:none in CSS significa nascondere un testo anche alle tecnologie assistive<\/strong>. In modo simile, da Bootstrap 5 \u00e8 stata introdotta la classe <a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/helpers\/visually-hidden\/\" rel=\"nofollow noopener\">visually-hidden<\/a> che ha <a href=\"https:\/\/getbootstrap.com\/docs\/5.0\/getting-started\/accessibility\/#visually-hidden-content\" rel=\"nofollow noopener\">sostituito sr-only<\/a>.<\/p>\n<p>Inoltre, \u00e8 solito usare classi come <strong>&#8220;sr-only-focusable&#8221;<\/strong> oppure <strong>&#8220;visually-hidden-focusable&#8221;<\/strong> che hanno la stessa funzione dei precedenti, cio\u00e8 rendere il contenuto nascosto all&#8217;utente normale e lasciarlo visibile nell&#8217;HTML, ma allo stesso tempo <strong>rendendolo raggiungibile dallo stato di &#8220;focus&#8221;<\/strong>, cio\u00e8 quella situazione in cui l&#8217;elemento riceve &#8220;l&#8217;attenzione&#8221; del cursore dell&#8217;utente, sia quando clicca l&#8217;elemento o quando lo raggiunge con il tasto <strong>Tab<\/strong>.<\/p>\n<h3>Riduzione dei movimenti<\/h3>\n<p>Bootstrap include il supporto per la funzionalit\u00e0 <a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/getting-started\/accessibility\/#reduced-motion\" rel=\"nofollow noopener\">prefers-reduced-motion<\/a>. Quando consentiamo all&#8217;utente di specificare la propria <strong>preferenza per il movimento ridotto<\/strong>, la maggior parte degli effetti di <strong>transizione CSS<\/strong> in Bootstrap (ad esempio, quando si apre o si chiude una finestra di dialogo modale o l&#8217;animazione scorrevole nei caroselli) saranno disabilitati e <strong>le animazioni pi\u00f9 impattanti<\/strong>, come gli spinner, saranno rallentate.<\/p>\n<p>Nei browser che supportano questa impostazione e in cui l&#8217;utente non ha segnalato esplicitamente la sua preferenza, Boostrap utilizza propriet\u00e0 <strong>scroll-behavior<\/strong> per permettere lo scorrimento fluido.<\/p>\n<p>Anche se non usiamo Bootstrap, pu\u00f2 essere utile utilizzare questa impostazione per <strong>ridurre le animazioni<\/strong> nel nostro sito. Per fare un esempio, l&#8217;ho usata in alcuni miei progetti, come <a href=\"https:\/\/swiccy.it\/\" rel=\"nofollow noopener\">Swiccy<\/a>, dove nel file <a href=\"https:\/\/swiccy.it\/css\/style.css\" rel=\"nofollow noopener\">style.css<\/a> ho rimosso le animazioni qualora l&#8217;utente dovesse preferire una ridotta mobilit\u00e0.<\/p>\n<p><code>@media (prefers-reduced-motion:reduce) {<\/code><br \/>\n<code>\u00a0.animated, .animated * { animation:none !important; }<\/code><br \/>\n<code>}<\/code><\/p>\n<h2>Bootstrap Italia<\/h2>\n<p>\u00c8 utile conoscerlo anche perch\u00e9 sta diventando <b>la base per lavorare alla realizzazione dei nuovi siti della Pubblicazione Amministrazione<\/b>, ed \u00e8 pienamente utilizzabile per la realizzazione di <b>siti custom<\/b> o anche di <b>temi personalizzati<\/b> per CMS come WordPress o altri.<\/p>\n<p>La versione pi\u00f9 recente si basa su Boostrap v5, e include gi\u00e0 molti componenti utili, ad esempio i caroselli realizzati tramite <a href=\"https:\/\/getbootstrap.com\/docs\/5.0\/getting-started\/accessibility\/#visually-hidden-content\" rel=\"nofollow noopener\">Splide<\/a>.<\/p>\n<p>Nella <a href=\"https:\/\/italia.github.io\/bootstrap-italia\/docs\/come-iniziare\/introduzione\/\" rel=\"nofollow noopener\">documentazione ufficiale<\/a> possiamo trovare le <strong>istruzioni all&#8217;uso<\/strong> e la lista dei <strong>componenti<\/strong> supportati, oltre alle varie utilit\u00e0 e alle indicazioni relative ai <a href=\"https:\/\/italia.github.io\/bootstrap-italia\/docs\/form\/introduzione\/\" rel=\"nofollow noopener\">form<\/a>.<\/p>\n<p>Chiaramente <strong>il codice HTML e CSS restano di nostra responsabilit\u00e0<\/strong>, ma questi strumenti possono aiutarci a realizzare siti <strong>pi\u00f9 facilmente conformi<\/strong> alle normative sull&#8217;accessibilit\u00e0, ad esempio per ci\u00f2 che riguarda il <a href=\"https:\/\/www.accessibilita.digital\/il-contrasto-e-i-colori-per-i-siti-web-accessibili\/\">contrasto del colore<\/a>, e <strong>ridurre i tempi di sviluppo<\/strong>, anzich\u00e9 dover realizzare un foglio di stile completamente personalizzato. Oltretutto, al giorno d&#8217;oggi \u00e8 quasi impossibile non utilizzare delle librerie Javascript o dei plugin per realizzare certi componenti, quindi questi framework possono davvero aiutarci.<\/p>\n<p>Ricordiamoci sempre di verificare il lavoro fatto con l&#8217;aiuto di <a href=\"https:\/\/www.accessibilita.digital\/6-strumenti-automatici-per-le-analisi-di-accessibilita-web\/\">tool automatici<\/a> per scansionare e <strong>rilevare eventuali problemi di accessibilit\u00e0<\/strong>.<\/p>\n<h2>Le icone<\/h2>\n<p>Alcuni framework CSS offrono anche la possibilit\u00e0 di avere delle <strong>icone<\/strong>, come <a href=\"https:\/\/icons.getbootstrap.com\/\" rel=\"nofollow noopener\">Bootstrap Icons<\/a>, o in alternativa possiamo usare anche <a href=\"https:\/\/fontawesome.com\/icons\" rel=\"nofollow noopener\">FontAwesome<\/a>.<\/p>\n<p>Bootstrap Italia usa uno <strong>sprite svg<\/strong> per includere le icone, che dovremo poi inserire tramite tag &lt;use&gt;. Nella <a href=\"https:\/\/italia.github.io\/bootstrap-italia\/docs\/utilities\/icone\/\" rel=\"nofollow noopener\">documentazione ufficiale<\/a> possiamo trovare alcuni esempi.<\/p>\n<p><code>&lt;svg class=\"icon\"&gt;&lt;use href=\"\/bootstrap-italia\/dist\/svg\/sprites.svg#it-tool\" xlink:href=\"\/bootstrap-italia\/dist\/svg\/sprites.svg#it-tool\"&gt;&lt;\/use&gt;&lt;\/svg&gt;<\/code><\/p>\n<p>Queste icone sono solitamente di pura decorazione e non hanno necessit\u00e0 di usare un testo alternativo, quello a cui dovremmo fare attenzione \u00e8 di <strong>non associare la stessa icona a usi completamente diversi<\/strong>. Per capirci, se usiamo il &#8220;chevron up&#8221;, cio\u00e8 la <strong>freccetta verso l&#8217;alto<\/strong>, per indicare l&#8217;apertura di un men\u00f9, <strong>non dovremmo<\/strong> poi usarla per indicare la chiusura di un accordion.<\/p>\n<h2>Link utili<\/h2>\n<ul>\n<li><a href=\"https:\/\/getbootstrap.com\/\" rel=\"nofollow noopener\">Bootstrap<\/a> e <a href=\"https:\/\/italia.github.io\/bootstrap-italia\/\" rel=\"nofollow noopener\">Bootstrap Italia<\/a><\/li>\n<li><a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/getting-started\/accessibility\/\" rel=\"nofollow noopener\">Bootstrap Accessibility<\/a><\/li>\n<li><a href=\"https:\/\/icons.getbootstrap.com\/\" rel=\"nofollow noopener\">Bootstrap Icons<\/a><\/li>\n<li><a href=\"https:\/\/italia.github.io\/bootstrap-italia\/docs\/utilities\/icone\/\" rel=\"nofollow noopener\">Bootstrap Italia: Icone<\/a><\/li>\n<li><a href=\"https:\/\/get.foundation\/\" rel=\"nofollow noopener\">Foundation<\/a><\/li>\n<li><a href=\"https:\/\/bulma.io\/\" rel=\"nofollow noopener\">Bulma<\/a><\/li>\n<li><a href=\"https:\/\/fontawesome.com\/icons\" rel=\"nofollow noopener\">FontAwesome<\/a><\/li>\n<li>MDN: <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/@media\/prefers-reduced-motion\" rel=\"nofollow noopener\">prefers-reduced-motion<\/a><\/li>\n<\/ul>\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>Bootstrap \u00e8 un framework CSS molto diffuso ed utilizzato da numerosi sviluppatori. La stessa AGID, l\u2019Agenzia di riferimento in Italia per il web e l\u2019accessibilit\u00e0, ha creato Bootstrap Italia, una versione personalizzata dello stesso framework per lo sviluppo dei siti della Pubblica Amministrazione. I framework CSS Vi sono anche altri framework come Foundation e Bulma, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":247,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-140","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\/140"}],"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=140"}],"version-history":[{"count":3,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/posts\/140\/revisions"}],"predecessor-version":[{"id":143,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/posts\/140\/revisions\/143"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/media\/247"}],"wp:attachment":[{"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/media?parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/categories?post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.accessibilita.digital\/wp-json\/wp\/v2\/tags?post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}