Source

Modal

Benotzt Bootstrap's JavaScript modal Plugin fir Dialogen op Är Site fir Lightboxen, Benotzer Notifikatiounen oder komplett personaliséiert Inhalter ze addéieren.

Wéi et funktionnéiert

Ier Dir mam Bootstrap's modale Komponent ufänkt, gitt sécher déi folgend ze liesen well eis Menüoptioune viru kuerzem geännert hunn.

  • Modale si mat HTML, CSS a JavaScript gebaut. Si sinn iwwer alles anescht am Dokument positionéiert an ewechzehuelen Scroll aus dem <body>sou datt modal Inhalt scrollt amplaz.
  • Klickt op de Modal "Kulisse" mécht de Modal automatesch zou.
  • Bootstrap ënnerstëtzt nëmmen eng modal Fënster gläichzäiteg. Nested Modals ginn net ënnerstëtzt well mir gleewen datt se schlecht Benotzererfarungen sinn.
  • Modals benotzen position: fixed, wat heiansdo e bësse speziell iwwer seng Rendering ka sinn. Wann ëmmer méiglech, setzt Är modal HTML an enger Top-Level Positioun fir potenziell Interferenz vun aneren Elementer ze vermeiden. Dir wäert méiglecherweis an Probleemer lafen wann Dir en .modalan engem anere fixen Element nest.
  • Nach eng Kéier, wéinst position: fixed, ginn et e puer Virschléi mat der Benotzung vu Modalen op mobilen Apparater. Gesinn eis Browser Support Dokumenter fir Detailer.
  • Wéinst wéi HTML5 seng Semantik definéiert, huet den autofocusHTML Attribut keen Effekt a Bootstrap Modal. Fir deeselwechten Effekt z'erreechen, benotzt e puer personaliséiert JavaScript:
$('#myModal').on('shown.bs.modal', function () {
  $('#myInput').trigger('focus')
})

Liest weider fir Demos a Benotzungsrichtlinnen.

Beispiller

Drënner ass e statesch modal Beispill (dat heescht seng positiona displaygoufen iwwerschriwwen). Abegraff sinn de modale Header, modale Kierper (obligatoresch fir padding), a modal Fousszeilen (optional). Mir froen datt Dir modal Header mat Entloossaktiounen enthält wa méiglech, oder eng aner explizit Entloossaktioun ubitt.

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

Live Demo

Toggle eng funktionéierend modal Demo andeems Dir op de Knäppchen hei drënner klickt. Et rutscht erof a verschwannen vun uewen op der Säit.

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

Scrolling laang Inhalt

Wann d'Modalen ze laang ginn fir de Viewport oder den Apparat vum Benotzer, scrollen se onofhängeg vun der Säit selwer. Probéiert d'Demo hei ënnen fir ze kucken wat mir mengen.

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

Vertikal zentréiert

Füügt .modal-dialog-centeredfir .modal-dialogde Modal vertikal ze zentréieren.

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

Tooltips an Popovers

Tooltips a Popovers kënne bannent Modale plazéiert ginn wéi néideg. Wann Modale zougemaach sinn, ginn all Tooltipps a Popovers bannent och automatesch entlooss.

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

Benotzt de Gitter

Benotzt de Bootstrap Gitter System bannent engem Modal andeems Dir .container-fluidan der .modal-body. Dann benotzt déi normal Gittersystemklassen wéi Dir soss anzwousch géift.

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

Variéierend modalen Inhalt

Hutt Dir eng Rëtsch Knäppercher déi all déiselwecht Modal mat liicht verschiddenen Inhalter ausléisen? Benotzt event.relatedTargetan HTML data-*Attributer (méiglecherweis iwwer jQuery ) fir den Inhalt vun der Modal ze variéieren jee no wéi ee Knäppchen geklickt gouf.

Drënner ass eng Live Demo gefollegt vum Beispill HTML a JavaScript. Fir méi Informatioun, liest d'Modal Eventer Dokumenter fir Detailer iwwer 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)
})

Ewechzehuelen Animatioun

Fir Modaler déi einfach erschéngen anstatt ze verschwannen fir ze kucken, läscht d' .fadeKlass aus Ärem Modal Markup.

<div class="modal" tabindex="-1" role="dialog" aria-labelledby="..." aria-hidden="true">
  ...
</div>

Dynamesch Héichten

Wann d'Héicht vun engem Modal ännert wärend et op ass, sollt Dir uruffen $('#myModal').modal('handleUpdate')fir d'Positioun vum Modal z'änneren am Fall wou eng Scrollbar erscheint.

Accessibilitéit

Gitt sécher ze addéieren role="dialog"an aria-labelledby="...", Referenz op de modalen Titel, op .modal, an role="document"op de .modal-dialogselwer. Zousätzlech kënnt Dir eng Beschreiwung vun Ärem modalen Dialog mat aria-describedbyop ginn .modal.

Embetting YouTube Videoen

Embedding vu YouTube Videoen a Modalen erfuerdert zousätzlech JavaScript net am Bootstrap fir automatesch d'Playback ze stoppen a méi. Gesinn dës hëllefräich Stack Overflow Post fir méi Informatiounen.

Optional Gréissten

Modaler hunn zwou fakultativ Gréissten, verfügbar iwwer Modifikatiounsklassen fir op engem plazéiert ze ginn .modal-dialog. Dës Gréisste kicken op bestëmmte Breakpunkte fir horizontale Scrollbars op méi schmuele Viewports ze vermeiden.

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

Benotzung

De modale Plugin wiesselt Äre verstoppte Inhalt op Ufro, iwwer Datenattributer oder JavaScript. Et füügt .modal-openoch un <body>d'Standard Scrollverhalen z'iwwerschreiden a generéiert e .modal-backdropfir e Klickgebitt ze bidden fir ugewisen Modaler ze entloossen wann Dir ausserhalb vum Modal klickt.

Via daten Attributer

Aktivéiert e Modal ouni JavaScript ze schreiwen. Setzt data-toggle="modal"op e Controllerelement, wéi e Knäppchen, zesumme mat engem data-target="#foo"oder href="#foo"fir e spezifesche Modal ze zielen fir ze wiesselen.

<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

Iwwer JavaScript

Rufft e Modal mat ID myModalmat enger eenzeger Zeil vu JavaScript:

$('#myModal').modal(options)

Optiounen

Optiounen kënnen iwwer Datenattributer oder JavaScript weidergeleet ginn. Fir Datenattributer, fügen d'Optiounsnumm un data-, wéi an data-backdrop="".

Numm Typ Default Beschreiwung
Kuliss boolesch oder de String'static' wouer Ëmfaasst e modal Kuliss Element. Alternativ, spezifizéiert staticfir eng Kuliss déi de Modal net op Klick zoumaacht.
Tastatur boolesch wouer Maacht de Modal zou wann de Fluchtschlëssel gedréckt gëtt
konzentréieren boolesch wouer Stellt de Fokus op de Modal wann se initialiséiert ginn.
weisen boolesch wouer Weist de Modal wann initialiséiert.

Methoden

Asynchron Methoden an Iwwergäng

All API Methoden sinn asynchron a starten en Iwwergang . Si ginn zréck op den Uruffer soubal den Iwwergang ugefaang ass, awer ier en eriwwer ass . Zousätzlech gëtt e Methodruff op eng Iwwergangskomponent ignoréiert .

Kuckt eis JavaScript Dokumentatioun fir méi Informatioun.

.modal(options)

Aktivéiert Ären Inhalt als Modal. Akzeptéiert eng fakultativ Optiounen object.

$('#myModal').modal({
  keyboard: false
})

.modal('toggle')

Manuell wiesselt e Modal. Gëtt zréck op den Uruffer ier de Modal tatsächlech gewisen oder verstoppt goufshown.bs.modal ( dh ier den hidden.bs.modalEvent geschitt ass).

$('#myModal').modal('toggle')

.modal('show')

Manuell mécht e Modal op. Gitt zréck op den Uruffer ier de Modal tatsächlech gewisen gouf (dh ier d' shown.bs.modalEvenement geschitt ass).

$('#myModal').modal('show')

.modal('hide')

Manuell verstoppt e Modal. Gitt zréck op den Uruffer ier de Modal tatsächlech verstoppt ass (dh ier d' hidden.bs.modalEvenement geschitt ass).

$('#myModal').modal('hide')

.modal('handleUpdate')

Manuell d'Positioun vum Modal nei ajustéieren wann d'Héicht vun engem Modal ännert wärend et op ass (dh am Fall wou eng Scrollbar erscheint).

$('#myModal').modal('handleUpdate')

.modal('dispose')

Zerstéiert d'Modal vun engem Element.

Evenementer

Dem Bootstrap seng modal Klass weist e puer Eventer fir an d'modal Funktionalitéit unzehaken. All Modal Eventer ginn op de Modal selwer geschoss (dh op der <div class="modal">).

Event Typ Beschreiwung
show.bs.modal Dëst Event brennt direkt wann d' showInstanzmethod genannt gëtt. Wann duerch e Klick verursaacht gëtt, ass dat geklickt Element als relatedTargetEegeschafte vum Event verfügbar.
ugewisen.bs.modal Dëst Evenement gëtt ausgeléist wann de Modal fir de Benotzer siichtbar gemaach gouf (waart op CSS Iwwergäng fir fäerdeg ze maachen). Wann duerch e Klick verursaacht gëtt, ass dat geklickt Element als relatedTargetEegeschafte vum Event verfügbar.
hide.bs.modal Dëst Evenement gëtt direkt gebrannt wann d' hideInstanzmethod genannt gouf.
hidden.bs.modal Dëst Evenement gëtt ausgeléist wann de Modal fäerdeg ass vum Benotzer verstoppt ze ginn (waart op CSS Iwwergäng fir fäerdeg ze sinn).
$('#myModal').on('hidden.bs.modal', function (e) {
  // do something...
})