Modāls
Izmantojiet Bootstrap JavaScript modālo spraudni, lai savai vietnei pievienotu dialoglodziņus gaismas kārbām, lietotāju paziņojumiem vai pilnībā pielāgotam saturam.
Pirms sākat darbu ar Bootstrap modālo komponentu, noteikti izlasiet šo, jo mūsu izvēlnes opcijas nesen ir mainījušās.
- Modāļi ir veidoti, izmantojot HTML, CSS un JavaScript. Tie ir novietoti virs visa pārējā dokumentā un noņem ritināšanu,
<body>
lai tā vietā ritinātu modālais saturs. - Noklikšķinot uz modālā fona kolāža, modāls tiks automātiski aizvērts.
- Bootstrap vienlaikus atbalsta tikai vienu modālo logu. Ligzdotie modāļi netiek atbalstīti, jo uzskatām, ka tie rada sliktu lietotāja pieredzi.
- Modāļi izmanto
position: fixed
, kas dažkārt var nedaudz atšķirties no tā renderēšanas. Kad vien iespējams, novietojiet modālo HTML augstākā līmeņa pozīcijā, lai izvairītos no iespējamiem traucējumiem no citiem elementiem. Visticamāk, jums radīsies problēmas, ligzdojot a.modal
citā fiksētā elementā. - Atkal sakarā
position: fixed
ar modālu izmantošanu mobilajās ierīcēs ir daži brīdinājumi. Detalizētu informāciju skatiet mūsu pārlūkprogrammas atbalsta dokumentos . - Tā kā HTML5 definē savu semantiku, HTML
autofocus
atribūts Bootstrap modālos neietekmē. Lai sasniegtu tādu pašu efektu, izmantojiet kādu pielāgotu JavaScript:
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
})
Turpiniet lasīt demonstrācijas un lietošanas vadlīnijas.
Tālāk ir sniegts statisks modāls piemērs (tas nozīmē, ka tā position
un display
ir ignorētas). Iekļauta modālā galvene, modālais pamatteksts (nepieciešams padding
) un modālā kājene (neobligāti). Mēs lūdzam jūs iekļaut modālas galvenes ar noraidīšanas darbībām, kad vien iespējams, vai nodrošināt citu skaidru noraidīšanas darbību.
<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>
Pārslēdziet strādājošu modālu demonstrāciju, noklikšķinot uz tālāk esošās pogas. Tas noslīdēs uz leju un pazudīs no lapas augšdaļas.
<!-- 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>
Ja modāļi kļūst pārāk gari lietotāja skata logam vai ierīcei, tie ritina neatkarīgi no pašas lapas. Izmēģiniet tālāk redzamo demonstrāciju, lai redzētu, ko mēs domājam.
<!-- 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>
Pievienot .modal-dialog-centered
, .modal-dialog
lai vertikāli centrētu modālu.
<!-- 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>
Rīku padomus un uznirstošos logus var ievietot modālos pēc vajadzības. Kad modāļi ir aizvērti, visi rīka padomi un uznirstošie elementi arī tiek automātiski noraidīti.
<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>
Izmantojiet Bootstrap režģa sistēmu modālā, ligzdojot .container-fluid
. .modal-body
Pēc tam izmantojiet parastās režģa sistēmas klases tāpat kā jebkur citur.
<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>
Vai jums ir vairākas pogas, kas aktivizē vienu un to pašu modāli ar nedaudz atšķirīgu saturu? Izmantojiet event.relatedTarget
un HTML data-*
atribūtus (iespējams , izmantojot jQuery ), lai mainītu modāla saturu atkarībā no tā, kura poga tika noklikšķināta.
Zemāk ir tiešraides demonstrācija, kam seko HTML un JavaScript piemēri. Lai iegūtu papildinformāciju, izlasiet modālo notikumu dokumentus , lai iegūtu sīkāku informāciju par 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)
})
Modāliem, kas vienkārši parādās, nevis izgaist, lai skatītu, noņemiet .fade
klasi no modālā marķējuma.
<div class="modal" tabindex="-1" role="dialog" aria-labelledby="..." aria-hidden="true">
...
</div>
Ja modāla augstums mainās, kamēr tas ir atvērts, jums jāzvana $('#myModal').modal('handleUpdate')
, lai pielāgotu modāla pozīciju, ja parādās ritjosla.
Noteikti pievienojiet role="dialog"
un aria-labelledby="..."
, atsaucoties uz modālo nosaukumu, uz .modal
un role="document"
uz .modal-dialog
pašu. Turklāt varat sniegt modālā dialoga aprakstu, aria-describedby
izmantojot .modal
.
Lai iegultu YouTube videoklipus modālos, ir nepieciešams papildu JavaScript, kas nav Bootstrap, lai automātiski apturētu atskaņošanu un daudz ko citu. Lai iegūtu papildinformāciju, skatiet šo noderīgo Stack Overflow ziņu .
Modāļiem ir divi izvēles izmēri, kas ir pieejami modifikatoru klasēs, lai tos novietotu uz .modal-dialog
. Šie izmēri tiek aktivizēti noteiktos pārtraukuma punktos, lai izvairītos no horizontālām ritjoslām šaurākos skata portos.
<!-- 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>
Modālais spraudnis pēc pieprasījuma pārslēdz jūsu slēpto saturu, izmantojot datu atribūtus vai JavaScript. Tas arī papildina noklusējuma ritināšanas darbību ignorēšanai un ģenerē .modal-open
klikšķa apgabalu parādīto modāļu noraidīšanai, noklikšķinot ārpus modāla.<body>
.modal-backdrop
Aktivizējiet modālu, neierakstot JavaScript. Iestatiet data-toggle="modal"
kontroliera elementu, piemēram, pogu, kopā ar data-target="#foo"
vai href="#foo"
, lai atlasītu konkrētu modālu, lai pārslēgtu.
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
Izsauciet modālu ar ID myModal
ar vienu JavaScript rindiņu:
$('#myModal').modal(options)
Opcijas var nodot, izmantojot datu atribūtus vai JavaScript. Datu atribūtiem pievienojiet opcijas nosaukumu data-
, tāpat kā data-backdrop=""
.
Vārds | Tips | Noklusējums | Apraksts |
---|---|---|---|
fons | Būla vērtība vai virkne'static' |
taisnība | Ietver modāla fona elementu. Vai arī norādiet static fona kolāžu, kas neaizver modālu, noklikšķinot. |
tastatūra | Būla | taisnība | Aizver modālu, kad tiek nospiests evakuācijas taustiņš |
fokuss | Būla | taisnība | Inicializācijas laikā fokuss tiek likts uz modālu. |
parādīt | Būla | taisnība | Parāda modālu inicializācijas laikā. |
Asinhronās metodes un pārejas
Visas API metodes ir asinhronas un sāk pāreju . Viņi atgriežas pie zvanītāja, tiklīdz ir sākta pāreja, bet pirms tās beigām . Turklāt pārejas komponenta metodes izsaukums tiks ignorēts .
Aktivizē jūsu saturu kā modālu. Pieņem izvēles opcijas object
.
$('#myModal').modal({
keyboard: false
})
Manuāli pārslēdz modālu. Atgriežas pie zvanītāja, pirms modāls ir faktiski parādīts vai paslēpts (ti, pirms notiek notikums shown.bs.modal
vai ).hidden.bs.modal
$('#myModal').modal('toggle')
Manuāli atver modālu. Atgriežas pie zvanītāja, pirms modāls ir faktiski parādīts (ti, pirms shown.bs.modal
notikuma).
$('#myModal').modal('show')
Manuāli slēpj modālu. Atgriežas pie zvanītāja, pirms modāls ir faktiski paslēpts (ti, pirms hidden.bs.modal
notikuma).
$('#myModal').modal('hide')
Manuāli pārregulējiet modāļa pozīciju, ja modāla augstums mainās, kamēr tas ir atvērts (ti, ja parādās ritjosla).
$('#myModal').modal('handleUpdate')
Iznīcina elementa modālu.
Bootstrap modālā klase atklāj dažus notikumus, lai piesaistītu modālo funkcionalitāti. Visi modālie notikumi tiek aktivizēti uz pašu modālu (ti, uz <div class="modal">
).
Pasākuma veids | Apraksts |
---|---|
show.bs.modal | Šis notikums tiek aktivizēts nekavējoties, kad show tiek izsaukta instances metode. Ja to izraisījis klikšķis, noklikšķinātais elements ir pieejams kā relatedTarget notikuma īpašums. |
parādīts.bs.modal | Šis notikums tiek aktivizēts, kad modāls ir padarīts redzams lietotājam (pagaidīs, kamēr CSS pārejas tiks pabeigtas). Ja to izraisījis klikšķis, noklikšķinātais elements ir pieejams kā relatedTarget notikuma īpašums. |
slēpt.bs.modal | Šis notikums tiek aktivizēts nekavējoties, kad hide ir izsaukta instances metode. |
slēpts.bs.modal | Šis notikums tiek aktivizēts, kad modāls ir beidzis slēpt no lietotāja (pagaidīs, līdz CSS pārejas tiks pabeigtas). |
$('#myModal').on('hidden.bs.modal', function (e) {
// do something...
})