Finestre modali
Usa il plugin Javascript di Bootstrap per aprire finestre modali per mostrare contenuti in evidenza, notifiche agli utenti, o contenuti personalizzati.
Accessibilità
Assicurati di aggiungere 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"
. Vedi esempio Modale semplice - Basico
Approfondisci l’argomento sul sito delle WAI-ARIA Authoring Practices.
Prima di descrivere il componente modale di Bootstrap, assicurati di leggere quanto segue:
- 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:
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
})
Esempi
In questa sezione gli esempi sono rappresentati da modali statiche, dove position
e display
sono stati sovrascritti mediante l’inclusione in un container .it-example-modal
.
Componenti della modale
Sono inclusi l’intestazione, il corpo, e il footer della modale. È richiesta l’inclusione di intestazioni o elementi con funzione di chiusura della modale stessa.
<div class="it-example-modal">
<div class="modal" tabindex="-1" role="dialog" id="modal1" aria-labelledby="modal1Title" aria-describedby="modal1Description">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modal1Title">dialog header</h5>
</div>
<div class="modal-body">
<p id="modal1Description">Modal purpose description text.</p>
<p>Font Titillium 16px. Leading 24px. omnis iste natus error.</p>
</div>
<div class="modal-footer">
<button class="btn btn-outline-primary btn-sm" type="button" data-dismiss="modal">Action two</button>
<button class="btn btn-primary btn-sm" type="button">Action one</button>
</div>
</div>
</div>
</div>
</div>
Modale con bottone di chiusura
Per chiudere la modale, si può utilizzare un bottone con classe .close
.
Assicurati di inserire del testo per gli screen readers, utilizzando l’attributo aria-label
.
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<svg class="icon">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-close"></use>
</svg>
</button>
Esempio completo:
<div class="it-example-modal">
<div class="modal" tabindex="-1" role="dialog" id="modal2" aria-labelledby="modal2Title">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modal2Title">This is a notification message</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<svg class="icon">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-close"></use>
</svg>
</button>
</div>
<div class="modal-body">
<p>In the various types of information modal dialog, only one button to close dialog is provided.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" type="button">Ok</button>
</div>
</div>
</div>
</div>
</div>
Modale con icona
È possibile inserire un icona di alert (o altro tipo) affiancandola all’intestazione.
Per formattare correttamente i contenuti della modale con icona, occorre aggiungere la classe alert-modal
all’elemento <div class="modal">
<div class="it-example-modal">
<div class="modal alert-modal" tabindex="-1" role="dialog" id="modal3" aria-labelledby="modal3Title">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<svg class="icon">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-info-circle"></use>
</svg>
<h5 class="modal-title" id="modal3Title">This is a notification message more long than usual</h5>
</div>
<div class="modal-body">
<p>In the various types of information modal dialog, only one button to close dialog is provided.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" type="button">Ok</button>
</div>
</div>
</div>
</div>
</div>
Modale con radiobuttons
All’interno della modale è possibile inserire elementi form. Di seguito una modale con un elenco di radio button.
<div class="it-example-modal">
<div class="modal" tabindex="-1" role="dialog" id="modal4" aria-labelledby="modal4Title">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modal4Title">Choose an item</h5>
</div>
<div class="modal-body">
<div class="form-check">
<input name="gruppo1" type="radio" id="radio1">
<label for="radio1">Opzione 1</label>
</div>
<div class="form-check">
<input name="gruppo1" type="radio" id="radio2">
<label for="radio2">Opzione 2</label>
</div>
<div class="form-check">
<input name="gruppo1" type="radio" id="radio3">
<label for="radio3">Opzione 3</label>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-outline-primary btn-sm" type="button" data-dismiss="modal">Cancel</button>
<button class="btn btn-primary btn-sm" type="button" disabled="">Ok</button>
</div>
</div>
</div>
</div>
</div>
Modale con Link List
All’interno della modale è possibile inserire delle Liste di link.
Per formattare correttamente il contenuto di questa modale, aggiungere la classe it-dialog-link-list
all’elemento <div class="modal">
<div class="it-example-modal">
<div class="modal it-dialog-link-list" tabindex="-1" role="dialog" id="modal5" aria-labelledby="modal5Title">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modal5Title"><span>1.</span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</h5>
</div>
<div class="modal-body">
<div class="link-list-wrapper">
<ul class="link-list">
<li>
<a class="list-item icon-left" href="#">
<svg class="icon icon-primary">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-chevron-right"></use>
</svg>
<span>Link list 1</span>
</a>
</li>
<li>
<a class="list-item icon-left" href="#">
<svg class="icon icon-primary">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-chevron-right"></use>
</svg>
<span>Link list 1</span>
</a>
</li>
<li>
<a class="list-item icon-left" href="#">
<svg class="icon icon-primary">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-chevron-right"></use>
</svg>
<span>Link list 1</span>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
Modale Popconfirm
La Modale di tipo Popconfirm può essere utilizzata per brevi messaggi di conferma. Questo particolare design si ottiene applicando la classe popconfirm-modal
all’elemento <div class="modal">
.
Il titolo della modale è facoltativo, nel caso non fosse necessario è sufficiente rimuovere l’intero elemento <div class="modal-header">
.
Basico
Con Header
<div class="it-example-modal">
<div class="container">
<div class="row">
<div class="col-12 col-lg-6">
<p><strong>Basico</strong></p>
<div class="modal popconfirm-modal" tabindex="-1" role="dialog" id="modal6" aria-label="Modale popconfirm">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<p>Font Titillium 14px. Leading 21px.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" type="button">Action one</button>
<button class="btn btn-outline-secondary btn-sm" type="button" data-dismiss="modal">Action two</button>
</div>
</div>
</div>
</div>
</div>
<div class="col-12 col-lg-6">
<p><strong>Con Header</strong></p>
<div class="modal popconfirm-modal" tabindex="-1" role="dialog" id="modal7" aria-labelledby="modal7Title">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modal7Title">Popconfirm header</h5>
</div>
<div class="modal-body">
<p>Font Titillium 14px. Leading 21px.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" type="button">Action one</button>
<button class="btn btn-outline-secondary btn-sm" type="button" data-dismiss="modal">Action two</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Demo
Modale semplice
Attiva o disattiva la demo di una modale facendo clic sul pulsante qui sotto.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">Lancia la demo della 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">dialog header</h5>
</div>
<div class="modal-body">
<p>Font Titillium 16px. Leading 24px. omnis iste natus error.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" data-dismiss="modal" type="button">Close</button>
</div>
</div>
</div>
</div>
Scroll di contenuti lunghi
Quando le modali diventano troppo lunghe per il viewport o il dispositivo dell’utente, scorrono indipendentemente dalla pagina stessa.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLong">Lancia la demo della modale</button>
<!-- Modal -->
<div class="modal fade" tabindex="-1" role="dialog" id="exampleModalLong" aria-labelledby="exampleModalLongTitle">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">dialog header</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<svg class="icon">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-close"></use>
</svg>
</button>
</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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
<div class="modal-footer">
<button class="btn btn-outline-primary btn-sm" type="button" data-dismiss="modal">Cancel</button>
<button class="btn btn-primary btn-sm" type="button">Action 1</button>
</div>
</div>
</div>
</div>
Scroll di contenuti all’interno della modale
Si può scelgliere di utilizzare uno scroll interno alla madole, mantenendo sempre visibile l’intestazione ed il footer della modale stessa aggiungendo la classe .it-dialog-scrollable
all’elemento <div class="modal">
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLongFixed">Lancia la demo della modale</button>
<!-- Modal -->
<div class="modal it-dialog-scrollable fade" tabindex="-1" role="dialog" id="exampleModalLongFixed" aria-labelledby="exampleModalLongFixedTitle">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongFixedTitle">dialog header</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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
<div class="modal-footer">
<button class="btn btn-outline-primary btn-sm" type="button" data-dismiss="modal">Cancel</button>
<button class="btn btn-primary btn-sm" type="button">Action 1</button>
</div>
</div>
</div>
</div>
Posizionamento
Centratura verticale
Aggiungi .modal-dialog-centered
a .modal-dialog
per centrare verticalmente la modale.
<!-- Button trigger modal -->
<button class="btn btn-primary" type="button" data-toggle="modal" data-target="#modalCenter">Lancia la demo della modale</button>
<!-- Modal -->
<div class="modal fade" tabindex="-1" role="dialog" id="modalCenter" aria-labelledby="modalCenterTitle">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalCenterTitle">This is a notification message</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<svg class="icon">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-close"></use>
</svg>
</button>
</div>
<div class="modal-body">
<p>In the various types of information modal dialog, only one button to close dialog is provided.</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" data-dismiss="modal" type="button">Ok</button>
</div>
</div>
</div>
</div>
Allineamento a sinistra
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.
<!-- Button trigger modal -->
<button class="btn btn-primary" type="button" data-toggle="modal" data-target="#modalLeft">Lancia la demo della modale</button>
<!-- Modal -->
<div class="modal it-dialog-scrollable fade" tabindex="-1" role="dialog" id="modalLeft" aria-labelledby="modalLeftTitle">
<div class="modal-dialog modal-dialog-left" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalLeftTitle">This is a notification message</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<svg class="icon">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-close"></use>
</svg>
</button>
</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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" type="button">Ok</button>
</div>
</div>
</div>
</div>
Allineamento a destra
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.
<!-- Button trigger modal -->
<button class="btn btn-primary" type="button" data-toggle="modal" data-target="#modalright">Lancia la demo della modale</button>
<!-- Modal -->
<div class="modal it-dialog-scrollable fade" tabindex="-1" role="dialog" id="modalright" aria-labelledby="modalrightTitle">
<div class="modal-dialog modal-dialog-right" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalrightTitle">This is a notification message</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<svg class="icon">
<use href="/bootstrap-italia/1.x/dist/svg/sprite.svg#it-close"></use>
</svg>
</button>
</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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" type="button">Ok</button>
</div>
</div>
</div>
</div>
Rimuovere l’animazione
Per avere modali che appaiono semplicemente senza dissolvenza, rimuovi la classe .fade
dal codice della tua modale.
<div class="modal" tabindex="-1" role="dialog" id="..." aria-labelledby="..." aria-hidden="true">...</div>
Dimensioni opzionali
Le modali hanno due dimensioni opzionali, disponibili tramite classi da posizionare su un .modal-dialog
. Queste dimensioni entrano in gioco in determinati breakpoint per evitare barre di scorrimento orizzontali su finestre più strette.
<!-- Small modal -->
<button type="button" class="btn btn-primary " data-toggle="modal" data-target=".bd-example-modal-sm">Modale piccola</button>
<div class="modal fade bd-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<h5 class="modal-title" id="mySmallModalLabel">Modale piccola</h5>
...
</div>
<div class="modal-footer">...</div>
</div>
</div>
<!-- Large modal -->
<button type="button" class="btn btn-primary " data-toggle="modal" data-target=".bd-example-modal-lg">Modale grande</button>
<div class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<h5 class="modal-title" id="myLargeModalLabel">Modale grande</h5>
...
</div>
<div class="modal-footer">...</div>
</div>
</div>
<!-- Extra large modal -->
<button type="button" class="btn btn-primary " data-toggle="modal" data-target=".bd-example-modal-xl">Modale molto grande</button>
<div class="modal fade bd-example-modal-xl" tabindex="-1" role="dialog" aria-labelledby="myExtraLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<h5 class="modal-title" id="myExtraLargeModalLabel">Modale molto grande</h5>
...
</div>
<div class="modal-footer">...</div>
</div>
</div>
Uso
Il plugin per le modali attiva/disattiva il tuo contenuto nascosto su richiesta, tramite attributi data o tramite JavaScript.
Aggiunge anche .modal-open
al <body>
per sovrascrivere comportamento di scroll predefinito e genera un .modal-backdrop
per fornire un’area cliccabile per chiudere le modali mostrate quando si clicca all’esterno di esse.
Tramite data attributes
Attiva una modale senza scrivere codice 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.
<button type="button" data-toggle="modal" data-target="#myModal">Lancia la modale</button>
Tramite JavaScript
Richiama una modale con id myModal
con una singola riga di JavaScript:
js$('#myModal').modal(options)
Metodi
Metodi asincroni e transizioni
Tutti i metodi API sono asincroni e avviano una transizione. Ritornano al chiamante non appena viene avviata la transizione ma prima che termini. Inoltre, una chiamata al metodo su un componente in transizione verrà ignorata.
Per maggiori informazioni consulta la documentazione Javascript di Bootstrap (in inglese).
.modal(options)
Attiva i tuoi contenuti come modali, configurabile con un oggetto (facoltativo).
$('#myModal').modal({
keyboard: false,
})
.modal('toggle')
Attiva/disattiva manualmente una modale. Ritorna al chiamante prima che la modale sia stata effettivamente mostrata o nascosta
(cioè prima che si verifichi l’evento shown.bs.modal
o l’evento hidden.bs.modal
).
js$('#myModal').modal('toggle')
.modal('show')
Apre manualmente una modale. Ritorna al chiamante prima che la modale sia stata effettivamente mostrata
(cioè prima che si verifichi l’evento shown.bs.modal
).
js$('#myModal').modal('show')
.modal('hide')
Nasconde manualmente una modale. Ritorna al chiamante prima che la modale sia stata effettivamente nascosta
(cioè prima che si verifichi l’evento hidden.bs.modal
).
js$('#myModal').modal('hide')
.modal('handleUpdate')
Riposiziona manualmente la modale se l’altezza della modale cambia nel momento in cui è aperta (nel caso appaia una barra di scorrimento).
js$('#myModal').modal('handleUpdate')
.modal('dispose')
Distrugge la modale di un elemento.
Eventi
La classe della modale di Bootstrap espone alcuni eventi per l’aggancio alla funzionalità modale.
Tutti gli eventi vengono attivati dalla modale stessa (cioè <div class="modal">
).
Tipo di evento | Descrizione |
---|---|
show.bs.modal | Questo evento si attiva immediatamente quando il metodo di istanza show viene chiamato. Se causato da un click, l'elemento selezionato è disponibile come proprietà relatedTarget dell'evento. |
shown.bs.modal | Questo evento viene attivato quando la modale è stata resa visibile all'utente (attenderà il completamento delle transizioni CSS). l'elemento selezionato è disponibile come proprietà relatedTarget dell'evento. |
hide.bs.modal | Questo evento viene generato immediatamente quando il metodo di istanza hide è stato chiamato. |
hidden.bs.modal | Questo evento viene attivato quando la modale ha finito di essere nascosta all'utente (attenderà il completamento delle transizioni CSS). |
$('#myModal').on('hidden.bs.modal', function (e) {
// fai qualcosa...
})