Поповерс
Документација и примери за додавање искачућих приказа за Боотстрап, попут оних у иОС-у, на било који елемент на вашој веб локацији.
Преглед
Ствари које треба знати када користите додатак за попове:
- Поповерс се ослањају на Поппер библиотеку треће стране за позиционирање. Морате укључити поппер.мин.јс пре боотстрап.јс или користити
bootstrap.bundle.min.js
/bootstrap.bundle.js
који садржи Поппер да би искачући елементи радили! - Поповерс захтевају додатак са описом алата као зависност.
- Искачући бројеви су укључени из разлога перформанси, тако да их морате сами иницијализирати .
- Нулта дужина
title
иcontent
вредности никада неће приказати искакање. - Наведите
container: 'body'
да бисте избегли проблеме са приказивањем у сложенијим компонентама (као што су наше групе за унос, групе дугмади, итд.). - Покретање искачућих приказа на скривеним елементима неће радити.
- Искачући прозори за
.disabled
илиdisabled
елементе морају бити покренути на елементу омотача. - Када се активирају из сидра која се премотају преко више линија, искачући прикази ће бити центрирани између укупне ширине сидра. Користите
.text-nowrap
на свом<a>
с да бисте избегли ово понашање. - Поповерс морају бити сакривени пре него што се њихови одговарајући елементи уклоне из ДОМ-а.
- Поповерс се могу покренути захваљујући елементу унутар ДОМ-а у сенци.
prefers-reduced-motion
медијског упита. Погледајте одељак о
смањеном покрету наше документације о приступачности .
Наставите да читате да бисте видели како искачући подаци раде са неким примерима.
Пример: Омогућите искачуће приказе свуда
Један од начина да се иницијализују сви искачући прозори на страници био би да их изаберете према њиховом data-bs-toggle
атрибуту:
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl)
})
Пример: Коришћење container
опције
Када имате неке стилове на родитељском елементу који ометају искачући приказ, желећете да наведете прилагођени container
тако да се ХТМЛ искачућег елемента уместо тога појављује унутар тог елемента.
var popover = new bootstrap.Popover(document.querySelector('.example-popover'), {
container: 'body'
})
Пример
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Четири правца
Доступне су четири опције: горе, десно, доле и поравнато лево. Упутства се пресликавају када користите Боотстрап у РТЛ-у.
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="Top popover">
Popover on top
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="Right popover">
Popover on right
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover">
Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="Left popover">
Popover on left
</button>
Одбаците следећи клик
Користите focus
окидач да бисте одбацили искачуће прозоре приликом следећег клика корисника на елемент који се разликује од елемента за пребацивање.
Посебне ознаке потребне за одбацивање при следећем клику
За правилно понашање међу претраживачима и платформама, морате користити <a>
ознаку, а не ознаку <button>
, а такође морате укључити tabindex
атрибут.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
var popover = new bootstrap.Popover(document.querySelector('.popover-dismiss'), {
trigger: 'focus'
})
Онемогућени елементи
Елементи са disabled
атрибутом нису интерактивни, што значи да корисници не могу да пређу курсором или кликну на њих да би покренули искачући приказ (или опис алатке). Као заобилазно решење, желећете да покренете искачући прозор из омотача <div>
или <span>
, идеално направљеног за фокусирање на тастатури помоћу tabindex="0"
.
За онемогућене окидаче искачућег приказа, можда ћете више волети data-bs-trigger="hover focus"
да се искачући прозор прикаже као непосредна визуелна повратна информација вашим корисницима јер можда не очекују да ће кликнути на онемогућени елемент.
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="Disabled popover">
<button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>
Сасс
Променљиве
$popover-font-size: $font-size-sm;
$popover-bg: $white;
$popover-max-width: 276px;
$popover-border-width: $border-width;
$popover-border-color: rgba($black, .2);
$popover-border-radius: $border-radius-lg;
$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width);
$popover-box-shadow: $box-shadow;
$popover-header-bg: shade-color($popover-bg, 6%);
$popover-header-color: $headings-color;
$popover-header-padding-y: .5rem;
$popover-header-padding-x: $spacer;
$popover-body-color: $body-color;
$popover-body-padding-y: $spacer;
$popover-body-padding-x: $spacer;
$popover-arrow-width: 1rem;
$popover-arrow-height: .5rem;
$popover-arrow-color: $popover-bg;
$popover-arrow-outer-color: fade-in($popover-border-color, .05);
Употреба
Омогућите искачуће прозоре преко ЈаваСцрипт-а:
var exampleEl = document.getElementById('example')
var popover = new bootstrap.Popover(exampleEl, options)
Омогућите да искачући бројеви раде за кориснике тастатуре и помоћне технологије
Да бисте омогућили корисницима тастатуре да активирају искачуће елементе, требало би да их додате само у ХТМЛ елементе који су традиционално фокусирани на тастатуру и интерактивни (као што су везе или контроле обрасца). Иако произвољни ХТМЛ елементи (као што је <span>
с) могу бити фокусирани додавањем tabindex="0"
атрибута, ово ће додати потенцијално досадне и збуњујуће тачке табулатора на неинтерактивним елементима за кориснике тастатуре, а већина помоћних технологија тренутно не најављује садржај искачућег екрана у овој ситуацији . Поред тога, немојте се ослањати само на hover
окидач за ваше искачуће поруке, јер ће то онемогућити њихово покретање за кориснике тастатуре.
Иако можете да убаците богат, структуриран ХТМЛ у искачуће странице помоћу html
опције, топло препоручујемо да избегавате додавање превелике количине садржаја. Начин на који искачући огласи тренутно функционишу је да је, када се једном прикажу, њихов садржај везан за елемент окидача са aria-describedby
атрибутом. Као резултат тога, цео садржај поповера биће објављен корисницима помоћне технологије као један дугачак, непрекидан ток.
Поред тога, иако је могуће укључити интерактивне контроле (као што су елементи обрасца или везе) у ваш искачући прозор (додавањем ових елемената у allowList
дозвољене атрибуте и ознаке), имајте на уму да тренутно скочни прозор не управља редоследом фокуса тастатуре. Када корисник тастатуре отвори искачући елемент, фокус остаје на елементу за окидање, а пошто искачући део обично не следи одмах иза окидача у структури документа, нема гаранције да ће померање унапред/притиснутиTABће померити корисника тастатуре у сам искачући прозор. Укратко, једноставно додавање интерактивних контрола у искачући прозор ће вероватно учинити ове контроле недостижним/неупотребљивим за кориснике тастатуре и помоћне технологије, или ће у најмању руку створити нелогичан општи редослед фокуса. У овим случајевима размислите о коришћењу модалног дијалога.
Опције
Опције се могу пренети преко атрибута података или ЈаваСцрипт-а. За атрибуте података додајте име опције у data-bs-
, као у data-bs-animation=""
. Обавезно промените тип случаја назива опције из цамелЦасе у кебаб-цасе када преносите опције преко атрибута података. На пример, уместо коришћења data-bs-customClass="beautifier"
, користите data-bs-custom-class="beautifier"
.
sanitize
,
sanitizeFn
и
allowList
не могу доставити коришћењем атрибута података.
Име | Тип | Уобичајено | Опис |
---|---|---|---|
animation |
боолеан | true |
Примените прелаз ЦСС фаде на искачући прозор |
container |
стринг | елемент | лажно | false |
Додаје искачући прозор одређеном елементу. Пример: |
content |
стринг | елемент | функција | '' |
Подразумевана вредност садржаја ако Ако је дата функција, она ће бити позвана са својом |
delay |
број | објекат | 0 |
Одлагање приказивања и сакривања искачућег екрана (мс) – не примењује се на тип ручног окидача Ако је наведен број, кашњење се примењује и на сакривање/прикажи Структура објекта је: |
html |
боолеан | false |
Уметните ХТМЛ у искачући прозор. Ако је нетачно, innerText својство ће се користити за уметање садржаја у ДОМ. Користите текст ако сте забринути због КССС напада. |
placement |
стринг | функција | 'right' |
Како поставити поповер - ауто | врх | боттом | лево | јел тако. Када се функција користи за одређивање положаја, она се позива са искачућим ДОМ чвором као првим аргументом и покретачким елементом ДОМ чвором као другим. Контекст |
selector |
стринг | лажно | false |
Ако је обезбеђен селектор, искачући објекти ће бити делегирани наведеним циљевима. У пракси, ово се користи да би се омогућило додавање искачућих садржаја динамичком ХТМЛ садржају. Погледајте ово и информативни пример . |
template |
низ | '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
Основни ХТМЛ који се користи приликом креирања искачућег прозора. Поповер'с Поповер'с
Најудаљенији елемент омотача треба да има |
title |
стринг | елемент | функција | '' |
Подразумевана вредност наслова ако Ако је дата функција, она ће бити позвана са својом |
trigger |
низ | 'click' |
Како се поповер покреће - кликните | ховер | фокус | упутство. Можете проследити више покретача; одвојите их размаком. manual не може се комбиновати ни са једним другим окидачем. |
fallbackPlacements |
низ | ['top', 'right', 'bottom', 'left'] |
Дефинишите резервна одредишта за пласман пружањем листе одредишта за пласман у низу (по редоследу жеље). За више информација погледајте документе о понашању Поппера |
boundary |
стринг | елемент | 'clippingParents' |
Граница ограничења прекорачења искачућег елемента (односи се само на Поппер-ов модификатор превентОверфлов). Подразумевано је 'clippingParents' и може да прихвати референцу ХТМЛЕлемента (само преко ЈаваСцрипт-а). За више информација погледајте Поппер'с детецтОверфлов документе . |
customClass |
стринг | функција | '' |
Додајте класе искачућем прозору када се прикаже. Имајте на уму да ће ове класе бити додате поред свих класа наведених у шаблону. Да бисте додали више класа, раздвојите их размацима: Такође можете проследити функцију која треба да врати један стринг који садржи додатна имена класа. |
sanitize |
боолеан | true |
Омогућите или онемогућите дезинфекцију. Ако је активирано 'template' , 'content' и 'title' опције ће бити саниране. Погледајте одељак за дезинфекцију у нашој ЈаваСцрипт документацији . |
allowList |
објекат | Задана вриједност | Објекат који садржи дозвољене атрибуте и ознаке |
sanitizeFn |
нулл | функција | null |
Овде можете обезбедити сопствену функцију дезинфекције. Ово може бити корисно ако више волите да користите наменску библиотеку за дезинфекцију. |
offset |
низ | стринг | функција | [0, 8] |
Померање искачућег приказа у односу на циљ. Можете проследити стринг у атрибутима података са вредностима одвојеним зарезима као што су: Када се функција користи за одређивање офсета, она се позива са објектом који садржи поппер пласман, референцу и поппер рецтс као први аргумент. ДОМ чвор покретачког елемента се прослеђује као други аргумент. Функција мора да врати низ са два броја: . За више информација погледајте Попперове офсет документе . |
popperConfig |
нулл | објекат | функција | null |
Да бисте променили Боотстрап-ову подразумевану Поппер конфигурацију, погледајте Поппер-ову конфигурацију . Када се функција користи за креирање Поппер конфигурације, она се позива са објектом који садржи Боотстрап-ову подразумевану Поппер конфигурацију. Помаже вам да користите и спојите подразумевану са сопственом конфигурацијом. Функција мора да врати конфигурациони објекат за Поппер. |
Атрибути података за појединачне искачуће
Опције за појединачне искачуће опције могу се алтернативно специфицирати коришћењем атрибута података, као што је горе објашњено.
Коришћење функције саpopperConfig
var popover = new bootstrap.Popover(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Методе
Асинхроне методе и прелази
Све АПИ методе су асинхроне и покрећу транзицију . Они се враћају позиваоцу чим се транзиција започне, али пре него што се заврши . Поред тога, позив методе за прелазну компоненту биће занемарен .
Погледајте нашу ЈаваСцрипт документацију за више информација .
Прикажи
Открива искачући приказ елемента. Враћа позиваоцу пре него што је искачући део заиста приказан (тј. пре него што се shown.bs.popover
догађај деси). Ово се сматра „ручним“ покретањем искачућег екрана. Скочни прозори чији су наслов и садржај нулте дужине се никада не приказују.
myPopover.show()
сакрити
Сакрива искачући прозор елемента. Враћа позиваоцу пре него што је искачући део заиста сакривен (тј. пре него што се hidden.bs.popover
догађај деси). Ово се сматра „ручним“ покретањем искачућег екрана.
myPopover.hide()
искључи
Пребацује искачући прозор елемента. Враћа позиваоцу пре него што је искачући део заиста приказан или сакривен (тј. пре него што се деси догађај shown.bs.popover
или ). hidden.bs.popover
Ово се сматра „ручним“ покретањем искачућег екрана.
myPopover.toggle()
располагати
Сакрива и уништава искачући прозор елемента (Уклања сачуване податке на ДОМ елементу). Скочни прозори који користе делегирање (који се креирају помоћу опције selector
) не могу се појединачно уништити на елементима окидача потомака.
myPopover.dispose()
омогућити
Даје могућност да се искачући део елемента прикаже. Поповерс су подразумевано омогућени.
myPopover.enable()
онемогућити
Уклања могућност да се искачући прозор елемента прикаже. Поповер ће моћи да се прикаже само ако је поново омогућен.
myPopover.disable()
тогглеЕнаблед
Укључује могућност да се искачући прозор елемента прикаже или сакрије.
myPopover.toggleEnabled()
ажурирање
Ажурира позицију искачућег екрана елемента.
myPopover.update()
гетИнстанце
Статичка метода која вам омогућава да добијете искачућу инстанцу повезану са ДОМ елементом
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getInstance(exampleTriggerEl) // Returns a Bootstrap popover instance
гетОрЦреатеИнстанце
Статичка метода која вам омогућава да добијете искачућу инстанцу повезану са ДОМ елементом или креирате нову у случају да није иницијализована
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap popover instance
Догађаји
Тип догађаја | Опис |
---|---|
схов.бс.поповер | Овај догађај се покреће одмах када show се позове метод инстанце. |
приказано.бс.поповер | Овај догађај се покреће када искачући прозор постане видљив кориснику (сачекаће да се ЦСС транзиције доврше). |
хиде.бс.поповер | Овај догађај се покреће одмах када hide се позове метод инстанце. |
хидден.бс.поповер | Овај догађај се покреће када се искачући прозор заврши са сакривањем од корисника (сачекаће да се ЦСС транзиције доврше). |
инсертед.бс.поповер | Овај догађај се покреће након show.bs.popover догађаја када је шаблон за искакање додат у ДОМ. |
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
// do something...
})