Source

Մոդալ

Օգտագործեք Bootstrap-ի JavaScript մոդալ պլագինը` ձեր կայքում լուսարկղերի, օգտատերերի ծանուցումների կամ ամբողջովին հատուկ բովանդակության համար երկխոսություններ ավելացնելու համար:

Ինչպես է դա աշխատում

Նախքան Bootstrap-ի մոդալ բաղադրիչը սկսելը, համոզվեք, որ կարդացեք հետևյալը, քանի որ մեր մենյուի ընտրանքները վերջերս փոխվել են:

  • Մոդալները կառուցված են HTML, CSS և JavaScript-ով: Դրանք տեղադրվում են փաստաթղթի մնացած ամեն ինչի վրա և հեռացնում են ոլորումը, <body>որպեսզի փոխարենը ոլորվի մոդալ բովանդակությունը:
  • Սեղմելով մոդալ «հետին պլանի» վրա, մոդալն ավտոմատ կերպով կփակի:
  • Bootstrap-ը միաժամանակ աջակցում է միայն մեկ մոդալ պատուհան: Ներդրված մոդալները չեն աջակցվում, քանի որ մենք կարծում ենք, որ դրանք վատ օգտվողների փորձառություններ են:
  • Մոդալները օգտագործում են position: fixed, որը երբեմն կարող է մի փոքր առանձնահատուկ լինել դրա մատուցման վերաբերյալ: Հնարավորության դեպքում ձեր մոդալ HTML-ը տեղադրեք վերին մակարդակի վրա՝ այլ տարրերի հնարավոր միջամտությունից խուսափելու համար: Դուք, ամենայն հավանականությամբ, խնդիրներ կունենաք .modalմեկ այլ ֆիքսված տարրի մեջ տեղադրելու ժամանակ:
  • Կրկին, շնորհիվ position: fixed, կան որոշ նախազգուշացումներ շարժական սարքերում մոդալների օգտագործման հետ կապված: Մանրամասների համար տես մեր դիտարկիչի աջակցության փաստաթղթերը :
  • Քանի որ HTML5-ը սահմանում է իր իմաստաբանությունը, HTML autofocusհատկանիշը որևէ ազդեցություն չունի Bootstrap մոդալներում: Նույն էֆեկտին հասնելու համար օգտագործեք որոշ հատուկ JavaScript.
$('#myModal').on('shown.bs.modal', function () {
  $('#myInput').trigger('focus')
})

Այս բաղադրիչի անիմացիոն էֆեկտը կախված է prefers-reduced-motionլրատվամիջոցների հարցումից: Տեսեք մեր մատչելիության փաստաթղթերի կրճատված շարժման բաժինը :

Շարունակեք կարդալ ցուցադրությունների և օգտագործման ուղեցույցների համար:

Օրինակներ

Ստորև բերված է ստատիկ մոդալ օրինակ (նշանակում է position, displayոր այն վերացվել է): Ներառված են մոդալ վերնագիր, մոդալ տեքստ (պահանջվում է padding) և մոդալ ստորագիր (ըստ ցանկության): Մենք խնդրում ենք, որ հնարավորության դեպքում ներառեք մոդալ վերնագրեր՝ մերժման գործողություններով, կամ տրամադրեք այլ բացահայտ մերժման գործողություն:

<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-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

Կենդանի ցուցադրություն

Միացնել աշխատանքային մոդալ ցուցադրումը` սեղմելով ստորև նշված կոճակը: Այն կսահի ներքև և կխամրի էջի վերևից:

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

Երկար բովանդակության ոլորում

Երբ մոդալները չափազանց երկար են դառնում օգտատիրոջ տեսադաշտի կամ սարքի համար, դրանք պտտվում են էջից անկախ: Փորձեք ստորև ներկայացված ցուցադրությունը՝ տեսնելու, թե ինչ նկատի ունենք:

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

Ուղղահայաց կենտրոնացված

Ավելացրեք .modal-dialog-centeredմոդալը .modal-dialogուղղահայաց կենտրոնացնելու համար:

<!-- 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">&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 և popovers

Անհրաժեշտության դեպքում գործիքների հուշումներն ու փոփովերը կարող են տեղադրվել մոդալների մեջ: Երբ մոդալները փակ են, ցանկացած գործիքի հուշում և ներդիրում ավտոմատ կերպով անջատվում են:

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

Օգտագործելով ցանցը

Օգտագործեք Bootstrap ցանցային համակարգը մոդալի .container-fluidներսում՝ բույն դնելով .modal-body. Այնուհետև օգտագործեք սովորական ցանցային համակարգի դասերը, ինչպես ցանկացած այլ վայրում:

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

Տարբեր մոդալ բովանդակություն

Ունե՞ք մի քանի կոճակներ, որոնք բոլորն էլ գործարկում են նույն մոդալը՝ մի փոքր տարբեր բովանդակությամբ: Օգտագործեք event.relatedTargetև HTML data-*ատրիբուտներ (հնարավոր է jQuery-ի միջոցով )՝ մոդալի բովանդակությունը փոխելու համար՝ կախված նրանից, թե որ կոճակն է սեղմված:

Ստորև ներկայացված է կենդանի ցուցադրություն, որին հաջորդում են HTML և JavaScript օրինակները: Լրացուցիչ տեղեկությունների համար կարդացեք մոդալ իրադարձությունների փաստաթղթերը մանրամասների համար 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)
})

Փոխել անիմացիան

Փոփոխականը $modal-fade-transformորոշում է փոխակերպման վիճակը .modal-dialogմինչև մոդալ fade-in անիմացիան, $modal-show-transformփոփոխականը որոշում է փոխակերպումը .modal-dialogմոդալ fade-in անիմացիայի վերջում:

Եթե ​​ցանկանում եք, օրինակ, մեծացնելու անիմացիա, կարող եք սահմանել $modal-fade-transform: scale(.8):

Հեռացնել անիմացիան

Մոդալների համար, որոնք պարզապես հայտնվում են, այլ ոչ թե խամրում, հեռացրեք .fadeդասը ձեր մոդալ նշումից:

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

Դինամիկ բարձրություններ

Եթե ​​մոդալի բարձրությունը փոխվում է, երբ այն բաց է, դուք պետք է զանգահարեք $('#myModal').modal('handleUpdate')՝ նորից կարգավորելու մոդալի դիրքը, եթե ոլորման տող հայտնվի:

Մատչելիություն

Համոզվեք, որ ավելացրեք role="dialog"և aria-labelledby="...", հղում կատարելով մոդալ վերնագրին, դեպի և .modalինքնին : Բացի այդ, դուք կարող եք տալ ձեր մոդալ երկխոսության նկարագրությունը on-ի հետ :role="document".modal-dialogaria-describedby.modal

YouTube-ի տեսանյութերի ներկառուցում

YouTube-ի տեսանյութերը մոդալներում զետեղելու համար պահանջվում է լրացուցիչ JavaScript, որը չի Bootstrap-ում՝ ավտոմատ կերպով դադարեցնելու նվագարկումը և ավելին: Լրացուցիչ տեղեկությունների համար տես Stack Overflow-ի այս օգտակար գրառումը :

Ընտրովի չափսեր

Մոդալներն ունեն երեք ընտրովի չափեր, որոնք հասանելի են մոդիֆիկատորների դասերի միջոցով՝ տեղադրելու համար .modal-dialog. Այս չափերը հայտնվում են որոշակի ընդմիջման կետերում, որպեսզի խուսափեն ավելի նեղ տեսադաշտերի հորիզոնական ոլորման տողերից:

Չափը Դասարան Մոդալ առավելագույն լայնություն
Փոքր .modal-sm 300px
Կանխադրված Ոչ ոք 500px
Մեծ .modal-lg 800px
Լրացուցիչ մեծ .modal-xl 1140px

Մեր լռելյայն մոդալն առանց փոփոխիչի դասի կազմում է «միջին» չափի մոդալը:

<!-- Extra large modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-xl">Extra large modal</button>

<div class="modal fade bd-example-modal-xl" tabindex="-1" role="dialog" aria-labelledby="myExtraLargeModalLabel" aria-hidden="true">
  <div class="modal-dialog modal-xl">
    <div class="modal-content">
      ...
    </div>
  </div>
</div>

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

Օգտագործումը

Մոդալ հավելվածը փոխում է ձեր թաքնված բովանդակությունը ըստ պահանջի՝ տվյալների ատրիբուտների կամ JavaScript-ի միջոցով: Այն նաև ավելացնում .modal-openէ <body>լռելյայն ոլորման վարքագիծը վերացնելու համար և առաջացնում է .modal-backdropսեղմման տարածք՝ մոդալից դուրս սեղմելիս ցուցադրված մոդալները հեռացնելու համար:

Տվյալների ատրիբուտների միջոցով

Ակտիվացրեք մոդալ առանց JavaScript գրելու: Սահմանել data-toggle="modal"կարգավորիչի տարրը, ինչպես կոճակը, a-ի հետ մեկտեղ data-target="#foo"կամ href="#foo"թիրախավորել որոշակի մոդալ՝ փոխարկելու համար:

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

JavaScript-ի միջոցով

Զանգահարեք մոդալ id- myModalով JavaScript-ի մեկ տողով.

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

Ընտրանքներ

Ընտրանքները կարող են փոխանցվել տվյալների ատրիբուտների կամ JavaScript-ի միջոցով: Տվյալների ատրիբուտների համար ավելացրեք տարբերակի անունը data-, ինչպես data-backdrop="".

Անուն Տիպ Կանխադրված Նկարագրություն
ֆոն բուլյան կամ լարային'static' ճիշտ Ներառում է մոդալ-ֆոնային տարր: Որպես այլընտրանք, նշեք staticֆոն, որը չի փակում մոդալը սեղմելով:
ստեղնաշար բուլյան ճիշտ Փակում է մոդալը, երբ սեղմված է escape ստեղնը
կենտրոնանալ բուլյան ճիշտ Նախաստորագրվելիս կենտրոնանում է մոդալի վրա:
ցուցադրում բուլյան ճիշտ Ցույց է տալիս մոդալը, երբ սկզբնավորվում է:

Մեթոդներ

Ասինխրոն մեթոդներ և անցումներ

Բոլոր API մեթոդները ասինխրոն են և սկսում են անցում : Նրանք վերադառնում են զանգահարողին հենց որ անցումը սկսվի, բայց մինչև այն ավարտվի : Բացի այդ, անցումային բաղադրիչի վրա մեթոդի կանչը անտեսվելու է :

Լրացուցիչ տեղեկությունների համար տես մեր JavaScript փաստաթղթերը :

.modal(options)

Ակտիվացնում է ձեր բովանդակությունը որպես մոդալ: Ընդունում է ընտրովի տարբերակներ object:

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

.modal('toggle')

Ձեռքով փոխում է մոդալը: Վերադառնում է զանգահարողին մինչև մոդալն իրականում ցուցադրվել կամ թաքցվել է (այսինքն՝ նախքան իրադարձությունը shown.bs.modalկամ hidden.bs.modalիրադարձությունը տեղի ունենալը):

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

.modal('show')

Ձեռքով բացում է մոդալ: Վերադառնում է զանգահարողին մինչև մոդալը փաստացի ցուցադրվելը (այսինքն՝ նախքան shown.bs.modalիրադարձությունը տեղի ունենալը):

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

.modal('hide')

Ձեռքով թաքցնում է մոդալը: Վերադառնում է զանգահարողին նախքան մոդալն իրականում թաքցվել է (այսինքն՝ նախքան hidden.bs.modalիրադարձությունը տեղի ունենալը):

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

.modal('handleUpdate')

Ձեռքով կարգավորեք մոդալի դիրքը, եթե մոդալի բարձրությունը փոխվում է բաց լինելու ժամանակ (այսինքն՝ ոլորման տող հայտնվելու դեպքում):

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

.modal('dispose')

Ոչնչացնում է տարրի մոդալը:

Իրադարձություններ

Bootstrap-ի մոդալ դասը բացահայտում է մի քանի իրադարձություն՝ մոդալ ֆունկցիոնալությանը միանալու համար: Բոլոր մոդալ իրադարձությունները կրակվում են հենց մոդալի վրա (այսինքն ՝ <div class="modal">).

Միջոցառման տեսակը Նկարագրություն
շոու.բս.մոդալ Այս իրադարձությունը գործարկվում է անմիջապես, երբ showկանչվում է օրինակի մեթոդը: Եթե ​​կտտոցով է պայմանավորված, սեղմված տարրը հասանելի է որպես relatedTargetիրադարձության հատկություն:
ցուցադրված.բս.մոդալ Այս իրադարձությունը գործարկվում է, երբ մոդալը տեսանելի է դառնում օգտատիրոջը (կսպասի CSS անցումների ավարտին): Եթե ​​կտտոցով է պայմանավորված, սեղմված տարրը հասանելի է որպես relatedTargetիրադարձության հատկություն:
hide.bs.modal Այս իրադարձությունը գործարկվում է անմիջապես, երբ hideկանչվում է օրինակի մեթոդը:
թաքնված.բս.մոդալ Այս իրադարձությունը գործարկվում է, երբ մոդալն ավարտում է օգտագործողից թաքցված լինելը (կսպասի CSS անցումների ավարտին):
$('#myModal').on('hidden.bs.modal', function (e) {
  // do something...
})