Mine põhisisu juurde Jätke dokumentide navigeerimise juurde
Check
in English

Popovers

Dokumentatsioon ja näited Bootstrapi hüpikaknate (nt iOS-is leiduvad) lisamiseks saidi mis tahes elemendile.

Ülevaade

Asjad, mida popover-plugina kasutamisel teada saada:

  • Popoverid kasutavad positsioneerimiseks kolmanda osapoole raamatukogu Popper . Peate sisestama popper.min.js enne sõnu bootstrap.jsvõi kasutama seda, bootstrap.bundle.min.jsmis sisaldab Popperit.
  • Hüpikaknad nõuavad sõltuvusena hüpikakna pistikprogrammi .
  • Hüpikaknad on jõudluse huvides lubatud, seega peate need ise lähtestama .
  • Nullpikkus titleja contentväärtused ei näita kunagi hüpikaknaid.
  • Määrake container: 'body', et vältida renderdamisprobleeme keerukamates komponentides (nt meie sisendrühmad, nupurühmad jne).
  • Peidetud elementide hüpikaknade käivitamine ei toimi.
  • Elementide .disabledvõi disabledelementide hüpikaknad tuleb käivitada ümbriselemendil.
  • Kui hüpikaknad käivitatakse ankrute kaudu, mis keerduvad üle mitme joone, tsentreeritakse hüpikaknad ankrute üldlaiuse vahele. Sellise käitumise vältimiseks kasutage .text-nowrapseda oma peal .<a>
  • Hüpikaknad tuleb peita enne, kui nende vastavad elemendid on DOM-ist eemaldatud.
  • Hüpikaknaid saab käivitada tänu vari-DOM-i sees olevale elemendile.
Vaikimisi kasutab see komponent sisseehitatud sisupuhastusvahendit, mis eemaldab kõik HTML-i elemendid, mis pole otseselt lubatud. Lisateavet leiate meie JavaScripti dokumentatsiooni desinfitseerimisvahendite jaotisest .
Selle komponendi animatsiooniefekt sõltub prefers-reduced-motionmeediumipäringust. Vaadake meie juurdepääsetavuse dokumentatsiooni vähendatud liikumise jaotist .

Jätkake lugemist, et näha, kuidas hüpikaknad mõne näitega töötavad.

Näited

Luba hüpikaknad

Nagu eespool mainitud, peate hüpikaknad enne nende kasutamist initsialiseerima. Üks viis kõigi lehe hüpikaknate lähtestamiseks oleks valida need nende data-bs-toggleatribuudi järgi, näiteks:

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

Live demo

Kasutame järgmise reaalajas hüpikakna kuvamiseks ülaltoodud väljavõttega sarnast JavaScripti. Pealkirjad määratakse kaudu data-bs-titleja keha sisu määratakse data-bs-content.

Kasutage kas titlevõi data-bs-titleoma HTML-is. Kasutamisel titleasendab Popper data-bs-titleselle elemendi renderdamisel automaatselt järgmisega.
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>

Neli suunda

Saadaval on neli valikut: ülemine, parem, alumine ja vasak. Kui kasutate RTL-is Bootstrapi, siis juhiseid peegeldatakse. Määrake data-bs-placementsuunda muutma.

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>

Kohandatudcontainer

Kui teil on ülemelemendil mõned stiilid, mis segavad hüpikakna esilekutsumist, soovite määrata kohandatud containerelemendi, nii et hüpikakna HTML kuvatakse selle elemendi sees. See on tavaline tundlikes tabelites, sisendrühmades jms.

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

Teine olukord, kus soovite selgesõnalise kohandamise seada, containeron hüpikaknad modaaldialoogis , et veenduda, et hüpikakna ise on modaalile lisatud . See on eriti oluline interaktiivseid elemente sisaldavate hüpikaknate puhul – modaaldialoogid püüavad fookuse kinni, nii et kui hüpikaken pole modaali alamelement, ei saa kasutajad neid interaktiivseid elemente fokuseerida ega aktiveerida.

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

Kohandatud hüpikaknad

Lisatud versioonisse v5.2.0

Hüpikakende välimust saate kohandada CSS-i muutujate abil . Seadsime kohandatud klassi data-bs-custom-class="custom-popover"oma kohandatud välimuse ulatuseks ja kasutame seda mõne kohaliku CSS-i muutuja alistamiseks.

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

Loobu järgmisel klikil

Kasutage focuspäästikut hüpikaknate tühistamiseks, kui kasutaja järgmisel klõpsul lülituselemendist erineval elemendil klõpsab.

Järgmisel klõpsamisel loobumiseks on vajalik konkreetne märgistus

Õigeks brauseri- ja platvormiüleseks käitumiseks peate kasutama märgendit <a>, mitte<button> märgendit, ja lisaks peate lisama tabindexatribuudi.

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

Keelatud elemendid

Atribuudiga elemendid disabledei ole interaktiivsed, mis tähendab, et kasutajad ei saa hüpikakna (või kohtspikri) käivitamiseks hõljutada või klõpsata. Lahendusena võiksite käivitada hüpikakna ümbrisest <div>või <span>ideaaljuhul klaviatuurile teravustatavast, kasutades tabindex="0".

Keelatud hüpikakna käivitajate puhul võite eelistada ka data-bs-trigger="hover focus"seda, et hüpikakna kuvatakse kasutajatele vahetu visuaalse tagasisidena, kuna nad ei pruugi eeldada, et nad klõpsavad keelatud elemendil.

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

Muutujad

Lisatud versioonisse v5.2.0

Bootstrapi areneva CSS-muutujate lähenemisviisi osana kasutavad hüpikud nüüd kohalikke CSS-i muutujaid, .popoveret täiustada reaalajas kohandamist. CSS-i muutujate väärtused määratakse Sassi kaudu, seega toetatakse endiselt ka Sassi kohandamist.

  --#{$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);
  

Sassi muutujad

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

Kasutamine

Luba hüpikaknad JavaScripti kaudu:

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

Hüpikakende kasutamine klaviatuuri ja abitehnoloogia kasutajatele

Et võimaldada klaviatuuri kasutajatel teie hüpikaknaid aktiveerida, peaksite need lisama ainult HTML-i elementidele, mis on tavapäraselt klaviatuurile keskenduvad ja interaktiivsed (nt lingid või vormi juhtelemendid). Kuigi suvalisi HTML-i elemente (nt <span>s) saab tabindex="0"atribuudi lisamisega fokusseeritavaks muuta, lisab see klaviatuurikasutajatele potentsiaalselt tüütuid ja segadusse ajavaid tabelduspunkte mitteinteraktiivsetele elementidele ning enamik abitehnoloogiaid ei teata sellises olukorras hüpikakna sisu. . Lisaks ärge lootke ainult hoverhüpikaknate käivitajale, kuna see muudab klaviatuurikasutajate jaoks nende käivitamise võimatuks.

Kuigi selle valikuga saate hüpikaknatesse lisada rikkalikku struktureeritud HTML-i, htmlsoovitame tungivalt vältida liigse sisu lisamist. Hüpikaknad praegu töötavad nii, et pärast kuvamist seotakse nende sisu aria-describedbyatribuudiga päästikelemendiga. Selle tulemusena teatatakse kogu popoveri sisu abitehnoloogia kasutajatele ühe pika katkematu voona.

Lisaks, kuigi hüpikaknasse on võimalik lisada ka interaktiivseid juhtelemente (nt vormielemente või linke) (lisates need elemendid allowListlubatud atribuutide ja siltide hulka), pidage meeles, et praegu ei halda hüpikaken klaviatuuri fookuse järjekorda. Kui klaviatuurikasutaja avab hüpikakna, jääb fookus vallandavale elemendile ja kuna hüpikaken tavaliselt ei järgne kohe dokumendi struktuuris olevale päästikule, pole edasiliikumise/vajutamise garantiid.TABliigutab klaviatuuri kasutaja hüpikaknasse. Lühidalt, lihtsalt interaktiivsete juhtelementide lisamine hüpikaknasse muudab need juhtelemendid tõenäoliselt kättesaamatuks/kasutuskõlbmatuks klaviatuurikasutajatele ja abitehnoloogiate kasutajatele või teeb vähemalt ebaloogilise üldise fookusjärjestuse. Sellistel juhtudel kaaluge selle asemel modaalse dialoogi kasutamist.

Valikud

Kuna suvandeid saab edastada andmeatribuutide või JavaScripti kaudu, saate valikule lisada valiku nime data-bs-, nagu näiteks data-bs-animation="{value}". Suvandite andmeatribuutide kaudu edastamisel muutke suvandi nime tõuketüüp „ camelCase ” asemel „ kebab-case ”. Näiteks data-bs-custom-class="beautifier"kasutage data-bs-customClass="beautifier".

Alates versioonist Bootstrap 5.2.0 toetavad kõik komponendid eksperimentaalset reserveeritud andmeatribuuti data-bs-config, mis mahutab lihtsa komponendi konfiguratsiooni JSON-stringina. Kui elemendil on atribuudid data-bs-config='{"delay":0, "title":123}'ja data-bs-title="456", on lõplik titleväärtus 456ja eraldi andmeatribuudid alistavad väärtused, mis on antud kuupäeval data-bs-config. Lisaks võivad olemasolevad andmeatribuudid sisaldada JSON-i väärtusi, nagu data-bs-delay='{"show":0,"hide":150}'.

Pange tähele, et turvakaalutlustel ei saa andmeatribuutide abil anda suvandeid sanitize, sanitizeFnja suvandeid.allowList
Nimi Tüüp Vaikimisi Kirjeldus
allowList objektiks Vaikeväärtus Objekt, mis sisaldab lubatud atribuute ja silte.
animation tõeväärtus true Rakendage hüpikaknale CSS-i tuhmumise üleminek.
boundary string, element 'clippingParents' Hüpikakna ülevoolupiirangu piir (kehtib ainult Popperi preventOverflow modifikaatorile). Vaikimisi on see 'clippingParents'ja võib aktsepteerida HTMLElementi viidet (ainult JavaScripti kaudu). Lisateavet leiate Popperi detectOverflow dokumentidest .
container string, element, vale false Lisab hüpikakna konkreetsele elemendile. Näide: container: 'body'. See suvand on eriti kasulik, kuna see võimaldab teil positsioneerida hüpikakna dokumendi voogu käivitava elemendi lähedale – see hoiab ära hüpikakna hõljumise käivitavast elemendist akna suuruse muutmise ajal.
content string, element, funktsioon '' Sisu vaikeväärtus, kui data-bs-contentatribuuti pole. Kui funktsioon on antud, kutsutakse see välja nii, et selle thisviide on seatud elemendile, millele hüpikaken on lisatud.
customClass string, funktsioon '' Lisage hüpikaknasse klassid, kui see kuvatakse. Pange tähele, et need klassid lisatakse lisaks mallis määratud klassidele. Mitme klassi lisamiseks eraldage need tühikutega: 'class-1 class-2'. Saate edastada ka funktsiooni, mis peaks tagastama ühe stringi, mis sisaldab täiendavaid klassinimesid.
delay number, objekt 0 Hüpikakna kuvamise ja peitmise viivitus (ms) – ei kehti käsitsi käivitamise tüübi puhul. Kui number on esitatud, rakendatakse viivitust mõlemale peitmisele/näitamisele. Objekti struktuur on: delay: { "show": 500, "hide": 100 }.
fallbackPlacements string, massiiv ['top', 'right', 'bottom', 'left'] Määratlege varupaigutused, esitades massiivi paigutuste loendi (eelistuse järjekorras). Lisateabe saamiseks vaadake Popperi käitumisdokumente .
html tõeväärtus false Luba HTML hüpikaknas. Kui see on tõene, titlerenderdatakse hüpikaknas olevad HTML-sildid hüpikaknas. Kui see on väär, innerTextkasutatakse atribuuti sisu DOM-i sisestamiseks. Kui olete XSS-i rünnakute pärast mures, kasutage teksti.
offset arv, string, funktsioon [0, 0] Popoveri nihe selle sihtmärgi suhtes. Saate andmeatribuutides stringi edastada komadega eraldatud väärtustega, näiteks: data-bs-offset="10,20". Kui funktsiooni kasutatakse nihke määramiseks, kutsutakse seda esile objektiga, mis sisaldab esimese argumendina popperi paigutust, viidet ja popper rects. Käivitav element DOM-sõlm edastatakse teise argumendina. Funktsioon peab tagastama kahe numbriga massiivi: libisemine , kaugus . Lisateabe saamiseks vaadake Popperi nihkedokumente .
placement string, funktsioon 'top' Hüpikakna paigutamine: automaatne, ülemine, alumine, vasak, parem. Kui autoon määratud, suunab see hüpikakna dünaamiliselt ümber. Kui paigutuse määramiseks kasutatakse funktsiooni, kutsutakse seda esile hüpikakna DOM-sõlme esimese argumendiga ja käivitava elemendi DOM-sõlm teise argumendiga. Kontekst thison seatud popover-eksemplarile.
popperConfig null, objekt, funktsioon null Bootstrapi Popperi vaikekonfiguratsiooni muutmiseks vaadake jaotist Popperi konfiguratsioon . Kui Popperi konfiguratsiooni loomiseks kasutatakse funktsiooni, kutsutakse see välja objektiga, mis sisaldab Bootstrapi Popperi vaikekonfiguratsiooni. See aitab teil kasutada ja liita vaikeseadeid teie enda konfiguratsiooniga. Funktsioon peab Popperi jaoks tagastama konfiguratsiooniobjekti.
sanitize tõeväärtus true Lubage või keelake desinfitseerimine. Kui see on aktiveeritud 'template', desinfitseeritakse valikud 'content'.'title'
sanitizeFn null, funktsioon null Siin saate pakkuda oma desinfitseerimisfunktsiooni. See võib olla kasulik, kui eelistate desinfitseerimiseks kasutada spetsiaalset raamatukogu.
selector string, vale false Kui valija on ette nähtud, delegeeritakse hüpikaknaobjektid määratud sihtmärkidele. Praktikas kasutatakse seda ka hüpikaknate rakendamiseks dünaamiliselt lisatud DOM-i elementidele ( jQuery.ontugi). Vaadake seda numbrit ja informatiivset näidet .
template string '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' Põhi-HTML, mida kasutada hüpikakna loomisel. Popover'id titlesüstitakse .popover-inner. .popover-arrowmuutub popoveri nooleks. Äärepoolsel ümbriselemendil peaks olema .popoverklass ja role="popover".
title string, element, funktsioon '' Pealkirja vaikeväärtus, kui titleatribuuti pole. Kui funktsioon on antud, kutsutakse see välja nii, et selle thisviide on seatud elemendile, millele hüpikaken on lisatud.
trigger string 'hover focus' Kuidas hüpikakna käivitatakse: klõpsake, hõljutage kursorit, fokusseerige, käsitsi. Võite läbida mitu päästikut; eraldage need tühikuga. 'manual'näitab, et hüpikakna käivitatakse programmiliselt meetodite ja kaudu .popover('show'); seda väärtust ei saa kombineerida ühegi teise päästikuga. iseenesest põhjustab hüpikaknaid, mida ei saa klaviatuuri kaudu käivitada, ja seda tuleks kasutada ainult siis, kui on olemas alternatiivsed meetodid sama teabe edastamiseks klaviatuuri kasutajatele..popover('hide').popover('toggle')'hover'

Andmete atribuudid üksikute hüpikaknate jaoks

Üksikute hüpikaknate valikuid saab alternatiivselt määrata andmeatribuutide abil, nagu eespool selgitatud.

Funktsiooni kasutamine koospopperConfig

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

meetodid

Asünkroonsed meetodid ja üleminekud

Kõik API meetodid on asünkroonsed ja alustavad üleminekut . Nad naasevad helistaja juurde kohe pärast ülemineku algust, kuid enne selle lõppu . Lisaks ignoreeritakse üleminekukomponendi meetodikutset .

Lisateabe saamiseks vaadake meie JavaScripti dokumentatsiooni .

meetod Kirjeldus
disable Eemaldab elemendi hüpikakna kuvamise võimaluse. Popoverit saab kuvada ainult siis, kui see on uuesti lubatud.
dispose Peidab ja hävitab elemendi hüpikakna (Eemaldab DOM-elemendil salvestatud andmed). Delegeerimist kasutavaid hüpikaknaid (mis luuakse suvandiga selector) ei saa järeltulijate päästikuelementidel eraldi hävitada.
enable Annab elemendi hüpikaknale võimaluse seda näidata. Hüpikaknad on vaikimisi lubatud.
getInstance Staatiline meetod, mis võimaldab teil saada DOM-i elemendiga seotud hüpikjuhtumi.
getOrCreateInstance Staatiline meetod, mis võimaldab teil saada DOM-i elemendiga seotud hüpikjuhtumi või luua uue, kui seda ei lähtestatud.
hide Peidab elemendi hüpikakna. Naaseb helistaja juurde enne, kui hüpikaken on tegelikult peidetud (st enne hidden.bs.popoversündmuse toimumist). Seda peetakse hüpikakna "käsitsi" käivitamiseks.
setContent Annab võimaluse muuta hüpikakna sisu pärast selle lähtestamist.
show Näitab elemendi hüpikakna. Naaseb helistaja juurde enne hüpikakna tegelikku näitamist (st enne shown.bs.popoversündmuse toimumist). Seda peetakse hüpikakna "käsitsi" käivitamiseks. Hüpikaknaid, mille pealkiri ja sisu on nullpikkused, ei kuvata kunagi.
toggle Lülitab elemendi hüpikakna välja. Naaseb helistaja juurde enne, kui hüpikaknat on tegelikult näidatud või peidetud (st enne sündmuse shown.bs.popovervõi hidden.bs.popovertoimumist). Seda peetakse hüpikakna "käsitsi" käivitamiseks.
toggleEnabled Lülitab elemendi hüpikakna kuvamise või peitmise võimaluse.
update Värskendab elemendi hüpikakna asukohta.
// 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'
})
Meetod setContentaktsepteerib argumendi, kus iga atribuudivõti on hüpikmallis objectkehtiv valija ja iga seotud atribuudi väärtus võib olla | | | stringstringelementfunctionnull

Sündmused

Sündmus Kirjeldus
hide.bs.popover See sündmus käivitatakse kohe, kui hideeksemplari meetod on välja kutsutud.
hidden.bs.popover See sündmus käivitatakse, kui hüpikakna kasutaja eest peitmine on lõppenud (ootab, kuni CSS-i üleminekud on lõpule viidud).
inserted.bs.popover See sündmus käivitatakse pärast show.bs.popoversündmust, kui hüpikakende mall on DOM-i lisatud.
show.bs.popover See sündmus käivitub kohe, kui showeksemplari meetod kutsutakse.
shown.bs.popover See sündmus käivitatakse, kui hüpikaken on kasutajale nähtavaks tehtud (ootab CSS-i üleminekut).
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
  // do something...
})