Uzu la JavaScript modalan kromprogramon de Bootstrap por aldoni dialogojn al via retejo por lumkestoj, sciigoj de uzantoj aŭ tute laŭmenda enhavo.
Kiel ĝi funkcias
Antaŭ ol komenci kun la modala komponanto de Bootstrap, nepre legu la jenajn, ĉar niaj menuaj opcioj lastatempe ŝanĝiĝis.
Modaloj estas konstruitaj per HTML, CSS kaj JavaScript. Ili estas poziciigitaj super ĉio alia en la dokumento kaj forigas rulilon de la <body>por ke modala enhavo rulu anstataŭe.
Klako sur la modala "fono" aŭtomate fermos la modalon.
Bootstrap nur subtenas unu modalan fenestron samtempe. Nestitaj modaloj ne estas subtenataj ĉar ni kredas, ke ili estas malbonaj uzantspertoj.
Modaloj uzas position: fixed, kiu foje povas esti iom aparta pri ĝia bildigo. Kiam ajn eblas, metu vian modalan HTML-on en plej altan pozicion por eviti eblan interferon de aliaj elementoj. Vi verŝajne renkontos problemojn kiam vi nestumas .modalene de alia fiksita elemento.
Pro kiel HTML5 difinas sian semantikon, la autofocusHTML-atributo ne efikas en Bootstrap-modaloj. Por atingi la saman efikon, uzu iun kutiman JavaScript:
Daŭre legu por pruvoj kaj uzgvidlinioj.
Ekzemploj
Modalaj komponantoj
Malsupre estas senmova modala ekzemplo (signifante ĝiaj positionkaj displayestis anstataŭitaj). Inkluditaj estas la modala kaplinio, modala korpo (bezonata por padding), kaj modala piedlinio (laŭvola). Ni petas, ke vi enmetu modalaj kaplinioj kun malakceptaj agoj kiam ajn eblas, aŭ provizi alian eksplicitan forĵetan agon.
Modala titolo
Modala korpteksto iras ĉi tie.
Viva demonstraĵo
Ŝaltu funkciantan modalan demonstraĵon alklakante la suban butonon. Ĝi glitos malsupren kaj velkos de la supro de la paĝo.
Modal title
Woohoo, you're reading this text in a modal!
Movu longan enhavon
Kiam modaloj fariĝas tro longaj por la vidpunkto aŭ aparato de la uzanto, ili ruliĝas sendepende de la paĝo mem. Provu la demon sube por vidi kion ni volas diri.
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.
Vertikale centrita
Aldonu .modal-dialog-centeredal .modal-dialogpor vertikale centri la modalon.
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.
Konsiletoj kaj popovers
Konsiletoj kaj popovers povas esti metitaj ene de modaloj laŭbezone. Kiam modaloj estas fermitaj, ĉiuj konsiletoj kaj popovers ene ankaŭ estas aŭtomate forĵetitaj.
Uzu la Bootstrap kradsistemon ene de modalo per nestado .container-fluidene de la .modal-body. Poste, uzu la normalajn kradsistemajn klasojn kiel vi farus aliloke.
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
Varianta modala enhavo
Ĉu vi havas amason da butonoj, kiuj ĉiuj ekigas la saman modalon kun iomete malsama enhavo? Uzu event.relatedTargetkaj HTML- data-*atributojn (eble per jQuery ) por variigi la enhavon de la modalo depende de kiu butono estis klakita.
Malsupre estas reala demo sekvata de ekzemplo HTML kaj JavaScript. Por pliaj informoj, legu la dokumentojn pri modalaj eventoj por detaloj pri relatedTarget.
New message
<buttontype="button"class="btn btn-primary"data-toggle="modal"data-target="#exampleModal"data-whatever="@mdo">Open modal for @mdo</button><buttontype="button"class="btn btn-primary"data-toggle="modal"data-target="#exampleModal"data-whatever="@fat">Open modal for @fat</button><buttontype="button"class="btn btn-primary"data-toggle="modal"data-target="#exampleModal"data-whatever="@getbootstrap">Open modal for @getbootstrap</button><divclass="modal fade"id="exampleModal"tabindex="-1"role="dialog"aria-labelledby="exampleModalLabel"aria-hidden="true"><divclass="modal-dialog"role="document"><divclass="modal-content"><divclass="modal-header"><h5class="modal-title"id="exampleModalLabel">New message</h5><buttontype="button"class="close"data-dismiss="modal"aria-label="Close"><spanaria-hidden="true">×</span></button></div><divclass="modal-body"><form><divclass="form-group"><labelfor="recipient-name"class="col-form-label">Recipient:</label><inputtype="text"class="form-control"id="recipient-name"></div><divclass="form-group"><labelfor="message-text"class="col-form-label">Message:</label><textareaclass="form-control"id="message-text"></textarea></div></form></div><divclass="modal-footer"><buttontype="button"class="btn btn-secondary"data-dismiss="modal">Close</button><buttontype="button"class="btn btn-primary">Send message</button></div></div></div></div>
Forigi animacion
Por modaloj kiuj simple aperas prefere ol fadi por vidi, forigu la .fadeklason de via modala markado.
Dinamikaj altecoj
Se la alteco de modalo ŝanĝiĝas dum ĝi estas malfermita, vi devus voki $('#myModal').modal('handleUpdate')por reĝustigi la pozicion de la modalo, se aperos rulumbreto.
Alirebleco
Nepre aldonu role="dialog"kaj aria-labelledby="...", referencante la modalan titolon, al .modal, kaj role="document"al la .modal-dialogmem. Aldone, vi povas doni priskribon de via modala dialogo per aria-describedbysur .modal.
Enkonstruado de YouTube-videoj
Enmeti YouTube-filmetojn en modaloj postulas plian JavaScript ne en Bootstrap por aŭtomate ĉesigi la reproduktadon kaj pli. Vidu ĉi tiun helpeman afiŝon de Stack Overflow por pliaj informoj.
Laŭvolaj grandecoj
Modaloj havas du laŭvolajn grandecojn, haveblajn per modifiklasoj por esti metitaj sur .modal-dialog. Ĉi tiuj grandecoj ekfunkcias ĉe certaj rompopunktoj por eviti horizontalajn rulstangojn sur pli mallarĝaj vidfenestroj.
Large modal
...
Small modal
...
Uzado
La modala kromaĵo ŝanĝas vian kaŝitan enhavon laŭpeto, per datumaj atributoj aŭ JavaScript. Ĝi ankaŭ aldonas .modal-openal la <body>por superregi defaŭltan movuman konduton kaj generas .modal-backdroppor disponigi klakan areon por forĵeti montritajn modalojn kiam klakado ekster la modalo.
Per datumaj atributoj
Aktivigu modalon sen skribi JavaScript. Agordu data-toggle="modal"sur regila elemento, kiel butono, kune kun data-target="#foo"aŭ href="#foo"por celi specifan modalon por ŝanĝi.
Per JavaScript
Voku modalon kun id myModalkun ununura linio de JavaScript:
Opcioj
Opcioj povas esti pasitaj per datumaj atributoj aŭ JavaScript. Por datumaj atributoj, aldonu la opcionomon al data-, kiel en data-backdrop="".
Nomo
Tajpu
Defaŭlte
Priskribo
fono
bulea aŭ la ĉeno'static'
vera
Inkluzivas modalan fonan elementon. Alternative, specifu staticpor fono, kiu ne fermas la modalon alklakante.
klavaro
bulea
vera
Fermas la modalon kiam eskapa klavo estas premata
fokuso
bulea
vera
Metas la fokuson sur la modalon kiam pravaligita.
montri
bulea
vera
Montras la modalon kiam pravalorigita.
Metodoj
Nesinkronaj metodoj kaj transiroj
Ĉiuj API-metodoj estas nesinkronaj kaj komencas transiron . Ili revenas al la alvokanto tuj kiam la transiro estas komencita sed antaŭ ol ĝi finiĝas . Krome, metodovoko sur transira komponento estos ignorita .
Aktivigas vian enhavon kiel modalon. Akceptas laŭvolajn opciojn object.
.modal('toggle')
Mane ŝanĝas modalon. Revenas al la alvokanto antaŭ ol la modalo estas efektive montrita aŭ kaŝita (t.e. antaŭ ol la shown.bs.modalevento hidden.bs.modalokazas).
.modal('show')
Mane malfermas modalon. Revenas al la alvokanto antaŭ ol la modalo estas efektive montrita (te antaŭ ol la shown.bs.modalevento okazas).
.modal('hide')
Mane kaŝas modalon. Revenas al la alvokanto antaŭ ol la modalo estas fakte kaŝita (te antaŭ ol la hidden.bs.modalevento okazas).
.modal('handleUpdate')
Mane reĝustigu la pozicion de la modalo se la alteco de modalo ŝanĝiĝas dum ĝi estas malfermita (te en la okazo ke aperos rulumbreto).
.modal('dispose')
Detruas la modalon de elemento.
Eventoj
La modala klaso de Bootstrap elmontras kelkajn eventojn por hoki al modala funkcieco. Ĉiuj modalaj eventoj estas pafitaj ĉe la modalo mem (te ĉe la <div class="modal">).
Eventa Tipo
Priskribo
show.bs.modal
Ĉi tiu evento tuj ekfunkciigas kiam la showekzempla metodo estas vokita. Se kaŭzite de klako, la klakita elemento disponeblas kiel la relatedTargetposedaĵo de la evento.
montrata.bs.modala
Ĉi tiu evento estas lanĉita kiam la modalo fariĝis videbla al la uzanto (atendos ke CSS-transiroj finiĝos). Se kaŭzite de klako, la klakita elemento disponeblas kiel la relatedTargetposedaĵo de la evento.
kaŝi.bs.modal
Ĉi tiu evento estas lanĉita tuj kiam la hideekzempla metodo estas vokita.
kaŝita.bs.modala
Ĉi tiu evento estas lanĉita kiam la modalo finiĝis kaŝita de la uzanto (atendos ke CSS-transiroj finiĝos).