Usa il plug-in modale JavaScript di Bootstrap per aggiungere finestre di dialogo al tuo sito per lightbox, notifiche utente o contenuto completamente personalizzato.
Come funziona
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.
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:
Continua a leggere per demo e linee guida sull'utilizzo.
Esempi
Componenti modali
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.
Titolo modale
Il corpo del testo modale va qui.
Dimostrazione dal vivo
Attiva o disattiva una demo modale funzionante facendo clic sul pulsante in basso. Scorrerà verso il basso e svanirà dalla parte superiore della pagina.
Titolo modale
Woohoo, stai leggendo questo testo in modale!
Sfondo statico
Quando lo sfondo è impostato su statico, il modale non si chiude quando si fa clic al di fuori di esso. Fare clic sul pulsante in basso per provarlo.
Titolo modale
I will not close if you click outside me. Don't even try to press escape key.
Scorrimento di contenuti lunghi
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.
Modal title
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Puoi anche creare un modale scorrevole che consente di scorrere il corpo modale aggiungendo .modal-dialog-scrollablea .modal-dialog.
Modal title
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Centrato verticalmente
Aggiungi .modal-dialog-centereda .modal-dialogper centrare verticalmente il modale.
Modal title
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Modal title
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Tooltip e popover
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.
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.
Grids in modals
.col-md-4
.col-md-4 .ml-auto
.col-md-3 .ml-auto
.col-md-2 .ml-auto
.col-md-6 .ml-auto
Level 1: .col-sm-9
Level 2: .col-8 .col-sm-6
Level 2: .col-4 .col-sm-6
Contenuto modale variabile
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.
New message
Cambia animazione
La $modal-fade-transformvariabile determina lo stato di trasformazione .modal-dialogprima dell'animazione di dissolvenza in entrata modale, la $modal-show-transformvariabile determina la trasformazione .modal-dialogalla fine dell'animazione di dissolvenza in entrata modale.
Se vuoi ad esempio un'animazione ingrandita, puoi impostare $modal-fade-transform: scale(.8).
Rimuovi l'animazione
Per i modali che appaiono semplicemente invece di essere visualizzati in dissolvenza, rimuovi la .fadeclasse dal markup modale.
Altezze dinamiche
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.
Accessibilità
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.
I modali hanno tre dimensioni opzionali, disponibili tramite classi di modificatori 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.
Dimensione
Classe
Larghezza massima modale
Piccolo
.modal-sm
300px
Predefinito
Nessuno
500px
Di grandi dimensioni
.modal-lg
800px
Extra grande
.modal-xl
1140px
La nostra classe modale predefinita senza modificatore costituisce la dimensione modale "media".
Extra large modal
...
Large modal
...
Small modal
...
Utilizzo
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.
Tramite attributi di dati
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.
Tramite JavaScript
Chiama un modale con id myModalcon una singola riga di JavaScript:
Opzioni
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, specifica staticper uno sfondo che non chiude il modale al clic o alla pressione del tasto Esc.
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
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 .
Attiva il tuo contenuto come modale. Accetta opzioni opzionali object.
.modal('toggle')
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).
.modal('show')
Apre manualmente un modale. Ritorna al chiamante prima che il modale sia stato effettivamente mostrato (cioè prima shown.bs.modalche si verifichi l'evento).
.modal('hide')
Nasconde manualmente un modale. Ritorna al chiamante prima che il modale sia stato effettivamente nascosto (cioè prima hidden.bs.modalche si verifichi l'evento).
.modal('handleUpdate')
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).
.modal('dispose')
Distrugge il modale di un elemento.
Eventi
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).
nascondiPrevented.bs.modal
Questo evento viene attivato quando viene mostrato il modale, il suo sfondo è statice viene eseguito un clic al di fuori del modale o viene premuto il tasto Esc.