Fineste Modali
Un plugin Javascript per aprire in pop-up e mostrare contenuti in evidenza, notifiche agli utenti, o contenuti personalizzati.
Tieni presente che:
- Le modali sono costruite in HTML, CSS, e JavaScript. Sono posizionate al di sopra di ogni altro elemento della pagina
e rimuovono lo scroll dal
<body>
in modo che il contenuto della modale invece scorra. - Cliccando sulla parte che oscura la pagina (il cosiddetto backdrop della modale), questa verrà chiusa automativamente.
- A causa di come HTML5 definisce la sua semantica, l’attributo HTML
autofocus
non ha effetto sulle modali di Bootstrap. Per ottenere lo stesso effetto, usa un codice JavaScript personalizzato, ad esempio
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
})
Per generare una modale senza Javascript, imposta data-toggle="modal"
su un elemento di controllo, come un
pulsante, insieme a data-target="#foo"
o href="#foo"
per attivare/disattivare una specifica modale.
Esempio
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">Finestra Modale</button>
<!-- Modal -->
<div class="modal fade" tabindex="-1" role="dialog" id="exampleModal" aria-labelledby="exampleModalTitle">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalTitle">Lorem Ipsum</h5>
</div>
<div class="modal-body">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" data-dismiss="modal" type="button">Chiudi</button>
</div>
</div>
</div>
</div>
Allilneamento
Per aprire la modale da sinistra a destra aggiungere le seguenti classi:
Aggiungi .it-dialog-scrollable
a .modal
occupare tutta l’altezza disponibile.
Aggiungi .modal-dialog-left
a .modal-dialog
per allineare a sinistra la modale.
Per aprire la modale da destra a sinistra aggiungere le seguenti classi:
Aggiungi .it-dialog-scrollable
a .modal
occupare tutta l’altezza disponibile.
Aggiungi .modal-dialog-right
a .modal-dialog
per allineare a sinistra la modale.
Aggiungi .modal-dialog-centered
a .modal-dialog
per centrare verticalmente la modale.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalSX">Finestra Modale a sinistra</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalDX">Finestra Modale a destra</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalC">Finestra Modale centrata verticalmente</button>
<!-- Modal -->
<div class="modal it-dialog-scrollable fade" tabindex="-1" role="dialog" id="exampleModalSX" aria-labelledby="exampleModalTitle">
<div class="modal-dialog modal-dialog-left" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalTitle">Lorem Ipsum</h5>
</div>
<div class="modal-body">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" data-dismiss="modal" type="button">Chiudi</button>
</div>
</div>
</div>
</div>
<div class="modal it-dialog-scrollable fade" tabindex="-1" role="dialog" id="exampleModalDX" aria-labelledby="exampleModalTitle">
<div class="modal-dialog modal-dialog-right" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalTitle">Lorem Ipsum</h5>
</div>
<div class="modal-body">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" data-dismiss="modal" type="button">Chiudi</button>
</div>
</div>
</div>
</div>
<div class="modal fade" tabindex="-1" role="dialog" id="exampleModalC" aria-labelledby="exampleModalTitle">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalTitle">Lorem Ipsum</h5>
</div>
<div class="modal-body">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" data-dismiss="modal" type="button">Chiudi</button>
</div>
</div>
</div>
</div>
E' possibile utilizzare Javascript per ottenere un controllo più accurato delle finstre modali e degli eventi che generano.
Accessibilità
Aggiungi sempre:
- l’attributo
role="dialog"
all’elemento con classe.modal
(maggiori info su MDN) - l’attributo
aria-labelledby="..."
all’elemento con classe.modal
, con riferimento al titolo della modale stesso (maggiori info su MDN) - l’attributo
role="document"
applicato al.modal-dialog
stesso
Inoltre, puoi aggiungere una descrizione della tua finestra di dialogo modale con aria-describedby
su .modal
.
Nel caso non fosse presente un titolo al quale legare l’attributo aria-labelledby="..."
puoi etichettare la modale direttamente utilizzando l’attributo aria-label="Titolo modale"