Modal
Utilizați pluginul modal JavaScript al Bootstrap pentru a adăuga casete de dialog pe site-ul dvs. pentru casete luminoase, notificări de utilizator sau conținut complet personalizat.
Înainte de a începe cu componenta modală a Bootstrap, asigurați-vă că citiți următoarele, deoarece opțiunile noastre de meniu s-au schimbat recent.
- Modalurile sunt construite cu HTML, CSS și JavaScript. Ele sunt poziționate peste orice altceva din document și elimină derularea din,
<body>
astfel încât conținutul modal să defileze în schimb. - Făcând clic pe „fondul” modal, se va închide automat modalul.
- Bootstrap acceptă doar o fereastră modală la un moment dat. Modalurile imbricate nu sunt acceptate, deoarece considerăm că sunt experiențe slabe pentru utilizator.
- Modalii folosesc
position: fixed
, care uneori poate fi puțin specific în ceea ce privește redarea sa. Ori de câte ori este posibil, plasați codul HTML modal într-o poziție de nivel superior pentru a evita potențiala interferență din partea altor elemente. Probabil că veți întâmpina probleme atunci când imbricați un.modal
alt element fix. - Încă o dată, din cauza
position: fixed
, există câteva avertismente cu utilizarea modalelor pe dispozitivele mobile. Consultați documentele noastre de asistență pentru browser pentru detalii. - Datorită modului în care HTML5 își definește semantica, atributul
autofocus
HTML nu are niciun efect în modalele Bootstrap. Pentru a obține același efect, utilizați JavaScript personalizat:
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
})
Continuați să citiți pentru demonstrații și instrucțiuni de utilizare.
Mai jos este un exemplu modal static (adică position
și display
au fost suprascrise). Sunt incluse antetul modal, corpul modal (necesar pentru padding
) și subsolul modal (opțional). Vă rugăm să includeți antete modale cu acțiuni de respingere ori de câte ori este posibil sau să furnizați o altă acțiune explicită de respingere.
<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-primary">Save changes</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
Comutați o demonstrație modală funcțională făcând clic pe butonul de mai jos. Acesta va aluneca în jos și va dispărea din partea de sus a paginii.
<!-- 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>
Când modalele devin prea lungi pentru vizualizarea sau dispozitivul utilizatorului, ele derulează independent de pagina în sine. Încercați demonstrația de mai jos pentru a vedea la ce ne referim.
<!-- 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>
Adăugați .modal-dialog-centered
la .modal-dialog
pentru a centra vertical modalul.
<!-- 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="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>
Sfaturile cu instrumente și popover -urile pot fi plasate în modal după cum este necesar. Când modalele sunt închise, toate sfaturile instrumente și popover-urile din interior sunt, de asemenea, respinse automat.
<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>
Utilizați sistemul de grilă Bootstrap într-un modal prin imbricarea .container-fluid
în .modal-body
. Apoi, utilizați clasele normale ale sistemului de grilă așa cum ați face oriunde altundeva.
<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>
Aveți o grămadă de butoane care declanșează același modal cu conținut ușor diferit? Utilizați event.relatedTarget
și atributele HTMLdata-*
(eventual prin jQuery ) pentru a varia conținutul modalului în funcție de ce buton a fost făcut clic.
Mai jos este o demonstrație live urmată de exemplu HTML și JavaScript. Pentru mai multe informații, citiți documentele despre evenimente modale pentru detalii despre 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)
})
Pentru modalele care apar pur și simplu în loc să se estompeze pentru a le vizualiza, eliminați .fade
clasa din marcajul modal.
<div class="modal" tabindex="-1" role="dialog" aria-labelledby="..." aria-hidden="true">
...
</div>
Dacă înălțimea unui modal se modifică în timp ce este deschis, ar trebui să sunați $('#myModal').modal('handleUpdate')
pentru a reajusta poziția modalului în cazul în care apare o bară de defilare.
Asigurați-vă că adăugați role="dialog"
și aria-labelledby="..."
, făcând referire la titlul modal, la .modal
, și role="document"
la .modal-dialog
însuși. În plus, puteți oferi o descriere a dialogului dvs. modal cu aria-describedby
on .modal
.
Încorporarea videoclipurilor YouTube în modal necesită JavaScript suplimentar care nu este în Bootstrap pentru a opri automat redarea și multe altele. Consultați această postare utilă Stack Overflow pentru mai multe informații.
Modalurile au două dimensiuni opționale, disponibile prin clase de modificatori pentru a fi plasate pe un .modal-dialog
. Aceste dimensiuni intervin la anumite puncte de întrerupere pentru a evita barele de defilare orizontale pe ferestrele de vizualizare mai înguste.
<!-- 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>
Pluginul modal schimbă conținutul ascuns la cerere, prin atribute de date sau JavaScript. De asemenea, se adaugă .modal-open
la <body>
comportamentul de defilare implicit pentru a suprascrie și generează o .modal-backdrop
zonă pentru a oferi o zonă de clic pentru respingerea modalelor afișate atunci când faceți clic în afara modalului.
Activați un mod fără a scrie JavaScript. Setați data-toggle="modal"
pe un element de controler, cum ar fi un buton, împreună cu data-target="#foo"
sau href="#foo"
pentru a viza un anumit mod de comutare.
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
Apelați un modal cu id myModal
cu o singură linie de JavaScript:
$('#myModal').modal(options)
Opțiunile pot fi transmise prin atribute de date sau JavaScript. Pentru atributele datelor, adăugați numele opțiunii la data-
, ca în data-backdrop=""
.
Nume | Tip | Mod implicit | Descriere |
---|---|---|---|
fundal | boolean sau șirul'static' |
Adevărat | Include un element modal de fundal. Alternativ, specificați static pentru un fundal care nu închide modal la clic. |
tastatură | boolean | Adevărat | Închide modulul când este apăsată tasta Escape |
se concentreze | boolean | Adevărat | Pune accentul pe modal atunci când este inițializat. |
spectacol | boolean | Adevărat | Afișează modal atunci când este inițializat. |
Metode și tranziții asincrone
Toate metodele API sunt asincrone și încep o tranziție . Ei revin la apelant imediat ce tranziția este începută, dar înainte ca aceasta să se încheie . În plus, un apel de metodă pentru o componentă de tranziție va fi ignorat .
Consultați documentația noastră JavaScript pentru mai multe informații.
Activează conținutul dvs. ca modal. Acceptă opțiuni opționale object
.
$('#myModal').modal({
keyboard: false
})
Comută manual un mod. Se întoarce la apelant înainte ca modalul să fie afișat sau ascuns (adică înainte ca evenimentul shown.bs.modal
sau să hidden.bs.modal
apară).
$('#myModal').modal('toggle')
Deschide manual un modal. Se întoarce la apelant înainte ca modalul să fie afișat efectiv (adică înainte de apariția shown.bs.modal
evenimentului).
$('#myModal').modal('show')
Ascunde manual un modal. Se întoarce la apelant înainte ca modalul să fi fost efectiv ascuns (adică înainte de apariția hidden.bs.modal
evenimentului).
$('#myModal').modal('hide')
Reajustați manual poziția modalului dacă înălțimea unui modal se modifică în timp ce acesta este deschis (adică în cazul în care apare o bară de defilare).
$('#myModal').modal('handleUpdate')
Distruge modalul unui element.
Clasa modală a Bootstrap expune câteva evenimente pentru conectarea la funcționalitatea modală. Toate evenimentele modale sunt declanșate la modal în sine (adică la <div class="modal">
).
Tip de eveniment | Descriere |
---|---|
show.bs.modal | Acest eveniment se declanșează imediat când show este apelată metoda instanței. Dacă este cauzat de un clic, elementul pe care s-a făcut clic este disponibil ca relatedTarget proprietate a evenimentului. |
arătat.bs.modal | Acest eveniment este declanșat atunci când modalul a fost făcut vizibil pentru utilizator (va aștepta finalizarea tranzițiilor CSS). Dacă este cauzat de un clic, elementul pe care s-a făcut clic este disponibil ca relatedTarget proprietate a evenimentului. |
ascunde.bs.modal | Acest eveniment este declanșat imediat când hide metoda instanței a fost apelată. |
ascuns.bs.modal | Acest eveniment este declanșat când modalul a terminat de ascuns utilizatorului (va aștepta finalizarea tranzițiilor CSS). |
$('#myModal').on('hidden.bs.modal', function (e) {
// do something...
})