moddol
Defnyddiwch ategyn moddol JavaScript Bootstrap i ychwanegu deialogau at eich gwefan ar gyfer blychau golau, hysbysiadau defnyddwyr, neu gynnwys cwbl arferol.
Sut mae'n gweithio
Cyn dechrau ar gydran foddol Bootstrap, gwnewch yn siŵr eich bod chi'n darllen y canlynol gan fod ein hopsiynau bwydlen wedi newid yn ddiweddar.
- Mae modiwlau'n cael eu hadeiladu gyda HTML, CSS, a JavaScript. Maent wedi'u lleoli dros bopeth arall yn y ddogfen ac yn tynnu sgrôl o'r
<body>
fel bod cynnwys moddol yn sgrolio yn lle hynny. - Bydd clicio ar y “cefndir” moddol yn cau'r moddol yn awtomatig.
- Dim ond un ffenestr foddol y mae Bootstrap yn ei chynnal ar y tro. Nid yw moddau nythu yn cael eu cefnogi gan ein bod yn credu eu bod yn brofiadau gwael gan ddefnyddwyr.
- Mae moddau'n defnyddio
position: fixed
, a all weithiau fod ychydig yn benodol am ei rendrad. Lle bynnag y bo modd, rhowch eich HTML moddol mewn safle lefel uchaf er mwyn osgoi ymyrraeth bosibl gan elfennau eraill. Mae'n debyg y byddwch chi'n wynebu problemau wrth nythu o.modal
fewn elfen sefydlog arall. - Unwaith eto, oherwydd
position: fixed
, mae rhai cafeatau gyda defnyddio moddau ar ddyfeisiau symudol. Gweler ein dogfennau cymorth porwr am fanylion. - Oherwydd sut mae HTML5 yn diffinio ei semanteg, nid yw'r
autofocus
priodoledd HTML yn cael unrhyw effaith mewn moddau Bootstrap. I gyflawni'r un effaith, defnyddiwch JavaScript arferol:
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
})
prefers-reduced-motion
ymholiad y cyfryngau. Gweler
adran cynnig gostyngol ein dogfennaeth hygyrchedd .
Daliwch ati i ddarllen am demos a chanllawiau defnydd.
Enghreifftiau
Cydrannau moddol
Isod mae enghraifft moddol statig (sy'n golygu ei position
ac display
wedi cael ei diystyru). Yn gynwysedig mae'r pennawd moddol, y corff moddol (sy'n ofynnol ar gyfer padding
), a'r troedyn moddol (dewisol). Gofynnwn i chi gynnwys penawdau moddol gyda chamau diswyddo pryd bynnag y bo modd, neu ddarparu cam diswyddo penodol arall.
<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="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>
Demo byw
Toggle demo modd gweithio trwy glicio ar y botwm isod. Bydd yn llithro i lawr ac yn pylu i mewn o frig y dudalen.
<!-- 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" 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="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>
Cefndir statig
Pan fydd y cefndir wedi'i osod yn sefydlog, ni fydd y moddol yn cau wrth glicio y tu allan iddo. Cliciwch ar y botwm isod i roi cynnig arni.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#staticBackdrop">
Launch static backdrop modal
</button>
<!-- Modal -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-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="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">Understood</button>
</div>
</div>
</div>
</div>
Sgrolio cynnwys hir
Pan fydd moddau'n mynd yn rhy hir ar gyfer golygfa neu ddyfais y defnyddiwr, maen nhw'n sgrolio'n annibynnol ar y dudalen ei hun. Rhowch gynnig ar y demo isod i weld beth rydym yn ei olygu.
Gallwch hefyd greu modd y gellir ei sgrolio sy'n caniatáu sgrolio'r corff moddol trwy ychwanegu .modal-dialog-scrollable
at .modal-dialog
.
<!-- Scrollable modal -->
<div class="modal-dialog modal-dialog-scrollable">
...
</div>
Wedi'i ganoli'n fertigol
Ychwanegu .modal-dialog-centered
at .modal-dialog
ganol fertigol y moddol.
<!-- 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>
Awgrymiadau offer a popovers
Gellir gosod awgrymiadau offer a popovers o fewn moddau yn ôl yr angen . Pan fydd moddau ar gau, mae unrhyw awgrymiadau offer a popovers ynddynt hefyd yn cael eu diystyru'n awtomatig.
<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>
Gan ddefnyddio'r grid
Defnyddiwch system grid Bootstrap o fewn moddol trwy nythu .container-fluid
o fewn y .modal-body
. Yna, defnyddiwch y dosbarthiadau system grid arferol fel y byddech yn unrhyw le arall.
<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>
Cynnwys moddol amrywiol
Oes gennych chi griw o fotymau sydd i gyd yn sbarduno'r un modd gyda chynnwys ychydig yn wahanol? Defnyddio event.relatedTarget
a phriodoleddau HTMLdata-*
( trwy jQuery o bosibl ) i amrywio cynnwys y moddol yn dibynnu ar ba fotwm y cliciwyd arno.
Isod mae demo byw ac yna HTML a JavaScript enghreifftiol. I gael rhagor o wybodaeth, darllenwch y dogfennau digwyddiadau moddol am fanylion ar 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" 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="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)
})
Newid animeiddiad
Mae'r $modal-fade-transform
newidyn yn pennu cyflwr trawsnewid .modal-dialog
cyn yr animeiddiad pylu moddol, mae'r $modal-show-transform
newidyn yn pennu'r trawsnewidiad .modal-dialog
ar ddiwedd yr animeiddiad pylu moddol.
Os ydych chi eisiau animeiddiad chwyddo i mewn er enghraifft, gallwch chi osod $modal-fade-transform: scale(.8)
.
Dileu animeiddiad
Ar gyfer modiwlau sy'n ymddangos yn syml yn hytrach na diflannu i'r golwg, tynnwch y .fade
dosbarth o'ch marc moddol.
<div class="modal" tabindex="-1" aria-labelledby="..." aria-hidden="true">
...
</div>
Uchder deinamig
Os yw uchder modd newid tra ei fod ar agor, dylech ffonio $('#myModal').modal('handleUpdate')
i ail-addasu safle'r modd rhag ofn y bydd bar sgrolio yn ymddangos.
Hygyrchedd
Gwnewch yn siŵr eich bod yn ychwanegu aria-labelledby="..."
, gan gyfeirio at y teitl moddol, at .modal
. Yn ogystal, gallwch roi disgrifiad o'ch deialog moddol gydag aria-describedby
on .modal
. Sylwch nad oes angen i chi ychwanegu role="dialog"
gan ein bod eisoes yn ei ychwanegu trwy JavaScript.
Mewnosod fideos YouTube
Mae gwreiddio fideos YouTube mewn moddau yn gofyn am JavaScript ychwanegol nid yn Bootstrap i atal chwarae a mwy yn awtomatig. Gweler y post defnyddiol Stack Overflow hwn am ragor o wybodaeth.
Meintiau dewisol
Mae gan foddau dri maint dewisol, sydd ar gael trwy ddosbarthiadau addasu i'w gosod ar .modal-dialog
. Mae'r meintiau hyn yn cychwyn ar rai torbwyntiau er mwyn osgoi bariau sgrolio llorweddol ar olygfannau culach.
Maint | Dosbarth | Lled mwyaf moddol |
---|---|---|
Bach | .modal-sm |
300px |
Diofyn | Dim | 500px |
Mawr | .modal-lg |
800px |
Mawr ychwanegol | .modal-xl |
1140px |
Mae ein dosbarth moddol heb addasydd rhagosodedig yn gyfystyr â'r modd maint "canolig".
<div class="modal-dialog modal-xl">...</div>
<div class="modal-dialog modal-lg">...</div>
<div class="modal-dialog modal-sm">...</div>
Defnydd
Mae'r ategyn moddol yn toglo'ch cynnwys cudd yn ôl y galw, trwy briodoleddau data neu JavaScript. Mae hefyd yn ychwanegu .modal-open
at yr <body>
ymddygiad sgrolio rhagosodedig i ddiystyru ac yn cynhyrchu a .modal-backdrop
i ddarparu ardal glicio ar gyfer diystyru moddau a ddangosir wrth glicio y tu allan i'r moddol.
Trwy briodoleddau data
Ysgogi moddol heb ysgrifennu JavaScript. Gosod data-toggle="modal"
ar elfen rheolydd, fel botwm, ynghyd â data-target="#foo"
neu href="#foo"
i dargedu moddol penodol i toglo.
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
Trwy JavaScript
Ffoniwch foddol gydag id myModal
gydag un llinell o JavaScript:
$('#myModal').modal(options)
Opsiynau
Gellir trosglwyddo opsiynau trwy briodoleddau data neu JavaScript. Ar gyfer priodoleddau data, atodwch enw'r opsiwn i data-
, fel yn data-backdrop=""
.
Enw | Math | Diofyn | Disgrifiad |
---|---|---|---|
cefndir | boolean neu'r llinyn'static' |
gwir | Yn cynnwys elfen foddol-cefndir. Fel arall, nodwch static ar gyfer cefndir nad yw'n cau'r modd wrth glicio. |
bysellfwrdd | boolaidd | gwir | Yn cau'r modd pan fydd allwedd dianc yn cael ei wasgu |
ffocws | boolaidd | gwir | Yn rhoi'r ffocws ar y modd pan gaiff ei gychwyn. |
dangos | boolaidd | gwir | Yn dangos y moddol wrth gychwyn. |
Dulliau
Dulliau a thrawsnewidiadau anghydamserol
Mae pob dull API yn asyncronaidd ac yn dechrau cyfnod pontio . Maen nhw'n dychwelyd at y galwr cyn gynted ag y bydd y cyfnod pontio wedi dechrau ond cyn iddo ddod i ben . Yn ogystal, bydd galwad dull ar gydran trawsnewid yn cael ei anwybyddu .
.modal(options)
Yn actifadu'ch cynnwys fel moddol. Yn derbyn opsiwn dewisol object
.
$('#myModal').modal({
keyboard: false
})
.modal('toggle')
Toglo moddol â llaw. Yn dychwelyd i'r galwr cyn i'r moddol gael ei ddangos neu ei guddioshown.bs.modal
( hy cyn i'r hidden.bs.modal
digwyddiad ddigwydd).
$('#myModal').modal('toggle')
.modal('show')
Yn agor moddol â llaw. Yn dychwelyd i'r galwr cyn i'r moddol gael ei ddangos (hy cyn i'r shown.bs.modal
digwyddiad ddigwydd).
$('#myModal').modal('show')
.modal('hide')
Yn cuddio moddol â llaw. Yn dychwelyd i'r galwr cyn i'r moddol gael ei guddio (hy cyn i'r hidden.bs.modal
digwyddiad ddigwydd).
$('#myModal').modal('hide')
.modal('handleUpdate')
Ail-addaswch safle'r moddol â llaw os yw uchder y modd yn newid tra ei fod ar agor (hy rhag ofn y bydd bar sgrolio yn ymddangos).
$('#myModal').modal('handleUpdate')
.modal('dispose')
Yn dinistrio moddol elfen.
Digwyddiadau
Mae dosbarth moddol Bootstrap yn datgelu rhai digwyddiadau ar gyfer cysylltu â swyddogaethau moddol. Mae pob digwyddiad moddol yn cael ei danio at y moddol ei hun (hy yn y <div class="modal">
).
Math o Ddigwyddiad | Disgrifiad |
---|---|
moddol.bs | Mae'r digwyddiad hwn yn tanio ar unwaith pan show elwir y dull enghraifft. Os caiff ei achosi gan glic, mae'r elfen a gliciwyd ar gael fel relatedTarget eiddo'r digwyddiad. |
dangos.bs.modal | Mae'r digwyddiad hwn yn cael ei danio pan fydd y moddol wedi'i wneud yn weladwy i'r defnyddiwr (bydd yn aros i'r trawsnewidiadau CSS gael eu cwblhau). Os caiff ei achosi gan glic, mae'r elfen a gliciwyd ar gael fel relatedTarget eiddo'r digwyddiad. |
cuddio.bs.modal | Mae'r digwyddiad hwn yn cael ei danio ar unwaith pan fydd y hide dull enghraifft wedi'i alw. |
cudd.bs.modal | Mae'r digwyddiad hwn yn cael ei danio pan fydd y moddol wedi gorffen cael ei guddio rhag y defnyddiwr (bydd yn aros i'r trawsnewidiadau CSS gael eu cwblhau). |
hidePrevented.bs.modal | Mae'r digwyddiad hwn yn cael ei danio pan fydd y moddol yn cael ei ddangos, ei gefndir yw static a chlicio y tu allan i'r moddol neu wasg allwedd dianc yn cael ei berfformio gyda'r opsiwn bysellfwrdd neu data-keyboard wedi'i osod i false . |
$('#myModal').on('hidden.bs.modal', function (event) {
// do something...
})