Поповери
Документација и примери за додавање Bootstrap popovers, како оние што се наоѓаат во iOS, на кој било елемент на вашата страница.
Преглед
Работи што треба да ги знаете кога го користите приклучокот за поповер:
- Поповерите се потпираат на библиотеката од трета страна Popper за позиционирање. Мора да вклучите popper.min.js претходно
bootstrap.js
или да користите некојbootstrap.bundle.min.js
што содржи Popper. - Поповерите бараат приклучок за поповер како зависност.
- Поповерите се избираат поради перформанси, па мора сами да ги иницијализирате .
- Нулта должина
title
иcontent
вредности никогаш нема да покажат поповер. - Наведете
container: 'body'
за да избегнете рендерирање проблеми во посложени компоненти (како што се нашите влезни групи, групи копчиња итн.). - Активирањето поповери на скриените елементи нема да работи.
- Поповер за
.disabled
илиdisabled
елементи мора да се активираат на елементот за обвивка. - Кога ќе се активираат од сидра што се обвиткуваат преку повеќе линии, поповерите ќе бидат центрирани помеѓу вкупната ширина на сидрата. Користете
.text-nowrap
го вашиот<a>
s за да го избегнете ова однесување. - Поповерите мора да се сокријат пред нивните соодветни елементи да бидат отстранети од DOM.
- Поповерите може да се активираат благодарение на елемент во сенка DOM.
prefers-reduced-motion
медиумското барање. Погледнете го делот за
намалено движење од нашата документација за пристапност .
Продолжете да читате за да видите како функционираат поповерите со некои примери.
Примери
Овозможи popovers
Како што споменавме погоре, мора да ги иницијализирате поповерите пред да можат да се користат. Еден начин да се иницијализираат сите поповери на страницата би било да ги изберете според нивниот 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
.
title
или
data-bs-title
во вашиот HTML. Кога
title
се користи, Popper ќе го замени автоматски со
data-bs-title
кога елементот е рендериран.
<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 во RTL. Поставете data-bs-placement
да ја смените насоката.
<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;
}
<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
атрибут.
<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"
пукањето да се појавува како непосредна визуелна повратна информација за вашите корисници бидејќи тие можеби не очекуваат да кликнат на оневозможен елемент.
<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
Променливи
Додадено во v5.2.0Како дел од пристапот на еволуирачки CSS променливи на Bootstrap, поповерите сега користат локални CSS променливи .popover
за подобрено прилагодување во реално време. Вредностите за променливите 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);
Sass променливи
$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;
Употреба
Овозможете popovers преку JavaScript:
const exampleEl = document.getElementById('example')
const popover = new bootstrap.Popover(exampleEl, options)
Да се направат поповерите да работат за корисници на тастатура и помошна технологија
За да им дозволите на корисниците на тастатурата да ги активираат вашите поповери, треба да ги додавате само во HTML елементи кои традиционално се фокусирани на тастатурата и интерактивни (како што се врски или контроли на форма). Иако произволните HTML-елементи (како што се <span>
s) може да се направат фокусирани со додавање на tabindex="0"
атрибутот, ова ќе додаде потенцијално досадни и збунувачки таб-стопови на неинтерактивни елементи за корисниците на тастатурата, а повеќето помошни технологии моментално не ја објавуваат содржината на поповер во оваа ситуација . Дополнително, немојте да се потпирате само на hover
како активирач за вашите поповери, бидејќи тоа ќе го оневозможи нивното активирање за корисниците на тастатура.
Иако можете да вметнете богат, структуриран HTML во поповери со html
опцијата, ние силно препорачуваме да избегнувате да додавате прекумерна количина на содржина. Начинот на кој поповерите моментално функционираат е тоа што, откако ќе се прикажат, нивната содржина е врзана за активирачкиот елемент со aria-describedby
атрибутот. Како резултат на тоа, целата содржина на поповер ќе им биде објавена на корисниците на помошната технологија како еден долг, непрекинат пренос.
Дополнително, иако е можно да вклучите и интерактивни контроли (како што се елементи на форма или врски) во вашиот popover (со додавање на овие елементи во allowList
дозволените атрибути и ознаки), имајте предвид дека моментално popover-от не управува со редоследот на фокусирање на тастатурата. Кога корисникот на тастатурата отвора поповер, фокусот останува на активирачкиот елемент и бидејќи пукањето обично не го следи веднаш активирањето во структурата на документот, нема гаранција дека се движи напред/притискаTABќе премести корисник на тастатура во самиот поповер. Накратко, едноставното додавање на интерактивни контроли на поповер веројатно ќе ги направи овие контроли недостапни/неупотребливи за корисниците на тастатура и корисниците на помошни технологии, или во најмала рака ќе направи нелогичен целокупен редослед на фокусирање. Во овие случаи, размислете наместо тоа да користите модален дијалог.
Опции
Бидејќи опциите може да се пренесат преку атрибути на податоци или JavaScript, можете да додадете име на опција на data-bs-
, како во data-bs-animation="{value}"
. Погрижете се да го смените типот на футролата на името на опцијата од „ camelCase “ во „ ќебап-футрола “ кога ги пренесувате опциите преку атрибути на податоци. На пример, користете 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 Fade транзиција на поповер. |
boundary |
низа, елемент | 'clippingParents' |
Границата на ограничување за прелевање на поповерот (важи само за модификаторот на Popper preventOverflow). Стандардно, тоа е 'clippingParents' и може да прифати референца HTMLElement (само преку JavaScript). За повеќе информации погледнете ги Popper's detectOverflow docs . |
container |
низа, елемент, неточно | false |
Го додава поповерот на одреден елемент. Пример: container: 'body' . Оваа опција е особено корисна со тоа што ви овозможува да го поставите поповерот во текот на документот во близина на елементот за активирање - што ќе спречи скокачот да лебди подалеку од елементот за активирање при промена на големината на прозорецот. |
content |
низа, елемент, функција | '' |
Стандардна вредност на содржината ако data-bs-content атрибутот не е присутен. Ако е дадена функција, таа ќе се повика со нејзиното this референтно множество до елементот на кој е прикачен поповерот. |
customClass |
низа, функција | '' |
Додајте класи на поповер кога ќе се прикаже. Имајте предвид дека овие класи ќе се додадат како додаток на класите наведени во шаблонот. За да додадете повеќе класи, одделете ги со празни места: 'class-1 class-2' . Можете исто така да пренесете функција која треба да врати една низа што содржи дополнителни имиња на класи. |
delay |
број, објект | 0 |
Одложување на прикажување и криење на поповер (ms) - не се однесува на рачниот тип на активирач. Ако е доставен број, одложувањето се применува и на двете сокриј/прикажи. Структурата на објектот е: 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 |
За да ја промените стандардната конфигурација на Popper на Bootstrap, видете ја конфигурацијата на Popper . Кога функцијата се користи за креирање на Popper конфигурацијата, таа се повикува со објект што ја содржи стандардната Popper конфигурација на Bootstrap. Тоа ви помага да ги користите и споите стандардните со вашата сопствена конфигурација. Функцијата мора да врати конфигурациски објект за 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 |
Ја отстранува можноста за прикажување на popover на елементот. Поповерот ќе може да се прикаже само ако е повторно овозможен. |
dispose |
Сокрива и уништува поповер на елементот (Ги отстранува зачуваните податоци на елементот DOM). Поповерите што користат делегирање (кои се креирани со опцијата selector ) не можат да се уништат поединечно на елементите за потомство. |
enable |
Дава можност за прикажување на popover на елементот. Поповерите се стандардно овозможени. |
getInstance |
Статички метод кој ви овозможува да го добиете примерокот на поповер поврзан со елементот DOM. |
getOrCreateInstance |
Статички метод кој ви овозможува да го добиете примерокот на поповер поврзан со елементот DOM или да креирате нов во случај да не е иницијализиран. |
hide |
Го крие поповерот на елементот. Се враќа на повикувачот пред да се сокрие поповерот (т.е. пред да се hidden.bs.popover случи настанот). Ова се смета за „рачно“ активирање на поповер. |
setContent |
Дава начин за промена на содржината на поповер по неговата иницијализација. |
show |
Открива популарност на елементот. Се враќа кај повикувачот пред да се прикаже поповерот (т.е. пред да се shown.bs.popover случи настанот). Ова се смета за „рачно“ активирање на поповер. Поповерите чиј наслов и содржина се со нулта должина никогаш не се прикажуваат. |
toggle |
Вклучува исклучување на елементот. Се враќа на повикувачот пред да се прикаже или скрие пукачот (т.е. пред да се случи настанот shown.bs.popover или hidden.bs.popover настанот). Ова се смета за „рачно“ активирање на поповер. |
toggleEnabled |
Ја исклучува можноста за прикажување или сокривање на popover на елементот. |
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.popover настанот кога шаблонот за поповер е додаден во DOM. |
show.bs.popover |
Овој настан се вклучува веднаш кога show ќе се повика методот на пример. |
shown.bs.popover |
Овој настан се активира кога поповерот е видлив за корисникот (ќе чека да се завршат транзициите на CSS). |
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
// do something...
})