Пређи на главни садржај Прескочи на навигацију докумената
in English

Поповерс

Документација и примери за додавање искачућих приказа за Боотстрап, попут оних у иОС-у, било ком елементу на вашој веб локацији.

Преглед

Ствари које треба знати када користите додатак за попове:

  • Поповерс се ослањају на Поппер библиотеку треће стране за позиционирање. Морате укључити поппер.мин.јс пре боотстрап.јс или користити 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

Додаје искачући прозор одређеном елементу. Пример: container: 'body'. Ова опција је посебно корисна по томе што вам омогућава да позиционирате искачући део у току документа у близини покретачког елемента – што ће спречити да искачући део лебди од елемента за окидање током промене величине прозора.

content стринг | елемент | функција ''

Подразумевана вредност садржаја ако data-bs-contentатрибут није присутан.

Ако је дата функција, она ће бити позвана са својом thisреференцом постављеном на елемент за који је повезан искачући прозор.

delay број | објекат 0

Одлагање приказивања и сакривања искачућег екрана (мс) – не примењује се на тип ручног окидача

Ако је наведен број, кашњење се примењује и на сакривање/прикажи

Структура објекта је:delay: { "show": 500, "hide": 100 }

html боолеан false Уметните ХТМЛ у искачући прозор. Ако је нетачно, innerTextсвојство ће се користити за уметање садржаја у ДОМ. Користите текст ако сте забринути због КССС напада.
placement стринг | функција 'right'

Како поставити поповер - ауто | врх | боттом | лево | јел тако.
Када autoје наведено, динамички ће преусмерити искачући прозор.

Када се функција користи за одређивање положаја, она се позива са искачућим ДОМ чвором као првим аргументом и покретачким елементом ДОМ чвором као другим. Контекст thisје постављен на инстанцу искачућег приказа.

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ће бити убризган у .popover-header.

Поповер'с contentће бити убризган у .popover-body.

.popover-arrowпостаће поповерова стрела.

Најудаљенији елемент омотача треба да има .popoverкласу.

title стринг | елемент | функција ''

Подразумевана вредност наслова ако titleатрибут није присутан.

Ако је дата функција, она ће бити позвана са својом thisреференцом постављеном на елемент за који је повезан искачући прозор.

trigger низ 'click' Како се поповер покреће - кликните | ховер | фокус | упутство. Можете проследити више покретача; одвојите их размаком. manualне може се комбиновати ни са једним другим окидачем.
fallbackPlacements низ ['top', 'right', 'bottom', 'left'] Дефинишите резервна одредишта за пласман тако што ћете навести листу одредишта за пласман у низу (по редоследу жеље). За више информација погледајте Попперове документе о понашању
boundary стринг | елемент 'clippingParents' Граница ограничења прекорачења искачућег елемента (односи се само на Попперов модификатор превентОверфлов). Подразумевано је 'clippingParents'и може да прихвати референцу ХТМЛЕлемента (само преко ЈаваСцрипт-а). За више информација погледајте Поппер'с детецтОверфлов документе .
customClass стринг | функција ''

Додајте класе искачућем прозору када се прикаже. Имајте на уму да ће ове класе бити додате поред свих класа наведених у шаблону. Да бисте додали више класа, раздвојите их размацима: 'class-1 class-2'.

Такође можете проследити функцију која треба да врати један стринг који садржи додатна имена класа.

sanitize боолеан true Омогућите или онемогућите дезинфекцију. Ако је активирано 'template', 'content'и 'title'опције ће бити саниране. Погледајте одељак за дезинфекцију у нашој ЈаваСцрипт документацији .
allowList објекат Задана вриједност Објекат који садржи дозвољене атрибуте и ознаке
sanitizeFn нулл | функција null Овде можете обезбедити сопствену функцију дезинфекције. Ово може бити корисно ако више волите да користите наменску библиотеку за дезинфекцију.
offset низ | стринг | функција [0, 8]

Померање искачућег приказа у односу на циљ. Можете проследити стринг у атрибутима података са вредностима одвојеним зарезима као што су:data-bs-offset="10,20"

Када се функција користи за одређивање офсета, она се позива са објектом који садржи поппер пласман, референцу и поппер рецтс као први аргумент. ДОМ чвор покретачког елемента се прослеђује као други аргумент. Функција мора да врати низ са два броја: .[skidding, distance]

За више информација погледајте Попперове офсет документе .

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...
})