Төп эчтәлеккә күчү Документлар навигациясенә күчү
Check
in English

Поповерлар

Bootstrap поповерларын өстәү өчен документлар һәм мисаллар, iOS'дагы кебек, сезнең сайттагы теләсә нинди элементка.

Гомуми күзәтү

Поповер плагинын кулланганда белергә кирәк нәрсәләр:

  • Поповерлар позиция өчен өченче як китапханәсенә таяналар . Сез моңа кадәр popper.min.jsbootstrap.js кертергә тиеш , яки bootstrap.bundle.min.jsPopper булганны кулланырга тиеш.
  • Поповерлар бәйләнеш буларак поповер плагинын таләп итәләр.
  • Поповерлар башкару сәбәпләре аркасында сайланалар, шуңа күрә сез аларны үзегез башларга тиеш .
  • Нуль озынлыгы titleһәм contentкыйммәтләре беркайчан да поповерны күрсәтмәячәк.
  • container: 'body'Катлаулырак компонентларда проблемалар килеп чыкмасын өчен күрсәтегез (безнең кертү төркемнәре, төймә төркемнәре һ.б.).
  • Яшерен элементлардагы поповерлар эшләмәячәк.
  • Поповерлар .disabledяки disabledэлементлар төрү элементында башланырга тиеш.
  • Берничә сызык белән уралган якорьлардан башлангач, поповерлар якорьларның гомуми киңлеге арасында урнашачак. Бу тәртиптән саклану өчен с-ларда .text-nowrapкулланыгыз .<a>
  • Поповерлар тиешле элементлар DOMдан чыгарылганчы яшерелергә тиеш.
  • Поповерлар DOM күләгәсендәге элемент ярдәмендә башланырга мөмкин.
Килешү буенча, бу компонент эчтәлекле санитизаторны куллана, ул ачыктан-ачык рөхсәт ителмәгән HTML элементларын юкка чыгара. Төгәлрәк мәгълүмат өчен безнең JavaScript документациясендә санитизатор бүлеген карагыз .
Бу компонентның анимация эффекты prefers-reduced-motionмедиа соравына бәйле. Безнең документларның кыскартылган хәрәкәт бүлеген карагыз .

Кайбер мисаллар белән поповерларның ничек эшләвен күрү өчен укуны дәвам итегез.

Мисаллар

Поповерларны кушу

Aboveгарыда әйтелгәнчә, сез поповерларны кулланганчы башларга тиеш. Биттәге барлык поповерларны башлап җибәрүнең бер ысулы - аларны data-bs-toggleатрибутлары буенча сайлау булыр иде:

const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))

Тере демо

Түбәндәге тере поповерны күрсәтү өчен без югарыдагы фрагментка охшаган JavaScript кулланабыз. Титуллар аша data-bs-titleһәм тән эчтәлеге аша куелган data-bs-content.

titleHTML яки data-bs-titleHTML'да кулланырга иренегез. Кайчан кулланылса, Поппер аны элемент күрсәтелгәндә titleавтоматик рәвештә алыштырачак .data-bs-title
html
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" data-bs-title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>

Дүрт юнәлеш

Дүрт вариант бар: өске, уң, аскы һәм сул. РТЛда Bootstrap кулланганда юнәлешләр чагылдырылган. Theнәлешне data-bs-placementүзгәртегез.

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

Гадәтcontainer

Ата-ана элементында поповерга комачаулаган кайбер стильләр булганда, сез гадәтне күрсәтергә теләрсез, containerшуңа күрә поповерның HTML шул элемент эчендә күренсен. Бу җаваплы таблицаларда, кертү төркемнәрендә һәм башкаларда еш очрый.

const popover = new bootstrap.Popover('.example-popover', {
  container: 'body'
})

Ачыктан-ачык гадәт куярга теләгән тагын бер ситуация - модаль диалогcontainer эчендә поповерлар , поповерның үзе модальгә кушылганлыгына инану өчен. Бу интерактив элементларны үз эченә алган поповерлар өчен аеруча мөһим - модаль диалоглар фокусны каплыйлар, шуңа күрә поповер модальнең балалар элементы булмаса, кулланучылар бу интерактив элементларны туплый алмыйлар.

const popover = new bootstrap.Popover('.example-popover', {
  container: '.modal-body'
})

Махсус поповерлар

V5.2.0 өстәлде

Сез CSS үзгәрүчәннәрен кулланып поповерларның тышкы кыяфәтен көйли аласыз . data-bs-custom-class="custom-popover"Без үзебезнең тышкы кыяфәтебезне киңәйтү өчен махсус класс куйдык һәм аны кайбер җирле CSS үзгәрүләрен кире кагу өчен кулланабыз.

.custom-popover {
  --bs-popover-max-width: 200px;
  --bs-popover-border-color: var(--bs-primary);
  --bs-popover-header-bg: var(--bs-primary);
  --bs-popover-header-color: var(--bs-white);
  --bs-popover-body-padding-x: 1rem;
  --bs-popover-body-padding-y: .5rem;
}
html
<button type="button" class="btn btn-secondary"
        data-bs-toggle="popover" data-bs-placement="right"
        data-bs-custom-class="custom-popover"
        data-bs-title="Custom popover"
        data-bs-content="This popover is themed via CSS variables.">
  Custom popover
</button>

Киләсе чирттерүдә ташлагыз

focusКулланучының чираттагы басуында поповерларны җибәрү өчен триггер кулланыгыз .

Эштән чыгару өчен чираттагы чирттерү өчен кирәк

Дөрес кросс-браузер һәм платформа тәртибе өчен сез тегны түгел , ә <a>тегны кулланырга тиеш, һәм сез шулай ук ​​атрибутны кертергә тиеш .<button>tabindex

html
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" data-bs-title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
const popover = new bootstrap.Popover('.popover-dismiss', {
  trigger: 'focus'
})

Инвалид элементлар

Атрибутлы элементлар disabledинтерактив түгел, димәк, кулланучылар поповерны (яки кораллар) җибәрү өчен аларны йөртә алмыйлар. Эш урыны буларак, сез поповерны төргәктән <div>яисә <span>идеаль рәвештә клавиатурага юнәлтелгән итеп ясарга теләрсез tabindex="0".

Инвалид поповер триггерлары өчен, сез шулай ук ​​өстенлек бирергә мөмкин, шуңа күрә поповер сезнең кулланучыларга тиз визуаль җавап булып күренсен, чөнки алар инвалид элементка басуныdata-bs-trigger="hover focus" көтмиләр .

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

CSS

Variзгәрешләр

V5.2.0 өстәлде

Bootstrap үсешенең CSS үзгәрүчәнлеге алымы кысаларында, поповерлар хәзерге вакытта .popoverкөчәйтелгән реальләштерү өчен җирле CSS үзгәрүләрен кулланалар. CSS үзгәрүчәннәре өчен кыйммәтләр Sass аша куела, шуңа күрә Sass көйләү дә ярдәм итә.

  --#{$prefix}popover-zindex: #{$zindex-popover};
  --#{$prefix}popover-max-width: #{$popover-max-width};
  @include rfs($popover-font-size, --#{$prefix}popover-font-size);
  --#{$prefix}popover-bg: #{$popover-bg};
  --#{$prefix}popover-border-width: #{$popover-border-width};
  --#{$prefix}popover-border-color: #{$popover-border-color};
  --#{$prefix}popover-border-radius: #{$popover-border-radius};
  --#{$prefix}popover-inner-border-radius: #{$popover-inner-border-radius};
  --#{$prefix}popover-box-shadow: #{$popover-box-shadow};
  --#{$prefix}popover-header-padding-x: #{$popover-header-padding-x};
  --#{$prefix}popover-header-padding-y: #{$popover-header-padding-y};
  @include rfs($popover-header-font-size, --#{$prefix}popover-header-font-size);
  --#{$prefix}popover-header-color: #{$popover-header-color};
  --#{$prefix}popover-header-bg: #{$popover-header-bg};
  --#{$prefix}popover-body-padding-x: #{$popover-body-padding-x};
  --#{$prefix}popover-body-padding-y: #{$popover-body-padding-y};
  --#{$prefix}popover-body-color: #{$popover-body-color};
  --#{$prefix}popover-arrow-width: #{$popover-arrow-width};
  --#{$prefix}popover-arrow-height: #{$popover-arrow-height};
  --#{$prefix}popover-arrow-border: var(--#{$prefix}popover-border-color);
  

Сасс үзгәрүләр

$popover-font-size:                 $font-size-sm;
$popover-bg:                        $white;
$popover-max-width:                 276px;
$popover-border-width:              $border-width;
$popover-border-color:              var(--#{$prefix}border-color-translucent);
$popover-border-radius:             $border-radius-lg;
$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width);
$popover-box-shadow:                $box-shadow;

$popover-header-font-size:          $font-size-base;
$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;

Куллану

JavaScript аша поповерларны рөхсәт итегез:

const exampleEl = document.getElementById('example')
const popover = new bootstrap.Popover(exampleEl, options)

Клавиатура һәм ярдәмче технология кулланучылар өчен поповерлар эшләү

Клавиатура кулланучыларына сезнең поповерларны активлаштырырга рөхсәт итәр өчен, сез аларны HTML клавиатурасына игътибарлы һәм интерактив булган элементларга өстәргә тиеш (мәсәлән, сылтамалар яки форма белән идарә итү). Характерлы HTML элементлары (мәсәлән <span>) tabindex="0"атрибутны өстәп игътибарны тупларга мөмкин булса да, бу клавиатура кулланучылары өчен интерактив булмаган элементларга потенциаль рәнҗетүче һәм буталчык өстәмә тукталышлар өстәячәк, һәм күпчелек ярдәмче технологияләр хәзерге вакытта поповерның эчтәлеген игълан итмиләр. . Өстәвенә, поповерларыгыз өчен триггер буларак кына таянмагыз hover, чөнки бу аларны клавиатура кулланучылары өчен эшләтеп җибәрә алмас.

Сез вариант белән поповерларга бай, структуралы HTML кертә аласыз html, без артык күп эчтәлек кертмәскә киңәш итәбез. Хәзерге вакытта поповерларның эшләве - бер тапкыр күрсәтелгәндә, аларның эчтәлеге триггер элементына aria-describedbyатрибут белән бәйләнгән. Нәтиҗәдә, поповерның эчтәлеге технология кулланучыларына бер озын, өзлексез агым буларак ярдәм итәр өчен игълан ителәчәк.

Өстәвенә, интерактив контрольне (форма элементлары яки сылтамалар кебек) поповерга кертергә мөмкин булса да (бу элементларны allowListрөхсәт ителгән атрибутларга һәм тэгларга өстәп), шуны онытмагыз: хәзерге вакытта поповер клавиатура фокус тәртибе белән идарә итми. Клавиатура кулланучы поповерны ачканда, фокус триггер элементына кала, һәм поповер гадәттә документ структурасында триггерга иярмәгәнгә, алга бару / басу гарантиясе юк.TABклавиатура кулланучыны поповерның үзенә күчерәчәк. Кыскасы, поповерга интерактив контроль өстәү, бу контрольләрне клавиатура кулланучылары һәм ярдәмче технологияләр кулланучылары өчен кулланып булмый / кулланмый, яки ким дигәндә логик булмаган гомуми фокус тәртибен ясый. Бу очракларда аның урынына модаль диалог кулланырга уйлагыз.

Вариантлар

Вариантлар мәгълүмат атрибутлары яки JavaScript аша уза алганлыктан, сез опция исемен куша data-bs-аласыз data-bs-animation="{value}". Вариант исемен мәгълүмат атрибутлары аша үткәндә " camelCase " дан "kebab -case " га үзгәртегез. Мәсәлән, data-bs-custom-class="beautifier"урынына кулланыгыз data-bs-customClass="beautifier".

Bootstrap 5.2.0 мәгълүматларына караганда, барлык компонентлар эксперименталь сакланган мәгълүмат атрибутын хуплый, data-bs-configалар гади компонент конфигурациясен JSON сызыгы итеп урнаштыра ала. Элемент data-bs-config='{"delay":0, "title":123}'һәм data-bs-title="456"атрибутлар булганда, соңгы titleкыйммәт булачак 456һәм аерым мәгълүмат атрибутлары бирелгән кыйммәтләрне юкка чыгарачак data-bs-config. Моннан тыш, булган мәгълүмат атрибутлары JSON кебек кыйммәтләрне урнаштыра ала data-bs-delay='{"show":0,"hide":150}'.

Игътибар итегез, куркынычсызлык сәбәпләре аркасында sanitize, sanitizeFnһәм allowListвариантлар мәгълүмат атрибутлары ярдәмендә бирелә алмый.
Исем Тип Килешү Тасвирлау
allowList объект Килешенгән кыйммәт Рөхсәт ителгән атрибутлар һәм тэглар булган объект.
animation буле true Поповерга CSS сүнгән күчүне кулланыгыз.
boundary тезмә, элемент 'clippingParents' Поповерның ташып торган чик чикләре (Попперның профилактикасы Оверфлоу модификаторына гына кагыла). Килешү буенча, ул 'clippingParents'һәм HTMLElement сылтамасын кабул итә ала (JavaScript аша гына). Күбрәк мәгълүмат өчен Popper's detectOverflow документларына мөрәҗәгать итегез .
container тезмә, элемент, ялган false Поповерны билгеле бер элементка өсти. Мисал : container: 'body'. Бу вариант аеруча файдалы, чөнки ул поповерны документ агымында триггер элементы янында урнаштырырга мөмкинлек бирә - бу тәрәзә размеры вакытында поповерның этәргеч элементыннан ераклашуына комачаулый.
content тезмә, элемент, функция '' data-bs-contentӘгәр дә атрибут булмаса , килешү эчтәлеге . Әгәр дә функция бирелсә, ул thisпоповерга бәйләнгән элементка сылтама белән чакырылачак.
customClass тезмә, функция '' Күрсәтелгәндә поповерга класслар өстәгез. Игътибар итегез, бу класслар шаблонда күрсәтелгән теләсә нинди классларга өстәп өстәләчәк. Берничә класс өстәр өчен, аларны урыннар белән аерыгыз : 'class-1 class-2'. Сез шулай ук ​​өстәмә класс исемнәре булган бер сызыкны кайтарырга тиеш функцияне уза аласыз.
delay сан, объект 0 Күрсәтүне һәм яшерүне тоткарлау (мс) - кул белән эшләнгән триггер төренә кагылмый. Әгәр сан бирелсә, яшерү / күрсәтү өчен тоткарлык кулланыла. Объект структурасы : delay: { "show": 500, "hide": 100 }.
fallbackPlacements тезмә, массив ['top', 'right', 'bottom', 'left'] Массадагы урнаштыру исемлеген биреп, кире кайту урыннарын билгеләгез (өстенлек тәртибендә). Күбрәк мәгълүмат өчен Попперның тәртип документларына мөрәҗәгать итегез .
html буле false Поповерда HTML рөхсәт итегез. Дөрес булса, поповердагы HTML тэглары поповерда titleкүрсәтеләчәк. Ялган булса, innerTextмилек DOMга эчтәлек кертү өчен кулланылачак. XSS һөҗүмнәре турында борчылсагыз, текст кулланыгыз.
offset сан, тезмә, функция [0, 0] Максатка караганда поповерның офсеты. Сез мәгълүмат атрибутларында үтем белән аерылган кыйммәтләр белән уза аласыз : data-bs-offset="10,20". Офсетны билгеләү өчен функция кулланылганда, ул беренче аргумент буларак поппер урнаштыру, белешмәлек һәм поппер ректлары булган объект белән атала. Икенче аргумент буларак DOM төененең этәргеч элементы уза. Функция ике сан белән массивны кайтарырга тиеш: скидинг , дистанция . Күбрәк мәгълүмат өчен Попперның офсет документларына мөрәҗәгать итегез .
placement тезмә, функция 'top' Поповерны ничек урнаштырырга: автомобиль, өске, аскы, сул, уң. Билгеле булганда auto, ул динамик рәвештә поповерны үзгәртәчәк. Урнаштыруны билгеләү өчен функция кулланылганда, ул беренче аргумент буларак поповер DOM төене белән, икенчесе буларак DOM төен элементы дип атала. thisКонтекст поповер инстанциясенә куелган .
popperConfig нуль, объект, функция null Bootstrap'ның default Popper конфигурациясен үзгәртү өчен, Popper конфигурациясен карагыз . Popper конфигурациясен булдыру өчен функция кулланылганда, ул Bootstrap'ның демократик Popper конфигурациясен үз эченә алган объект белән атала. Бу сиңа конфигурацияне кулланырга һәм берләштерергә ярдәм итә. Функция Popper өчен конфигурация объектын кайтарырга тиеш.
sanitize буле true Санитизацияне эшләтеп җибәрү яки сүндерү. Активлаштырылса 'template', 'content'вариантлар 'title'санитарлаштырылачак.
sanitizeFn нуль, функция null Монда сез үзегезнең санитария функциясен тәкъдим итә аласыз. Санитизация ясау өчен махсус китапханә кулланырга теләсәгез, бу файдалы булырга мөмкин.
selector тезмә, ялган false Әгәр дә селектор тәкъдим ителсә, поповер объектлары күрсәтелгән максатларга биреләчәк. Практикада, бу шулай ук ​​поповерларны динамик кушылган DOM элементларына ( jQuery.onярдәм) куллану өчен кулланыла. Бу проблеманы һәм мәгълүматлы мисалны карагыз .
template кыл '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' Поповер ясаганда куллану өчен HTML нигезе. Поповерның titleинъекциясе .popover-inner. .popover-arrowпоповерның укына әйләнәчәк. Тышкы төрү элементы .popoverкласс булырга тиеш role="popover".
title тезмә, элемент, функция '' titleӘгәр дә атрибут булмаса , килешү исеме . Әгәр дә функция бирелсә, ул thisпоповерга бәйләнгән элементка сылтама белән чакырылачак.
trigger кыл 'hover focus' Поповер ничек этәрелә: басыгыз, әйләндерегез, фокус, кулланма. Сез берничә триггер узарга мөмкин; аларны бушлык белән аерыгыз. 'manual'поповерның программаль рәвештә .popover('show'), .popover('hide')һәм .popover('toggle')ысуллар аша башлануын күрсәтә; бу кыйммәтне башка триггер белән берләштереп булмый. 'hover'үзеннән-үзе клавиатура аша эшләтеп булмый торган поповерларга китерәчәк, һәм клавиатура кулланучылары өчен бер үк мәгълүматны җиткерүнең альтернатив ысуллары булганда гына кулланырга кирәк.

Аерым поповерлар өчен мәгълүмат атрибутлары

Индивидуаль поповерлар өчен вариантлар, өстә аңлатылганча, мәгълүмат атрибутлары ярдәмендә күрсәтелергә мөмкин.

Белән функция куллануpopperConfig

const popover = new bootstrap.Popover(element, {
  popperConfig(defaultBsPopperConfig) {
    // const newPopperConfig = {...}
    // use defaultBsPopperConfig if needed...
    // return newPopperConfig
  }
})

Методлар

Асинхрон ысуллар һәм күчү

Барлык API ысуллары да асинхрон һәм күчү башлый . Күчерелеш башлангач, ләкин ул беткәнче шалтыратучыга кире кайталар . Моннан тыш, күчү компонентына методик чакыру игътибарсыз калачак .

Күбрәк мәгълүмат алу өчен безнең JavaScript документларын карагыз .

Метод Тасвирлау
disable Элементның поповерын күрсәтү мөмкинлеген бетерә. Поповер яңадан эшләнгән очракта гына күрсәтеләчәк.
dispose Элементның поповерын яшерә һәм юк итә (DOM элементында сакланган мәгълүматны бетерә). Делегацияне кулланган поповерлар ( вариант ярдәмендә ясалган )selector нәсел триггер элементларында аерым юк ителми.
enable Элементның поповерын күрсәтү мөмкинлеге бирә. Поповерлар килешү буенча кушылган.
getInstance DOM элементы белән бәйләнгән поповер инстанциясен алырга мөмкинлек бирүче статик ысул.
getOrCreateInstance Статик ысул, ул DOM элементы белән бәйләнгән инстанцияне алырга, яисә ул башланмаган очракта яңасын булдырырга мөмкинлек бирә.
hide Элементның поповерын яшерә. Чакыручыга поповер яшерелгәнче кире кайта (ягъни hidden.bs.popoverвакыйга булганчы). Бу поповерның "кул белән" этәргеч булып санала.
setContent Башлангач, поповерның эчтәлеген үзгәртү ысулы бирә.
show Элементның поповерын күрсәтә. Чакыручыга поповер күрсәтелгәнче кире кайта (ягъни shown.bs.popoverвакыйга булганчы). Бу поповерның "кул белән" этәргеч булып санала. Титулы һәм эчтәлеге нуль озынлыгы булган поповерлар беркайчан да күрсәтелми.
toggle Элементның поповерын алыштыра. Чакыручыга поповер күрсәтелгәнче яки яшерелгәнче кире кайтаshown.bs.popover ( ягъни hidden.bs.popoverвакыйга булганчы). Бу поповерның "кул белән" этәргеч булып санала.
toggleEnabled Элементның поповерын күрсәтү яки яшерү мөмкинлеген күчә.
update Элементның поповер позициясен яңарта.
// getOrCreateInstance example
const popover = bootstrap.Popover.getOrCreateInstance('#example') // Returns a Bootstrap popover instance

// setContent example
myPopover.setContent({
  '.popover-header': 'another title',
  '.popover-body': 'another content'
})
setContentМетод аргументны кабул итә , objectмонда һәрбер мөлкәт ачкычы stringпоповер шаблоны эчендә дөрес селектор булып тора, һәм һәрбер мөлкәт-кыйммәт string| element| function| null

Вакыйгалар

Вакыйга Тасвирлау
hide.bs.popover hideБу вакыйга инстанция ысулы чакырылганда шунда ук эштән чыгарыла .
hidden.bs.popover Бу вакыйга поповер кулланучыдан яшерелгәннән соң җибәрелә (CSS күчү тәмамлануын көтәр).
inserted.bs.popover Бу вакыйга show.bs.popoverDOMга поповер шаблоны өстәлгәннән соң җибәрелә.
show.bs.popover showБу вакыйга инстанция ысулы чакырылганда шунда ук янып тора .
shown.bs.popover Бу вакыйга кулланучыга күренгәннән соң (CSS күчү тәмамлануын көтеп торачак).
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
  // do something...
})