Saltatu eduki nagusira Saltatu dokumentuen nabigaziora
Check
in English

Popovers

Zure webguneko edozein elementutan Bootstrap popover-ak gehitzeko dokumentazioa eta adibideak, iOS-en aurkitzen direnak bezala.

Ikuspegi orokorra

Popover plugina erabiltzean jakin beharrekoak:

  • Popovers hirugarrenen liburutegian oinarritzen dira kokapenerako. Popper.min.js sartu behar duzu aurretik bootstrap.js, edo bootstrap.bundle.min.jsPopper duen bat erabili.
  • Popover-ek popover plugina behar dute menpekotasun gisa.
  • Popover-ak errendimendu arrazoiengatik aukeratzen dira, beraz, zuk zeuk hasieratu behar dituzu .
  • Zero-luzera titleeta contentbalioek ez dute inoiz popover bat erakutsiko.
  • Zehaztu container: 'body'osagai konplexuagoetan (adibidez, gure sarrera-taldeak, botoi-taldeak, etab.) arazoak errendatzea saihesteko.
  • Ezkutuko elementuetan popover-ak abiarazteak ez du funtzionatuko.
  • .disabledElementu edo elementuen popover- disabledak bilgarri-elementu batean abiarazi behar dira.
  • Hainbat lerrotan biltzen diren ainguretatik abiarazten denean, popover-ak ainguraren zabalera osoaren artean zentratuko dira. Erabili .text-nowrapzure aldean <a>portaera hori saihesteko.
  • Popover-ak ezkutatu egin behar dira dagozkien elementuak DOMetik kendu aurretik.
  • Popovers itzal DOM baten barruan dagoen elementu bati esker abiarazi daitezke.
Lehenespenez, osagai honek barneko edukien desinfektatzailea erabiltzen du, berariaz onartzen ez diren HTML elementuak kentzen dituena. Ikusi desinfektatzaileen atala gure JavaScript dokumentazioan xehetasun gehiago lortzeko.
Osagai honen animazio-efektua prefers-reduced-motionmultimedia kontsultaren menpe dago. Ikusi gure irisgarritasun-dokumentazioaren mugimendu murriztuaren atala .

Jarraitu irakurtzen popover-ek adibide batzuekin nola funtzionatzen duten ikusteko.

Adibideak

Gaitu popover-ak

Goian esan bezala, popover-ak hasieratu behar dituzu erabili aurretik. Orrialde bateko popover guztiak hasieratzeko modu bat bere atributuaren arabera hautatzea litzateke data-bs-toggle, honela:

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

Zuzeneko demoa

Goiko zatiaren antzeko JavaScript erabiltzen dugu zuzeneko popover hau errendatzeko. Izenburuak bidez ezartzen dira data-bs-titleeta gorputzaren edukia bidez ezartzen da data-bs-content.

Anima zaitez zure HTML titleedo biak erabiltzeko. data-bs-titleErabiltzen denean title, Popperrek automatikoki ordezkatuko data-bs-titledu elementua errendatzen denean.
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>

Lau norabide

Lau aukera daude eskuragarri: goiko, eskuineko, beheko eta ezkerreko. Jarraibideak islatzen dira Bootstrap RTL-n erabiltzean. Ezarri data-bs-placementnorabidea aldatzeko.

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>

Pertsonalizatuacontainer

Popover-a oztopatzen duten elementu nagusi batean estilo batzuk dituzunean, pertsonalizatu bat zehaztu nahi duzu container, popover-aren HTML elementu horren ordez ager dadin. Hau ohikoa da erantzun-tauletan, sarrera-taldeetan eta antzekoetan.

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

Ohitura esplizitua ezarri nahi duzun beste egoera bat elkarrizketa-koadro modalcontainer baten barruko popover-ak dira, popover bera modalari erantsita dagoela ziurtatzeko. Hau bereziki garrantzitsua da elementu interaktiboak dituzten popover-entzat: elkarrizketa-modalek fokua harrapatuko dute, beraz, popover-a modalaren elementu seme-alaba ez bada, erabiltzaileek ezin izango dituzte elementu interaktibo hauek fokatu edo aktibatu.

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

Popover pertsonalizatuak

v5.2.0-n gehitua

Popover-en itxura pertsonaliza dezakezu CSS aldagaiak erabiliz . Klase pertsonalizatu bat ezarri dugu data-bs-custom-class="custom-popover"gure itxura pertsonalizatua zabaltzeko eta tokiko CSS aldagai batzuk gainidazteko erabiltzeko.

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

Baztertu hurrengo klikan

Erabili focusabiarazlea popover-ak baztertzeko, erabiltzaileak etengailuaren elementua ez den beste elementu batean egin duen hurrengo klikan.

Markatu zehatza behar da hurrengo klik egitean baztertzeko

Arakatzaile eta plataforma anitzeko portaera egokia izateko, <a>etiketa erabili behar duzu, ez etiketa<button> , eta tabindexatributu bat ere sartu behar duzu.

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

Desgaitutako elementuak

Atributua duten elementuak disabledez dira interaktiboak, hau da, erabiltzaileek ezin dituzte pasa edo klikatu popover bat (edo tresna-informazioa) abiarazteko. Konponbide gisa, popover-a abiarazi nahi duzu bilgarri batetik <div>edo <span>, teklatuan foka daitekeena erabiliz tabindex="0".

Desgaitutako popover abiarazleetarako, baliteke data-bs-trigger="hover focus"popover-a zure erabiltzaileei berehalako iritzi bisual gisa agertzea, baliteke desgaitutako elementu batean klik egitea espero ez dutelako.

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

Aldagaiak

v5.2.0-n gehitua

Bootstrap-en CSS aldagaien bilakaeraren ikuspegiaren barruan, popover-ek orain CSS aldagai lokalak erabiltzen dituzte .popoverdenbora errealean pertsonalizatzeko. CSS aldagaien balioak Sass bidez ezartzen dira, beraz, Sass pertsonalizazioa ere onartzen da oraindik ere.

  --#{$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 aldagaiak

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

Erabilera

Gaitu popover-ak JavaScript bidez:

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

Popover-ak teklatuaren eta laguntza-teknologien erabiltzaileentzat funtzionatzea

Teklatuko erabiltzaileek zure popover-ak aktibatzeko aukera izan dezaten, ohiko teklatuan fokua eta interaktiboak diren HTML elementuetan soilik gehitu behar dituzu (adibidez, estekak edo inprimaki-kontrolak). Nahiz eta HTML elementu arbitrarioak (adibidez, <span>s) foka daitezkeen atributua gehituz tabindex="0", horrek tabulazio gogaikarri eta nahasgarriak gehituko ditu teklatuaren erabiltzaileentzako elementu ez-interaktiboetan, eta gaur egun laguntza-teknologia gehienek ez dute popover-aren edukia iragartzen egoera honetan. . Gainera, ez ezazu soilik fidatu hoverzure popover-en abiarazle gisa, teklatuaren erabiltzaileek aktibatzea ezinezkoa izango baita.

Aukera honekin HTML aberatsa eta egituratua txerta dezakezun arren, htmlgehiegizko edukia gehitzea saihestea gomendatzen dizugu. Une honetan popover-ek funtzionatzen duten modua da, behin bistaratu ondoren, haien edukia abiarazle-elementuari lotzen zaiola aria-describedbyatributuarekin. Ondorioz, popover-aren eduki osoa jakinaraziko zaie laguntza-teknologien erabiltzaileei etenik gabeko korronte luze gisa.

Gainera, zure popover-ean kontrol interaktiboak (adibidez, inprimaki-elementuak edo estekak) ere sar daitezkeen arren (elementu horiek allowListbaimendutako atributu eta etiketetan gehituz), kontutan izan une honetan popover-ak ez duela kudeatzen teklatuaren foku-ordena. Teklatuaren erabiltzaile batek popover bat irekitzen duenean, fokua elementu eragilean geratzen da, eta popover-ak normalean dokumentuaren egituran abiarazlea berehala jarraitzen ez duenez, ez dago bermatzen aurrera/sakatzea.TABteklatuaren erabiltzaile bat popover-era eramango du. Laburbilduz, popover batean kontrol interaktiboak gehitzeak litekeena da kontrol horiek eskuraezinak edo erabilezinak bihurtzea teklatuaren erabiltzaileentzat eta laguntza-teknologien erabiltzaileentzat, edo, gutxienez, fokatze-ordena orokor ilogiko bat egitea. Kasu hauetan, kontuan hartu elkarrizketa modal bat erabiltzea ordez.

Aukerak

Aukerak datu-atributuen edo JavaScript bidez pasa daitezkeenez, aukera-izen bat gehi diezaiokezu data-bs-, honela data-bs-animation="{value}". Ziurtatu aukera-izenaren kasu-mota " camelCase "-tik " kebab-case "-ra aldatzen duzula aukerak datu-atributuen bidez pasatzen dituzunean. Adibidez, erabili data-bs-custom-class="beautifier"ordez data-bs-customClass="beautifier".

Bootstrap 5.2.0-tik aurrera, osagai guztiek erreserbatutako datu-atributu esperimentaldata-bs-config bat onartzen dute , osagaien konfigurazio sinplea JSON kate gisa gorde dezakeena. Elementu batek data-bs-config='{"delay":0, "title":123}'eta data-bs-title="456"atributuak dituenean, azken titlebalioa izango da 456eta bereizitako datu-atributuek gailuan emandako balioak gainidatziko dituzte data-bs-config. Gainera, lehendik dauden datu-atributuek JSON balioak gorde ditzakete data-bs-delay='{"show":0,"hide":150}'.

Kontuan izan segurtasun arrazoiengatik sanitize, sanitizeFn, eta allowListaukerak ezin direla eman datu-atributuak erabiliz.
Izena Mota Lehenetsia Deskribapena
allowList objektua Balio lehenetsia Baimendutako atributuak eta etiketak dituen objektua.
animation boolearra true Aplikatu CSS desagertzeko trantsizioa popover-ean.
boundary katea, elementua 'clippingParents' Popover-aren gainezka-murriztapenaren muga (Popper-en preventOverflow modifikatzaileari soilik aplikatzen zaio). Lehenespenez, 'clippingParents'HTMLElement erreferentzia bat da eta onartu dezake (JavaScript bidez soilik). Informazio gehiagorako, ikusi Popper-en detectOverflow docs .
container kate, elementu, faltsu false Popover-a elementu zehatz bati eransten dio. Adibidea container: 'body':. Aukera hau bereziki erabilgarria da, popover-a dokumentuaren fluxuan kokatzeko aukera ematen baitu elementu eragilearen ondoan, eta horrek saihestuko du popover-a abiaraztearen elementutik urruntzea leihoaren tamaina aldatzean.
content katea, elementua, funtzioa '' Edukiaren balio lehenetsia data-bs-contentatributua ez badago. thisFuntzio bat ematen bada, popover-a erantsita dagoen elementuari erreferentzia ezarrita deituko zaio .
customClass katea, funtzioa '' Gehitu klaseak popover-era erakusten denean. Kontuan izan klase hauek txantiloian zehaztutako klaseez gain gehituko direla. Hainbat klase gehitzeko, bereiz itzazu zuriuneekin: 'class-1 class-2'. Klase-izen gehigarriak dituen kate bakarra itzuli behar duen funtzio bat ere pasa dezakezu.
delay zenbakia, objektua 0 Atzeratu popover-a erakustea eta ezkutatzea (ms) — ez dagokio eskuzko abiarazte motari. Zenbaki bat ematen bada, atzerapena aplikatuko da ezkutatzeko/erakusteko. Objektuaren egitura hau da: delay: { "show": 500, "hide": 100 }.
fallbackPlacements katea, array ['top', 'right', 'bottom', 'left'] Definitu ordezko kokapenak array-ko kokapen-zerrenda bat emanez (hobespenen arabera). Informazio gehiagorako, jo Popperren portaera dokumentuetara .
html boolearra false Baimendu HTML popover-ean. Egia bada, popover-eko HTML etiketak popover-en titleerrendatuko dira. Faltsua bada, innerTextpropietatea erabiliko da edukia DOMean txertatzeko. Erabili testua XSS erasoekin kezkatuta bazaude.
offset zenbakia, katea, funtzioa [0, 0] Popover-aren desplazamendua bere xedearekiko. Datu-atributuetan kate bat pasa dezakezu komaz bereizitako balioekin: data-bs-offset="10,20". Desplazamendua zehazteko funtzio bat erabiltzen denean, lehen argumentu gisa popper-aren kokapena, erreferentzia eta popper zuzenak dituen objektu batekin deitzen da. DOM nodo abiarazteko elementua bigarren argumentu gisa pasatzen da. Funtzioak bi zenbaki dituen array bat itzuli behar du: skidding , distance . Informazio gehiago lortzeko, ikusi Popper-en offset docs .
placement katea, funtzioa 'top' Popover-a nola kokatu: automatikoa, goian, behean, ezkerrean, eskuinean. autoZehazten denean , popover-a dinamikoki berbideratuko du. Funtzio bat kokapena zehazteko erabiltzen denean, popover DOM nodoa lehen argumentu gisa deitzen da eta abiarazte elementua DOM nodoa bigarren gisa. thisTestuingurua popover instantzian ezartzen da .
popperConfig nulu, objektu, funtzio null Bootstrap-en Popper konfigurazio lehenetsia aldatzeko, ikusi Popper-en konfigurazioa . Popper konfigurazioa sortzeko funtzio bat erabiltzen denean, Bootstrap-en Popper konfigurazio lehenetsia duen objektu batekin deitzen da. Lehenetsia zure konfigurazioarekin erabiltzen eta batzen laguntzen dizu. Funtzioak konfigurazio-objektu bat itzuli behar du Popperrentzat.
sanitize boolearra true Gaitu edo desgaitu desinfekzioa. Aktibatzen bada 'template', 'content'eta 'title'aukerak garbituko dira.
sanitizeFn nulua, funtzioa null Hemen zure higienizazio funtzioa horni dezakezu. Hau erabilgarria izan daiteke garbiketa egiteko liburutegi dedikatu bat erabili nahi baduzu.
selector katea, faltsua false Hautatzaile bat ematen bada, popover objektuak zehaztutako helburuetara delegatuko dira. Praktikan, dinamikoki gehitutako DOM elementuei popovers aplikatzeko erabiltzen da ( jQuery.oneuskarria). Ikusi ale hau eta informazio-adibide bat .
template katea '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' Oinarrizko HTML popover-a sortzerakoan erabiltzeko. Popover- titleak injektatuko dira .popover-inner. .popover-arrowpopover-en gezia bihurtuko da. Kanpoko bilgarri-elementuak .popoverklasea eta role="popover".
title katea, elementua, funtzioa '' Izenburuaren balio lehenetsia titleatributua ez badago. thisFuntzio bat ematen bada, popover-a erantsita dagoen elementuari erreferentzia ezarrita deituko zaio .
trigger katea 'hover focus' Nola abiarazten den popover-a: egin klik, pasa ezazu, fokua, eskuz. Hainbat abiarazle pasa ditzakezu; bereiz itzazu tarte batekin. popover-a , eta metodoen 'manual'bidez programatikoki abiaraziko dela adierazten du ; balio hori ezin da beste edozein abiarazlerekin konbinatu. bere kabuz teklatuaren bidez abiarazi ezin diren popover-ak eragingo ditu, eta teklatuaren erabiltzaileei informazio bera helarazteko metodo alternatiboak badaude soilik erabili behar dira..popover('show').popover('hide').popover('toggle')'hover'

Popover indibidualentzako datu-atributuak

Popover indibidualetarako aukerak bestela datu-atributuak erabiliz zehaztu daitezke, goian azaldu bezala.

Funtzioa erabilizpopperConfig

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

Metodoak

Metodo asinkronoak eta trantsizioak

API metodo guztiak asinkronoak dira eta trantsizio bat hasten dute . Trantsizioa hasi bezain laster baina amaitu baino lehen itzultzen dira deitzailearengana . Gainera, trantsizio-osagai baten metodo-dei bati ez ikusi egingo zaio .

Ikus gure JavaScript dokumentazioa informazio gehiago lortzeko .

Metodoa Deskribapena
disable Elementu baten popover-a erakusteko gaitasuna kentzen du. Popover-a berriro gaituta badago soilik erakutsi ahal izango da.
dispose Elementu baten popover-a ezkutatu eta suntsitzen du (DOM elementuan gordetako datuak kentzen ditu). Delegazioa erabiltzen duten popover-ak (aukera erabiliz sortzen direnak ) selectorezin dira banan-banan suntsitu ondorengo abiarazle-elementuetan.
enable Elementu baten popover-ari erakusteko gaitasuna ematen dio. Popover-ak lehenespenez gaituta daude.
getInstance Metodo estatikoa DOM elementu bati lotutako popover instantzia lortzeko aukera ematen duena.
getOrCreateInstance Metodo estatikoa DOM elementu batekin erlazionatutako popover instantzia lortzeko edo berri bat sortzeko aukera ematen du, hasieratu ez bazen.
hide Elementu baten popover-a ezkutatzen du. Deitzen duenari itzultzen zaio popover-a benetan ezkutatu aurretik (hau da, hidden.bs.popovergertaera gertatu baino lehen). Hau popover-aren "eskuz" abiaraztetzat hartzen da.
setContent Hasieratu ondoren popover-aren edukia aldatzeko modua ematen du.
show Elementu baten popover-a agerian uzten du. Deitzen duenari itzultzen zaio popover-a benetan erakutsi aurretik (hau da, shown.bs.popovergertaera gertatu baino lehen). Hau popover-aren "eskuz" abiaraztetzat hartzen da. Izenburua eta edukia zero-luzera duten popover-ak ez dira inoiz bistaratzen.
toggle Elementu baten popover-a aktibatzen du. Deitzen duenari itzultzen zaio popover-a benetan erakutsi edo ezkutatu aurretik (hau da, shown.bs.popoveredo hidden.bs.popovergertaera gertatu baino lehen). Hau popover-aren "eskuz" abiaraztetzat hartzen da.
toggleEnabled Elementu baten popover-a erakusteko edo ezkutatzeko gaitasuna aldatzen du.
update Elementu baten popover-aren posizioa eguneratzen du.
// 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'
})
setContentMetodoak argumentu bat onartzen du , objectnon propietate-gako bakoitza baliozko stringhautatzailea den popover txantiloiaren barruan, eta erlazionatutako propietate-balio bakoitza string| element| function| null

Gertaerak

Gertaera Deskribapena
hide.bs.popover Gertaera hau berehala abiarazten da hideinstantzia-metodoa deitzen denean.
hidden.bs.popover Gertaera hau abiarazten da popover-a erabiltzaileari ezkutatzen amaitzen denean (CSS trantsizioak amaitu arte itxarongo da).
inserted.bs.popover Gertaera hau gertaeraren ondoren show.bs.popoverabiarazten da popover txantiloia DOM-era gehitu denean.
show.bs.popover Gertaera hau berehala abiarazten da showinstantzia-metodoa deitzen denean.
shown.bs.popover Gertaera hau abiarazten da popover-a erabiltzailearentzat ikusgai jartzen denean (CSS trantsizioak amaitu arte itxarongo da).
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
  // do something...
})