Modale
Usa il plug-in modale JavaScript di Bootstrap per aggiungere finestre di dialogo al tuo sito per lightbox, notifiche utente o contenuto completamente personalizzato.
Prima di iniziare con il componente modale di Bootstrap, assicurati di leggere quanto segue poiché le nostre opzioni di menu sono cambiate di recente.
- I modali sono costruiti con HTML, CSS e JavaScript. Sono posizionati su tutto il resto del documento e rimuovono lo scorrimento in
<body>modo che il contenuto modale scorra invece. - Cliccando sullo “sfondo” modale si chiuderà automaticamente il modale.
- Bootstrap supporta solo una finestra modale alla volta. Le modalità nidificate non sono supportate poiché riteniamo che siano esperienze utente scadenti.
- I modali usano
position: fixed, che a volte può essere un po' particolare riguardo al suo rendering. Quando possibile, posiziona il tuo HTML modale in una posizione di primo livello per evitare potenziali interferenze da altri elementi. È probabile che si verifichino problemi durante l'annidamento di un.modalelemento all'interno di un altro elemento fisso. - Ancora una volta, a causa di
position: fixed, ci sono alcuni avvertimenti con l'utilizzo di modali sui dispositivi mobili. Consulta i nostri documenti di supporto del browser per i dettagli. - A causa del modo in cui HTML5 definisce la sua semantica, l'
autofocusattributo HTML non ha effetto nelle modali Bootstrap. Per ottenere lo stesso effetto, usa del JavaScript personalizzato:
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
})
Continua a leggere per demo e linee guida sull'utilizzo.
Di seguito è riportato un esempio modale statico (che significa positionche displayè stato sovrascritto). Sono inclusi l'intestazione modale, il corpo modale (obbligatorio per padding) e il piè di pagina modale (facoltativo). Ti chiediamo di includere le intestazioni modali con azioni di eliminazione quando possibile o di fornire un'altra azione di eliminazione esplicita.
<div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Modal body text goes here.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Attiva o disattiva una demo modale funzionante facendo clic sul pulsante in basso. Scorrerà verso il basso e svanirà dalla parte superiore della pagina.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Quando le modali diventano troppo lunghe per il viewport o il dispositivo dell'utente, scorrono indipendentemente dalla pagina stessa. Prova la demo qui sotto per vedere cosa intendiamo.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLong">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Aggiungi .modal-dialog-centereda .modal-dialogper centrare verticalmente il modale.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalCenter">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalCenterTitle">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Tooltip e popover possono essere inseriti all'interno di modali secondo necessità. Quando i modali vengono chiusi, anche i suggerimenti e i popover all'interno vengono automaticamente eliminati.
<div class="modal-body">
<h5>Popover in a modal</h5>
<p>This <a href="#" role="button" class="btn btn-secondary popover-test" title="Popover title" data-content="Popover body content is set in this attribute.">button</a> triggers a popover on click.</p>
<hr>
<h5>Tooltips in a modal</h5>
<p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> have tooltips on hover.</p>
</div>
Utilizza il sistema di griglia Bootstrap all'interno di un modale annidando .container-fluidall'interno del file .modal-body. Quindi, usa le normali classi del sistema di griglia come faresti altrove.
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 ml-auto">.col-md-4 .ml-auto</div>
</div>
<div class="row">
<div class="col-md-3 ml-auto">.col-md-3 .ml-auto</div>
<div class="col-md-2 ml-auto">.col-md-2 .ml-auto</div>
</div>
<div class="row">
<div class="col-md-6 ml-auto">.col-md-6 .ml-auto</div>
</div>
<div class="row">
<div class="col-sm-9">
Level 1: .col-sm-9
<div class="row">
<div class="col-8 col-sm-6">
Level 2: .col-8 .col-sm-6
</div>
<div class="col-4 col-sm-6">
Level 2: .col-4 .col-sm-6
</div>
</div>
</div>
</div>
</div>
</div>
Hai un sacco di pulsanti che attivano tutti la stessa modale con contenuti leggermente diversi? Usa event.relatedTargete attributi HTMLdata-* (possibilmente tramite jQuery ) per variare il contenuto del modale a seconda del pulsante su cui è stato fatto clic.
Di seguito è riportata una demo dal vivo seguita da HTML e JavaScript di esempio. Per ulteriori informazioni, leggere i documenti degli eventi modali per i dettagli su relatedTarget.
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Open modal for @getbootstrap</button>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">New message</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="recipient-name" class="col-form-label">Recipient:</label>
<input type="text" class="form-control" id="recipient-name">
</div>
<div class="form-group">
<label for="message-text" class="col-form-label">Message:</label>
<textarea class="form-control" id="message-text"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Send message</button>
</div>
</div>
</div>
</div>
$('#exampleModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // Button that triggered the modal
var recipient = button.data('whatever') // Extract info from data-* attributes
// If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
// Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
var modal = $(this)
modal.find('.modal-title').text('New message to ' + recipient)
modal.find('.modal-body input').val(recipient)
})
Per i modali che appaiono semplicemente invece di essere visualizzati in dissolvenza, rimuovi la .fadeclasse dal markup modale.
<div class="modal" tabindex="-1" role="dialog" aria-labelledby="..." aria-hidden="true">
...
</div>
Se l'altezza di una modale cambia mentre è aperta, dovresti chiamare $('#myModal').modal('handleUpdate')per regolare nuovamente la posizione della modale nel caso in cui appaia una barra di scorrimento.
Assicurati di aggiungere role="dialog"e aria-labelledby="...", facendo riferimento al titolo modale, a .modale role="document"allo .modal-dialogstesso. Inoltre, puoi fornire una descrizione della tua finestra di dialogo modale con aria-describedbysu .modal.
L'incorporamento di video di YouTube in modalità modali richiede JavaScript aggiuntivo non in Bootstrap per interrompere automaticamente la riproduzione e altro ancora. Per ulteriori informazioni, vedere questo utile post sull'overflow dello stack .
I modali hanno due dimensioni opzionali, disponibili tramite classi di modifica da posizionare su un file .modal-dialog. Queste dimensioni si attivano in determinati punti di interruzione per evitare barre di scorrimento orizzontali su finestre più strette.
<!-- Large modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-lg">Large modal</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">
...
</div>
</div>
</div>
<!-- Small modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-sm">Small modal</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">
...
</div>
</div>
</div>
Il plug-in modale attiva o disattiva i tuoi contenuti nascosti su richiesta, tramite attributi di dati o JavaScript. Aggiunge anche .modal-openal <body>comportamento di scorrimento predefinito per sovrascrivere e genera un'area .modal-backdropdi clic per eliminare i modali mostrati quando si fa clic al di fuori del modale.
Attiva un modale senza scrivere JavaScript. Impostato data-toggle="modal"su un elemento del controller, come un pulsante, insieme a data-target="#foo"o href="#foo"per scegliere come target una modale specifica da attivare.
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
Chiama un modale con id myModalcon una singola riga di JavaScript:
$('#myModal').modal(options)
Le opzioni possono essere passate tramite attributi di dati o JavaScript. Per gli attributi dei dati, aggiungere il nome dell'opzione a data-, come in data-backdrop="".
| Nome | Tipo | Predefinito | Descrizione |
|---|---|---|---|
| sfondo | booleano o la stringa'static' |
VERO | Include un elemento di sfondo modale. In alternativa, specificare staticuno sfondo che non chiude il modale al clic. |
| tastiera del computer | booleano | VERO | Chiude il modale quando viene premuto il tasto Esc |
| messa a fuoco | booleano | VERO | Mette lo stato attivo sul modale quando inizializzato. |
| mostrare | booleano | VERO | Mostra il modale quando inizializzato. |
Metodi e transizioni asincrone
Tutti i metodi API sono asincroni e avviano una transizione . Ritornano al chiamante non appena la transizione è iniziata ma prima che termini . Inoltre, una chiamata al metodo su un componente in transizione verrà ignorata .
Consulta la nostra documentazione JavaScript per ulteriori informazioni.
Attiva il tuo contenuto come modale. Accetta opzioni opzionali object.
$('#myModal').modal({
keyboard: false
})
Alterna manualmente un modale. Ritorna al chiamante prima che il modale sia stato effettivamente mostrato o nascosto (cioè prima che si verifichi l' evento shown.bs.modalo hidden.bs.modal).
$('#myModal').modal('toggle')
Apre manualmente un modale. Ritorna al chiamante prima che il modale sia stato effettivamente mostrato (cioè prima shown.bs.modalche si verifichi l'evento).
$('#myModal').modal('show')
Nasconde manualmente un modale. Ritorna al chiamante prima che il modale sia stato effettivamente nascosto (cioè prima hidden.bs.modalche si verifichi l'evento).
$('#myModal').modal('hide')
Regolare manualmente la posizione del modale se l'altezza di un modale cambia mentre è aperto (cioè nel caso in cui appaia una barra di scorrimento).
$('#myModal').modal('handleUpdate')
Distrugge il modale di un elemento.
La classe modale di Bootstrap espone alcuni eventi per l'aggancio alla funzionalità modale. Tutti gli eventi modali vengono attivati sul modale stesso (cioè al <div class="modal">).
| Tipo di evento | Descrizione |
|---|---|
| show.bs.modal | Questo evento viene attivato immediatamente quando showviene chiamato il metodo dell'istanza. Se causato da un clic, l'elemento cliccato è disponibile come relatedTargetproprietà dell'evento. |
| mostrato.bs.modale | Questo evento viene attivato quando il modale è stato reso visibile all'utente (attenderà il completamento delle transizioni CSS). Se causato da un clic, l'elemento cliccato è disponibile come relatedTargetproprietà dell'evento. |
| nascondi.bs.modale | Questo evento viene generato immediatamente quando hideviene chiamato il metodo dell'istanza. |
| nascosto.bs.modale | Questo evento viene generato quando il modale ha finito di essere nascosto all'utente (attenderà il completamento delle transizioni CSS). |
$('#myModal').on('hidden.bs.modal', function (e) {
// do something...
})