Source

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 .modalfewn 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 autofocuspriodoledd 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.

Enghreifftiau

Isod mae enghraifft moddol statig (sy'n golygu ei positionac displaywedi 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">&times;</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-primary">Save changes</button>
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</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" 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">&times;</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>

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.

<!-- 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">&times;</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>

Wedi'i ganoli'n fertigol

Ychwanegu .modal-dialog-centeredat .modal-dialogganol 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="exampleModalLongTitle">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</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>

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-fluido 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.relatedTargeta 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">&times;</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)
})

Dileu animeiddiad

Ar gyfer modiwlau sy'n ymddangos yn syml yn hytrach na diflannu i'r golwg, tynnwch y .fadedosbarth o'ch marc moddol.

<div class="modal" tabindex="-1" role="dialog" 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

Byddwch yn siwr i ychwanegu role="dialog"a aria-labelledby="...", gan gyfeirio at y teitl moddol, i .modal, ac role="document"i'r .modal-dialogei hun. Yn ogystal, gallwch roi disgrifiad o'ch deialog moddol gydag aria-describedbyon .modal.

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 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>

Defnydd

Mae'r ategyn moddol yn toglo'ch cynnwys cudd yn ôl y galw, trwy briodoleddau data neu JavaScript. Mae hefyd yn ychwanegu .modal-openat yr <body>ymddygiad sgrolio rhagosodedig i ddiystyru ac yn cynhyrchu a .modal-backdropi 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 myModalgydag 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 staticar 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 .

Gweler ein dogfennaeth JavaScript am ragor o wybodaeth.

.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.modaldigwyddiad 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.modaldigwyddiad 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.modaldigwyddiad 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 showelwir y dull enghraifft. Os caiff ei achosi gan glic, mae'r elfen a gliciwyd ar gael fel relatedTargeteiddo'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 relatedTargeteiddo'r digwyddiad.
cuddio.bs.modal Mae'r digwyddiad hwn yn cael ei danio ar unwaith pan fydd y hidedull 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...
})