Modal
Koristite Bootstrap-ov JavaScript modalni dodatak za dodavanje dijaloga na svoju web lokaciju za okvire za pregled, korisnička obavještenja ili potpuno prilagođeni sadržaj.
Kako radi
Pre nego što počnete sa Bootstrap modalnom komponentom, obavezno pročitajte sledeće jer su se naše opcije menija nedavno promenile.
- Modali se grade pomoću HTML-a, CSS-a i JavaScript-a. Oni su pozicionirani iznad svega ostalog u dokumentu i uklanjaju pomicanje iz dokumenta
<body>
tako da se umjesto toga pomiče modalni sadržaj. - Klikom na modalnu „pozadinu“ automatski će se zatvoriti modal.
- Bootstrap podržava samo jedan modalni prozor u isto vrijeme. Ugniježđeni modali nisu podržani jer vjerujemo da su loše korisničko iskustvo.
- Modali koriste
position: fixed
, što ponekad može biti malo posebno u pogledu njegovog prikazivanja. Kad god je moguće, postavite svoj modalni HTML na poziciju najvišeg nivoa kako biste izbjegli potencijalne smetnje od drugih elemenata. Vjerovatno ćete naići na probleme kada ugniježdite a.modal
unutar drugog fiksnog elementa. - Još jednom, zbog
position: fixed
, postoje neka upozorenja pri korištenju modala na mobilnim uređajima. Pogledajte naše dokumente za podršku pretraživača za detalje. - Zbog načina na koji HTML5 definira svoju semantiku, HTML
autofocus
atribut nema efekta u Bootstrap modalima. Da biste postigli isti efekat, koristite neki prilagođeni JavaScript:
const myModal = document.getElementById('myModal')
const myInput = document.getElementById('myInput')
myModal.addEventListener('shown.bs.modal', () => {
myInput.focus()
})
prefers-reduced-motion
medijskom upitu. Pogledajte odjeljak o
smanjenom pokretu u našoj dokumentaciji o pristupačnosti .
Nastavite čitati za demonstracije i smjernice za korištenje.
Primjeri
Modalne komponente
Ispod je statički modalni primjer (što znači da su njegovi position
i display
zamijenjeni). Uključeno je modalno zaglavlje, modalno tijelo (obavezno za padding
) i modalno podnožje (opcionalno). Tražimo da uključite modalna zaglavlja s radnjama odbacivanja kad god je to moguće ili navedete drugu eksplicitnu radnju odbacivanja.
<div class="modal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Modal title</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></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-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Demo uživo
Uključite radnu modalnu demonstraciju klikom na dugme ispod. Kliziće nadole i nestajati sa vrha stranice.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Statička pozadina
Kada je pozadina postavljena na statičnu, modal se neće zatvoriti kada kliknete izvan njega. Kliknite na dugme ispod da isprobate.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#staticBackdrop">
Launch static backdrop modal
</button>
<!-- Modal -->
<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">Modal title</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Understood</button>
</div>
</div>
</div>
</div>
Pomeranje dugog sadržaja
Kada modali postanu predugi za korisnikov okvir za pregled ili uređaj, oni se pomiču nezavisno od same stranice. Isprobajte demo u nastavku da vidite na šta mislimo.
Također možete kreirati modal koji se može pomicati i koji omogućava pomicanje modalnog tijela dodavanjem .modal-dialog-scrollable
u .modal-dialog
.
<!-- Scrollable modal -->
<div class="modal-dialog modal-dialog-scrollable">
...
</div>
Vertikalno centriran
Dodajte .modal-dialog-centered
do .modal-dialog
da biste vertikalno centrirali modal.
<!-- Vertically centered modal -->
<div class="modal-dialog modal-dialog-centered">
...
</div>
<!-- Vertically centered scrollable modal -->
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
...
</div>
Alati i iskačući oglasi
Oznake alata i skočni prozori mogu se postaviti unutar modala po potrebi. Kada se modali zatvore, svi opisi alata i skočni prozori unutar se također automatski odbacuju.
<div class="modal-body">
<h5>Popover in a modal</h5>
<p>This <a href="#" role="button" class="btn btn-secondary" data-bs-toggle="popover" title="Popover title" data-bs-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="#" data-bs-toggle="tooltip" title="Tooltip">This link</a> and <a href="#" data-bs-toggle="tooltip" title="Tooltip">that link</a> have tooltips on hover.</p>
</div>
Korištenje mreže
Koristite Bootstrap grid sistem unutar modalnog ugniježđenja .container-fluid
unutar .modal-body
. Zatim koristite normalne klase sistema mreže kao i bilo gdje drugdje.
<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 ms-auto">.col-md-4 .ms-auto</div>
</div>
<div class="row">
<div class="col-md-3 ms-auto">.col-md-3 .ms-auto</div>
<div class="col-md-2 ms-auto">.col-md-2 .ms-auto</div>
</div>
<div class="row">
<div class="col-md-6 ms-auto">.col-md-6 .ms-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>
Različiti modalni sadržaj
Imate gomilu dugmadi koja svi pokreću isti modal sa malo drugačijim sadržajem? Koristite event.relatedTarget
i HTML data-bs-*
atribute za variranje sadržaja modala u zavisnosti od toga na koje dugme ste kliknuli.
Ispod je demo uživo praćen primjerima HTML-a i JavaScript-a. Za više informacija, pročitajte dokumentaciju o modalnim događajima za detalje o relatedTarget
.
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@mdo">Open modal for @mdo</button>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@fat">Open modal for @fat</button>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@getbootstrap">Open modal for @getbootstrap</button>
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">New message</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form>
<div class="mb-3">
<label for="recipient-name" class="col-form-label">Recipient:</label>
<input type="text" class="form-control" id="recipient-name">
</div>
<div class="mb-3">
<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-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Send message</button>
</div>
</div>
</div>
</div>
const exampleModal = document.getElementById('exampleModal')
exampleModal.addEventListener('show.bs.modal', event => {
// Button that triggered the modal
const button = event.relatedTarget
// Extract info from data-bs-* attributes
const recipient = button.getAttribute('data-bs-whatever')
// If necessary, you could initiate an AJAX request here
// and then do the updating in a callback.
//
// Update the modal's content.
const modalTitle = exampleModal.querySelector('.modal-title')
const modalBodyInput = exampleModal.querySelector('.modal-body input')
modalTitle.textContent = `New message to ${recipient}`
modalBodyInput.value = recipient
})
Prebacivanje između modala
Prebacite se između više modala s nekim pametnim postavljanjem atributa data-bs-target
i . data-bs-toggle
Na primjer, možete uključiti modal za poništavanje lozinke unutar već otvorenog modalnog za prijavu. Imajte na umu da više modala ne može biti otvoreno u isto vrijeme — ovaj metod jednostavno prebacuje između dva odvojena modala.
<div class="modal fade" id="exampleModalToggle" aria-hidden="true" aria-labelledby="exampleModalToggleLabel" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalToggleLabel">Modal 1</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Show a second modal and hide this one with the button below.
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-bs-target="#exampleModalToggle2" data-bs-toggle="modal">Open second modal</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="exampleModalToggle2" aria-hidden="true" aria-labelledby="exampleModalToggleLabel2" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalToggleLabel2">Modal 2</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Hide this modal and show the first with the button below.
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-bs-target="#exampleModalToggle" data-bs-toggle="modal">Back to first</button>
</div>
</div>
</div>
</div>
<a class="btn btn-primary" data-bs-toggle="modal" href="#exampleModalToggle" role="button">Open first modal</a>
Promijenite animaciju
Varijabla $modal-fade-transform
određuje stanje transformacije .modal-dialog
prije modalne animacije fade-in, $modal-show-transform
varijabla određuje transformaciju .modal-dialog
na kraju modalne animacije fade-in.
Ako želite na primjer animaciju zumiranja, možete postaviti $modal-fade-transform: scale(.8)
.
Ukloni animaciju
Za modale koji se jednostavno pojavljuju, a ne blede u prikazu, uklonite .fade
klasu iz modalne oznake.
<div class="modal" tabindex="-1" aria-labelledby="..." aria-hidden="true">
...
</div>
Dinamičke visine
Ako se visina modala promijeni dok je otvoren, trebali biste pozvati myModal.handleUpdate()
da ponovo podesite poziciju modala u slučaju da se pojavi traka za pomicanje.
Pristupačnost
Obavezno dodajte aria-labelledby="..."
, pozivajući se na modalni naslov, u .modal
. Dodatno, možete dati opis svog modalnog dijaloga sa aria-describedby
na .modal
. Imajte na umu da ne morate dodavati role="dialog"
jer ga već dodajemo putem JavaScripta.
Ugrađivanje YouTube video zapisa
Ugrađivanje YouTube videozapisa u modale zahtijeva dodatni JavaScript koji nije u Bootstrapu za automatsko zaustavljanje reprodukcije i još mnogo toga. Pogledajte ovu korisnu objavu Stack Overflow za više informacija.
Opcione veličine
Modali imaju tri opcione veličine, dostupne preko klasa modifikatora koje se postavljaju na .modal-dialog
. Ove veličine se pojavljuju na određenim prijelomnim tačkama kako bi se izbjegle horizontalne trake za pomicanje na užim okvirima za prikaz.
Veličina | Klasa | Modalna maksimalna širina |
---|---|---|
Mala | .modal-sm |
300px |
Default | Nema | 500px |
Veliko | .modal-lg |
800px |
Ekstra veliki | .modal-xl |
1140px |
Naš zadani modal bez klase modifikatora čini modal "srednje" veličine.
<div class="modal-dialog modal-xl">...</div>
<div class="modal-dialog modal-lg">...</div>
<div class="modal-dialog modal-sm">...</div>
Modal za cijeli ekran
Još jedno nadjačavanje je opcija da se pojavi modalni prozor koji pokriva korisnički okvir za prikaz, dostupan preko klasa modifikatora koje su postavljene na .modal-dialog
.
Klasa | Dostupnost | |
---|---|---|
.modal-fullscreen |
Uvijek | |
.modal-fullscreen-sm-down |
576px |
|
.modal-fullscreen-md-down |
768px |
|
.modal-fullscreen-lg-down |
992px |
|
.modal-fullscreen-xl-down |
1200px |
|
.modal-fullscreen-xxl-down |
1400px |
<!-- Full screen modal -->
<div class="modal-dialog modal-fullscreen-sm-down">
...
</div>
CSS
Varijable
Dodato u v5.2.0Kao dio Bootstrap-ovog evoluirajućeg pristupa CSS varijabli, modali sada koriste lokalne CSS varijable na .modal
i .modal-backdrop
za poboljšanu prilagodbu u realnom vremenu. Vrijednosti za CSS varijable se postavljaju putem Sass-a, tako da je i Sass prilagođavanje i dalje podržano.
--#{$prefix}modal-zindex: #{$zindex-modal};
--#{$prefix}modal-width: #{$modal-md};
--#{$prefix}modal-padding: #{$modal-inner-padding};
--#{$prefix}modal-margin: #{$modal-dialog-margin};
--#{$prefix}modal-color: #{$modal-content-color};
--#{$prefix}modal-bg: #{$modal-content-bg};
--#{$prefix}modal-border-color: #{$modal-content-border-color};
--#{$prefix}modal-border-width: #{$modal-content-border-width};
--#{$prefix}modal-border-radius: #{$modal-content-border-radius};
--#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-xs};
--#{$prefix}modal-inner-border-radius: #{$modal-content-inner-border-radius};
--#{$prefix}modal-header-padding-x: #{$modal-header-padding-x};
--#{$prefix}modal-header-padding-y: #{$modal-header-padding-y};
--#{$prefix}modal-header-padding: #{$modal-header-padding}; // Todo in v6: Split this padding into x and y
--#{$prefix}modal-header-border-color: #{$modal-header-border-color};
--#{$prefix}modal-header-border-width: #{$modal-header-border-width};
--#{$prefix}modal-title-line-height: #{$modal-title-line-height};
--#{$prefix}modal-footer-gap: #{$modal-footer-margin-between};
--#{$prefix}modal-footer-bg: #{$modal-footer-bg};
--#{$prefix}modal-footer-border-color: #{$modal-footer-border-color};
--#{$prefix}modal-footer-border-width: #{$modal-footer-border-width};
--#{$prefix}backdrop-zindex: #{$zindex-modal-backdrop};
--#{$prefix}backdrop-bg: #{$modal-backdrop-bg};
--#{$prefix}backdrop-opacity: #{$modal-backdrop-opacity};
Sass varijable
$modal-inner-padding: $spacer;
$modal-footer-margin-between: .5rem;
$modal-dialog-margin: .5rem;
$modal-dialog-margin-y-sm-up: 1.75rem;
$modal-title-line-height: $line-height-base;
$modal-content-color: null;
$modal-content-bg: $white;
$modal-content-border-color: var(--#{$prefix}border-color-translucent);
$modal-content-border-width: $border-width;
$modal-content-border-radius: $border-radius-lg;
$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width);
$modal-content-box-shadow-xs: $box-shadow-sm;
$modal-content-box-shadow-sm-up: $box-shadow;
$modal-backdrop-bg: $black;
$modal-backdrop-opacity: .5;
$modal-header-border-color: var(--#{$prefix}border-color);
$modal-header-border-width: $modal-content-border-width;
$modal-header-padding-y: $modal-inner-padding;
$modal-header-padding-x: $modal-inner-padding;
$modal-header-padding: $modal-header-padding-y $modal-header-padding-x; // Keep this for backwards compatibility
$modal-footer-bg: null;
$modal-footer-border-color: $modal-header-border-color;
$modal-footer-border-width: $modal-header-border-width;
$modal-sm: 300px;
$modal-md: 500px;
$modal-lg: 800px;
$modal-xl: 1140px;
$modal-fade-transform: translate(0, -50px);
$modal-show-transform: none;
$modal-transition: transform .3s ease-out;
$modal-scale-transform: scale(1.02);
Petlja
Responzivni modali na cijelom ekranu se generiraju putem $breakpoints
mape i petlje u scss/_modal.scss
.
@each $breakpoint in map-keys($grid-breakpoints) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
$postfix: if($infix != "", $infix + "-down", "");
@include media-breakpoint-down($breakpoint) {
.modal-fullscreen#{$postfix} {
width: 100vw;
max-width: none;
height: 100%;
margin: 0;
.modal-content {
height: 100%;
border: 0;
@include border-radius(0);
}
.modal-header,
.modal-footer {
@include border-radius(0);
}
.modal-body {
overflow-y: auto;
}
}
}
}
Upotreba
Modalni dodatak uključuje vaš skriveni sadržaj na zahtjev, putem atributa podataka ili JavaScripta. Takođe nadjačava podrazumevano ponašanje pomeranja i generiše a .modal-backdrop
da obezbedi oblast klika za odbacivanje prikazanih modala kada se klikne izvan modalnog.
Preko atributa podataka
Prebaci
Aktivirajte modalni bez pisanja JavaScripta. Postavite data-bs-toggle="modal"
na element kontrolera, poput dugmeta, zajedno sa data-bs-target="#foo"
ili href="#foo"
da biste ciljali određeni modal za prebacivanje.
<button type="button" data-bs-toggle="modal" data-bs-target="#myModal">Launch modal</button>
Odbaci
Otpuštanje se može postići s data
atributom na gumbu unutar modala kao što je prikazano u nastavku:
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
ili na dugme izvan modalnog koristeći data-bs-target
kao što je prikazano u nastavku:
<button type="button" class="btn-close" data-bs-dismiss="modal" data-bs-target="#my-modal" aria-label="Close"></button>
Preko JavaScripta
Kreirajte modal sa jednom linijom JavaScripta:
const myModal = new bootstrap.Modal(document.getElementById('myModal'), options)
// or
const myModalAlternative = new bootstrap.Modal('#myModal', options)
Opcije
Kako se opcije mogu proslijediti putem atributa podataka ili JavaScripta, možete dodati naziv opcije u data-bs-
, kao u data-bs-animation="{value}"
. Obavezno promijenite tip slučaja naziva opcije iz “ camelCase ” u “ kebab-case ” prilikom prosljeđivanja opcija putem atributa podataka. Na primjer, koristite data-bs-custom-class="beautifier"
umjesto data-bs-customClass="beautifier"
.
Od Bootstrapa 5.2.0, sve komponente podržavaju eksperimentalni atribut rezerviranih podataka data-bs-config
koji može smjestiti jednostavnu konfiguraciju komponente kao JSON string. Kada element ima atribute data-bs-config='{"delay":0, "title":123}'
i data-bs-title="456"
, konačna title
vrijednost će biti 456
, a zasebni atributi podataka će nadjačati vrijednosti date na data-bs-config
. Osim toga, postojeći atributi podataka mogu sadržavati JSON vrijednosti poput data-bs-delay='{"show":0,"hide":150}'
.
Ime | Tip | Default | Opis |
---|---|---|---|
backdrop |
boolean,'static' |
true |
Uključuje element modalne pozadine. Alternativno, navedite static za pozadinu koja ne zatvara modal kada se klikne. |
focus |
boolean | true |
Stavlja fokus na modalni kada se inicijalizira. |
keyboard |
boolean | true |
Zatvara modal kada se pritisne tipka za izlaz. |
Metode
Asinhrone metode i prijelazi
Sve API metode su asinhrone i pokreću tranziciju . Oni se vraćaju pozivaocu čim prijelaz započne, ali prije nego što se završi . Osim toga, poziv metode na prelaznu komponentu će biti zanemaren .
Pogledajte našu JavaScript dokumentaciju za više informacija .
Opcije prolaska
Aktivira vaš sadržaj kao modalni. Prihvata opcione opcije object
.
const myModal = new bootstrap.Modal('#myModal', {
keyboard: false
})
Metoda | Opis |
---|---|
dispose |
Uništava modalni element. (Uklanja pohranjene podatke na DOM elementu) |
getInstance |
Statička metoda koja vam omogućava da dobijete modalnu instancu pridruženu DOM elementu. |
getOrCreateInstance |
Statička metoda koja vam omogućava da dobijete modalnu instancu pridruženu DOM elementu ili kreirate novu u slučaju da nije inicijalizirana. |
handleUpdate |
Ručno ponovo podesite poziciju modala ako se visina modala promijeni dok je otvoren (tj. u slučaju da se pojavi traka za pomicanje). |
hide |
Ručno skriva modal. Vraća se pozivaocu prije nego što je modal zapravo skriven (tj. prije nego što se hidden.bs.modal događaj dogodi). |
show |
Ručno otvara modalni. Vraća se pozivaocu prije nego što je modalni stvarno prikazan (tj. prije nego što se shown.bs.modal događaj dogodi). Također, možete proslijediti DOM element kao argument koji se može primiti u modalnim događajima (kao relatedTarget svojstvo). (tj const modalToggle = document.getElementById('toggleMyModal'); myModal.show(modalToggle) . |
toggle |
Ručno prebacuje modal. Vraća pozivaocu prije nego što je modal zapravo prikazan ili sakriven (tj. prije nego se dogodi događaj shown.bs.modal ili ).hidden.bs.modal |
Događaji
Modalna klasa Bootstrapa izlaže nekoliko događaja za spajanje na modalnu funkcionalnost. Svi modalni događaji se aktiviraju na samom modalnom (tj. na <div class="modal">
).
Događaj | Opis |
---|---|
hide.bs.modal |
Ovaj događaj se pokreće odmah kada se hide pozove metoda instance. |
hidden.bs.modal |
Ovaj događaj se pokreće kada modal završi sa sakrivanjem od korisnika (će čekati da se CSS tranzicije dovrše). |
hidePrevented.bs.modal |
Ovaj događaj se pokreće kada je prikazan modal, njegova pozadina static i kada se izvrši klik izvan modala. Događaj se također pokreće kada se pritisne tipka za izlaz i keyboard opcija je postavljena na false . |
show.bs.modal |
Ovaj događaj se aktivira odmah kada show se pozove metoda instance. Ako je uzrokovan klikom, kliknuti element je dostupan kao relatedTarget svojstvo događaja. |
shown.bs.modal |
Ovaj događaj se pokreće kada se modal učini vidljivim korisniku (će čekati da se CSS tranzicije dovrše). Ako je uzrokovan klikom, kliknuti element je dostupan kao relatedTarget svojstvo događaja. |
const myModalEl = document.getElementById('myModal')
myModalEl.addEventListener('hidden.bs.modal', event => {
// do something...
})