moddol
Defnyddiwch ategyn moddol JavaScript Bootstrap i ychwanegu deialogau at eich gwefan ar gyfer blychau golau, hysbysiadau defnyddwyr, neu gynnwys cwbl arferol.
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')
})
Daliwch ati i ddarllen am demos a chanllawiau defnydd.
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" 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>
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" 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>
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.
<!-- 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>
Ychwanegu .modal-dialog-centered
at .modal-dialog
ganol fertigol y moddol.
<!-- 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>
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>
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>
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" 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)
})
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" role="dialog" aria-labelledby="..." aria-hidden="true">
...
</div>
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.
Byddwch yn siwr i ychwanegu role="dialog"
a aria-labelledby="..."
, gan gyfeirio at y teitl moddol, i .modal
, ac role="document"
i'r .modal-dialog
ei hun. Yn ogystal, gallwch roi disgrifiad o'ch deialog moddol gydag aria-describedby
on .modal
.
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.
Mae gan foddau ddau faint 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.
<!-- 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>
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.
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>
Ffoniwch foddol gydag id myModal
gydag un llinell o JavaScript:
$('#myModal').modal(options)
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 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 .
Yn actifadu'ch cynnwys fel moddol. Yn derbyn opsiwn dewisol object
.
$('#myModal').modal({
keyboard: false
})
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')
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')
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')
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')
Yn dinistrio moddol elfen.
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). |
$('#myModal').on('hidden.bs.modal', function (e) {
// do something...
})