Utilitzeu el connector modal de JavaScript de Bootstrap per afegir diàlegs al vostre lloc per a caixes de llum, notificacions d'usuari o contingut completament personalitzat.
Com funciona
Abans de començar amb el component modal de Bootstrap, assegureu-vos de llegir el següent, ja que les nostres opcions de menú han canviat recentment.
Els modals es creen amb HTML, CSS i JavaScript. Es col·loquen sobre tota la resta del document i eliminen el desplaçament de <body>manera que el contingut modal es desplaça.
Si feu clic al "teló de fons" modal, tancarà automàticament el modal.
Bootstrap només admet una finestra modal alhora. No s'admeten els modalitats imbricades, ja que creiem que són experiències d'usuari deficients.
Els modals utilitzen position: fixed, que de vegades pot ser una mica particular pel que fa a la seva representació. Sempre que sigui possible, col·loqueu el vostre HTML modal en una posició de primer nivell per evitar possibles interferències d'altres elements. És probable que tingueu problemes en niuar un .modaldins d'un altre element fix.
A causa de com HTML5 defineix la seva semàntica, l' autofocusatribut HTML no té cap efecte en els modals d'Bootstrap. Per aconseguir el mateix efecte, utilitzeu JavaScript personalitzat:
Continueu llegint per obtenir demostracions i directrius d'ús.
Exemples
Components modals
A continuació es mostra un exemple modal estàticposition (és a dir, el seu i displays'han substituït). S'inclouen la capçalera modal, el cos modal (obligatori per a padding) i el peu de pàgina modal (opcional). Us demanem que incloeu capçaleres modals amb accions d'ignoració sempre que sigui possible o proporcioneu una altra acció d'ignorar explícita.
Títol modal
El text del cos modal va aquí.
Demo en directe
Commuteu una demostració modal de treball fent clic al botó següent. Es lliscarà cap avall i s'esvaeix des de la part superior de la pàgina.
Títol modal
Woohoo, estàs llegint aquest text en un modal!
Teló de fons estàtic
Quan el fons s'estableix com a estàtic, el modal no es tancarà en fer clic fora d'ell. Feu clic al botó següent per provar-ho.
Títol modal
I will not close if you click outside me. Don't even try to press escape key.
Desplaçament de contingut llarg
Quan els modals es fan massa llargs per a la finestra o el dispositiu de l'usuari, es desplacen independentment de la pròpia pàgina. Proveu la demostració a continuació per veure què volem dir.
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.
També podeu crear un modal desplaçable que permeti desplaçar-vos pel cos del modal afegint .modal-dialog-scrollable- hi .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.
Centrat verticalment
Afegiu .modal-dialog-centereda .modal-dialogper centrar verticalment el modal.
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.
Consells d'eines i popovers
Els consells sobre eines i les finestres emergents es poden col·locar dins de modalitats segons sigui necessari. Quan es tanquen les modalitats, també es descarten automàticament qualsevol informació sobre eines i finestres emergents.
Utilitzeu el sistema de quadrícula Bootstrap dins d'un modal nidificant .container-fluiddins del fitxer .modal-body. A continuació, utilitzeu les classes normals del sistema de graella com ho faríeu en qualsevol altre lloc.
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
Contingut modal variable
Tens un munt de botons que activen tots el mateix modal amb continguts lleugerament diferents? Utilitzeu event.relatedTargeti atributs HTMLdata-* (possiblement mitjançant jQuery ) per variar el contingut del modal en funció del botó que s'hagi fet clic.
A continuació es mostra una demostració en directe seguida d'exemples d'HTML i JavaScript. Per obtenir més informació, llegiu els documents d'esdeveniments modals per obtenir més informació sobre relatedTarget.
New message
Canvia l'animació
La $modal-fade-transformvariable determina l'estat de transformació de .modal-dialogabans de l'animació d'esvaïment modal, la $modal-show-transformvariable determina la transformació de .modal-dialogal final de l'animació d'esvaïment modal.
Si voleu, per exemple, una animació amb zoom, podeu configurar $modal-fade-transform: scale(.8).
Elimina l'animació
Per als modals que simplement apareixen en lloc de desaparèixer per veure's, elimineu la .fadeclasse del vostre marcatge modal.
Altures dinàmiques
Si l'alçada d'un modal canvia mentre està obert, hauríeu de trucar $('#myModal').modal('handleUpdate')per reajustar la posició del modal en cas que aparegui una barra de desplaçament.
Accessibilitat
Assegureu-vos d'afegir role="dialog"i aria-labelledby="...", fent referència al títol modal, a .modal, i role="document"al .modal-dialogmateix. A més, podeu donar una descripció del vostre diàleg modal amb aria-describedbyon .modal.
Inserció de vídeos de YouTube
La inserció de vídeos de YouTube en modalitats requereix JavaScript addicional que no estigui a Bootstrap per aturar automàticament la reproducció i molt més. Consulteu aquesta útil publicació de Stack Overflow per obtenir més informació.
Mides opcionals
Els modals tenen tres mides opcionals, disponibles mitjançant classes modificadores per col·locar-los en un fitxer .modal-dialog. Aquestes mides s'inicien en determinats punts d'interrupció per evitar barres de desplaçament horitzontals a les finestres més estretes.
Mida
Classe
Amplada màxima modal
Petit
.modal-sm
300px
Per defecte
Cap
500px
Gran
.modal-lg
800px
Extra gran
.modal-xl
1140px
La nostra classe modal per defecte sense modificador constitueix el modal de mida "mitjana".
Extra large modal
...
Large modal
...
Small modal
...
Ús
El connector modal alterna el contingut ocult a demanda, mitjançant atributs de dades o JavaScript. També s'afegeix .modal-openal <body>comportament de desplaçament predeterminat per anul·lar i genera una .modal-backdropàrea de clic per descartar els modals mostrats quan es fa clic fora del modal.
Mitjançant atributs de dades
Activa un modal sense escriure JavaScript. Estableix data-toggle="modal"en un element del controlador, com un botó, juntament amb un data-target="#foo"o href="#foo"per orientar un modal específic per alternar.
Mitjançant JavaScript
Truqueu a un modal amb id myModalamb una sola línia de JavaScript:
Opcions
Les opcions es poden passar mitjançant atributs de dades o JavaScript. Per als atributs de dades, afegiu el nom de l'opció a data-, com a data-backdrop="".
Nom
Tipus
Per defecte
Descripció
teló de fons
booleà o la cadena'static'
veritat
Inclou un element de fons modal. Alternativament, especifiqueu staticun teló de fons que no tanqui el modal en fer clic o en prémer la tecla d'escapament.
teclat
booleà
veritat
Tanca el modal quan es prem la tecla d'escapament
focus
booleà
veritat
Posa el focus en el modal quan s'inicialitza.
espectacle
booleà
veritat
Mostra el modal quan s'inicialitza.
Mètodes
Mètodes asíncrons i transicions
Tots els mètodes de l'API són asíncrons i comencen una transició . Tornen a la persona que truca tan bon punt s'inicia la transició però abans que acabi . A més, s'ignorarà una trucada de mètode en un component en transició .
Activa el teu contingut com a modal. Accepta opcions opcionals object.
.modal('toggle')
Commuta manualment un modal. Torna a la persona que truca abans que el modal s'hagi mostrat o amagat (és a dir, abans que es produeixi l'esdeveniment shown.bs.modalo ).hidden.bs.modal
.modal('show')
Obre manualment un modal. Torna a la persona que truca abans que s'hagi mostrat realment el modal (és a dir, abans shown.bs.modalque es produeixi l'esdeveniment).
.modal('hide')
Amaga manualment un modal. Torna a la persona que truca abans que el modal s'hagi amagat (és a dir, abans hidden.bs.modalque es produeixi l'esdeveniment).
.modal('handleUpdate')
Reajusteu manualment la posició del modal si l'alçada d'un modal canvia mentre està obert (és a dir, en cas que aparegui una barra de desplaçament).
.modal('dispose')
Destrueix el modal d'un element.
Esdeveniments
La classe modal de Bootstrap exposa alguns esdeveniments per connectar-se a la funcionalitat modal. Tots els esdeveniments modals es desencadenen al propi modal (és a dir, al <div class="modal">).
Tipus d'esdeveniment
Descripció
show.bs.modal
Aquest esdeveniment s'activa immediatament quan showes crida al mètode d'instància. Si és causat per un clic, l'element clicat està disponible com a relatedTargetpropietat de l'esdeveniment.
mostrat.bs.modal
Aquest esdeveniment s'activa quan el modal s'ha fet visible per a l'usuari (esperarà que finalitzin les transicions CSS). Si és causat per un clic, l'element clicat està disponible com a relatedTargetpropietat de l'esdeveniment.
ocultar.bs.modal
Aquest esdeveniment s'activa immediatament quan hides'ha cridat el mètode d'instància.
hidden.bs.modal
Aquest esdeveniment s'activa quan el modal s'ha acabat d'ocultar a l'usuari (esperarà que finalitzin les transicions CSS).
hiddePrevented.bs.modal
Aquest esdeveniment s'activa quan es mostra el modal, el seu teló de fons statici es fa un clic fora del modal o es prem la tecla d'escapament.