Popovers
Dokumentáció és példák Bootstrap felugró ablakok – például az iOS rendszerben találhatók – hozzáadásához a webhely bármely eleméhez.
Áttekintés
Tudnivalók a popover beépülő modul használatakor:
- A popover a harmadik fél Popper könyvtárára támaszkodik a pozicionáláshoz. A popper.min.js -t a bootstrap.js elé kell beírni, vagy a
bootstrap.bundle.min.js
/bootstrap.bundle.js
-t, amely a Poppert tartalmazza, hogy a popover működjön! - Az előugró ablakokhoz függőségként szükség van az eszköztipp-bővítményre .
- Ha a JavaScriptet forrásból készíti, akkor ehhez
util.js
. - A felugró ablakok teljesítmény miatt engedélyezettek, ezért Önnek kell inicializálnia őket .
- A nulla hosszúság
title
éscontent
az értékek soha nem fognak felbukkanni. - Adja meg
container: 'body'
, hogy elkerülje a megjelenítési problémákat az összetettebb összetevőkben (például beviteli csoportjaink, gombcsoportjaink stb.). - A rejtett elemek felbukkanásának kiváltása nem fog működni.
.disabled
A vagy elemek felbukkanását adisabled
burkolóelemen kell aktiválni.- Ha több vonalon átívelő horgonyok aktiválják, a felugró ablakok a horgonyok teljes szélessége között lesznek középen. Használja
.text-nowrap
a<a>
s-én, hogy elkerülje ezt a viselkedést. - A felugró ablakokat el kell rejteni, mielőtt a megfelelő elemeiket eltávolítanák a DOM-ból.
- A popoverek az árnyék DOM-on belüli elemnek köszönhetően válthatók ki.
prefers-reduced-motion
. Tekintse
meg akadálymentesítési dokumentációnk csökkentett mozgással foglalkozó részét .
Olvasson tovább, hogy megtudja, hogyan működnek a popoverek néhány példával.
Példa: Engedélyezze a popovereket mindenhol
data-toggle
Az oldal összes felugró ablakának inicializálásának egyik módja az lenne, ha attribútumuk alapján választaná ki őket :
$(function () {
$('[data-toggle="popover"]').popover()
})
Példa: Az container
opció használata
Ha egy szülőelemen vannak olyan stílusok, amelyek megzavarják a felbukkanást, akkor meg kell adnia egy egyéni beállítást container
, hogy az előugró elem HTML-kódja helyett az adott elemen belül jelenjen meg.
$(function () {
$('.example-popover').popover({
container: 'body'
})
})
Példa
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Négy irány
Négy lehetőség áll rendelkezésre: felül, jobb, alsó és balra igazítva.
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Top popover">
Popover on top
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="right" data-content="Right popover">
Popover on right
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Bottom popover">
Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="left" data-content="Left popover">
Popover on left
</button>
Elvetés a következő kattintással
Használja a focus
triggert a felugró ablakok elvetésére, amikor a felhasználó a kapcsoló elemtől eltérő elemre kattint következő alkalommal.
Speciális jelölés szükséges a következő kattintáskor történő elvetéshez
A megfelelő, több böngésző és platform közötti viselkedés érdekében a címkét kell használnia <a>
, nem a <button>
címkét, és egy tabindex
attribútumot is tartalmaznia kell.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
$('.popover-dismiss').popover({
trigger: 'focus'
})
Letiltott elemek
Az disabled
attribútummal rendelkező elemek nem interaktívak, ami azt jelenti, hogy a felhasználók nem vihetik az egérmutatót vagy kattinthatnak rájuk, hogy előugró ablakot (vagy elemleírást) indítsanak el. Megkerülő megoldásként ki kell váltania a felugró ablakot egy burkolóból, <div>
vagy <span>
felül kell írnia pointer-events
a letiltott elemet.
A letiltott popover triggereknél azt is előnyben részesítheti data-trigger="hover"
, hogy a felbukkanó üzenet azonnali vizuális visszajelzésként jelenjen meg a felhasználók számára, mivel előfordulhat, hogy nem számítanak rá, hogy egy letiltott elemre kattintanak .
<span class="d-inline-block" data-toggle="popover" data-content="Disabled popover">
<button class="btn btn-primary" style="pointer-events: none;" type="button" disabled>Disabled button</button>
</span>
Használat
Előugró ablakok engedélyezése JavaScripten keresztül:
$('#example').popover(options)
GPU gyorsítás
A felugró ablakok néha homályosnak tűnnek a Windows 10 rendszerű eszközökön a GPU-gyorsítás és a módosított rendszer-DPI miatt. Ennek megoldása a 4-es verzióban az, hogy szükség szerint letiltja a GPU-gyorsítást a popovereknél.
Javasolt javítás:
Popper.Defaults.modifiers.computeStyle.gpuAcceleration = !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform))
Az előugró ablakok működése a billentyűzet és a kisegítő technológiák felhasználói számára
Ahhoz, hogy a billentyűzetet használók aktiválhassák az előugró ablakokat, csak olyan HTML-elemekhez adja hozzá őket, amelyek hagyományosan a billentyűzetre fókuszálhatók és interaktívak (például hivatkozások vagy űrlapvezérlők). Bár tetszőleges HTML-elemek (például <span>
s) fókuszálhatóvá tehetők az tabindex="0"
attribútum hozzáadásával, ez potenciálisan bosszantó és zavaró tabulátorokat ad a nem interaktív elemekhez a billentyűzet-felhasználók számára, és a legtöbb segítő technológia ebben a helyzetben jelenleg nem jelenti be a popover tartalmát. . Ezenkívül ne hagyatkozzon kizárólag hover
az előugró ablakok kiváltójára, mivel ez lehetetlenné teszi a billentyűzetet használók számára.
Bár a lehetőséggel gazdag, strukturált HTML-kódot szúrhat be az előugró ablakokba html
, erősen javasoljuk, hogy kerülje a túlzott mennyiségű tartalom hozzáadását. Az előugró ablakok jelenleg úgy működnek, hogy a megjelenítést követően tartalmuk az aria-describedby
attribútummal rendelkező trigger elemhez van kötve. Ennek eredményeként a popover teljes tartalma egyetlen hosszú, megszakítás nélküli adatfolyamként jelenik meg a kisegítő technológia felhasználói számára.
Ezenkívül, bár lehetséges, hogy interaktív vezérlőket (például űrlapelemeket vagy hivatkozásokat) is tartalmazzon az előugró ablakban (azáltal, hogy ezeket az elemeket hozzáadja a whiteList
vagy engedélyezett attribútumokhoz és címkékhez), vegye figyelembe, hogy jelenleg az előugró ablak nem kezeli a billentyűzet fókuszának sorrendjét. Amikor a billentyűzet felhasználója megnyit egy felugró ablakot, a fókusz a kiváltó elemen marad, és mivel az előugró elem általában nem követi azonnal az indítógombot a dokumentum szerkezetében, nincs garancia arra, hogy az előrelépés/lenyomásTABa billentyűzet felhasználóját magába az előugró ablakba helyezi át. Röviden, ha egyszerűen hozzáadunk interaktív vezérlőket egy felugró ablakhoz, ezek a vezérlők valószínűleg elérhetetlenek/használhatatlanok lesznek a billentyűzet-felhasználók és a kisegítő technológiák felhasználói számára, vagy legalábbis logikátlan általános fókuszsorrendet eredményez. Ilyen esetekben fontolja meg egy modális párbeszédpanel használatát.
Lehetőségek
Az opciók átadhatók adatattribútumokon vagy JavaScripten keresztül. Az adatattribútumokhoz fűzze hozzá az opció nevét a data-
következőhöz: data-animation=""
.
sanitize
,
sanitizeFn
és
whiteList
opciók nem adhatók meg adatattribútumokkal.
Név | típus | Alapértelmezett | Leírás |
---|---|---|---|
élénkség | logikai érték | igaz | Alkalmazzon CSS-eltolási átmenetet az előugró ablakra |
tartály | húr | elem | hamis | hamis | Egy adott elemhez fűzi az előugró ablakot. Példa: |
tartalom | húr | elem | funkció | '' | Alapértelmezett tartalomérték, ha Ha adott egy függvény, akkor az úgy lesz meghívva, hogy a |
késleltetés | szám | tárgy | 0 | A felugró ablak megjelenítésének és elrejtésének késleltetése (ms) – nem vonatkozik a kézi indítótípusra Ha megad egy számot, akkor a késleltetés mindkét elrejtésre/megjelenítésre vonatkozik Az objektum szerkezete a következő: |
html | logikai érték | hamis | Szúrjon be HTML-t a felugró ablakba. Ha hamis, akkor a jQuery text metódusát fogja használni a tartalom beszúrására a DOM-ba. Használjon szöveget, ha aggódik az XSS-támadások miatt. |
elhelyezés | húr | funkció | 'jobb' | Hogyan helyezzük el a popovert - auto | top | alsó | balra | jobb. Amikor egy függvényt használunk az elhelyezés meghatározására, akkor az első argumentumként a popover DOM-csomópontot, másodikként pedig a DOM-csomópont kiváltó elemet hívja meg. A |
választó | húr | hamis | hamis | Ha rendelkezésre áll választó, a felugró objektumok delegálódnak a megadott célokra. A gyakorlatban ezt arra használják, hogy a dinamikus HTML-tartalomhoz felugró ablakokat adjanak hozzá. Lásd ezt és egy tájékoztató példát . |
sablon | húr | '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
A popover létrehozásakor használandó alap HTML. A popovert A popovert
A legkülső burkolóelemnek az |
cím | húr | elem | funkció | '' | Az alapértelmezett címérték, ha Ha adott egy függvény, akkor az úgy lesz meghívva, hogy a |
ravaszt | húr | 'kattint' | Hogyan történik a popover aktiválása - kattintson a | lebeg | fókusz | kézikönyv. Több triggert is átadhat; szóközzel válassza el őket. manual nem kombinálható semmilyen más triggerrel. |
beszámítás | szám | húr | 0 | A popover eltolása a célhoz képest. További információkért tekintse meg a Popper-féle eltolási dokumentumokat . |
backbackPlacement | húr | sor | 'flip' | Hagyja megadni, hogy a Popper melyik pozíciót használja a tartaléknál. További információkért tekintse meg a Popper viselkedési dokumentumait |
customClass | húr | funkció | '' | Adjon hozzá osztályokat a felugró ablakhoz, amikor megjelenik. Ne feledje, hogy ezek az osztályok a sablonban megadott bármely osztály mellé kerülnek hozzáadásra. Több osztály hozzáadásához szóközzel válassza el őket: Olyan függvényt is átadhat, amelynek egyetlen karakterláncot kell visszaadnia, amely további osztályneveket tartalmaz. |
határ | húr | elem | 'scrollParent' | A popover túlcsordulási kényszerhatára. Elfogadja a 'viewport' , 'window' , 'scrollParent' , vagy a HTMLElement hivatkozás értékeit (csak JavaScript). További információkért tekintse meg a Popper preventOverflow dokumentumait . |
Fertőtlenít | logikai érték | igaz | Engedélyezze vagy tiltsa le a fertőtlenítést. Ha aktiválva van 'template' , 'content' és 'title' az opciók fertőtlenítésre kerülnek. Tekintse meg a fertőtlenítő részt JavaScript dokumentációnkban . |
fehérlista | tárgy | Alapértelmezett érték | Objektum, amely engedélyezett attribútumokat és címkéket tartalmaz |
fertőtlenítFn | null | funkció | nulla | Itt megadhatja saját fertőtlenítő funkcióját. Ez akkor lehet hasznos, ha inkább egy dedikált könyvtárat szeretne használni a fertőtlenítéshez. |
popperConfig | null | tárgy | nulla | A Bootstrap alapértelmezett Popper konfigurációjának módosításához lásd a Popper konfigurációját |
Adatattribútumok az egyes felugró ablakokhoz
Az egyes felugró ablakok beállításai az adatattribútumok használatával is megadhatók, a fentiek szerint.
Mód
Aszinkron módszerek és átmenetek
Minden API metódus aszinkron , és átmenetet indít . Visszatérnek a hívóhoz, amint az átmenet elkezdődik, de még azelőtt, hogy az véget érne . Ezenkívül a rendszer figyelmen kívül hagyja az átmeneti komponens metódushívásait .
További információért tekintse meg JavaScript dokumentációnkat .
$().popover(options)
Inicializálja az elemgyűjtemény popovereit.
.popover('show')
Felfedi egy elem felbukkanását. Visszatér a hívóhoz, mielőtt a popover ténylegesen megjelenne (azaz az shown.bs.popover
esemény bekövetkezte előtt). Ez a popover „kézi” kiváltásának tekinthető. Az olyan felugró ablakok, amelyek címe és tartalma egyaránt nulla hosszúságú, soha nem jelennek meg.
$('#element').popover('show')
.popover('hide')
Elrejti egy elem felbukkanását. Visszatér a hívóhoz, mielőtt a popover ténylegesen el lett volna rejtve (azaz az hidden.bs.popover
esemény bekövetkezte előtt). Ez a popover „kézi” kiváltásának tekinthető.
$('#element').popover('hide')
.popover('toggle')
Bekapcsolja az elem felbukkanását. Visszatér a hívóhoz, mielőtt a popover ténylegesen megjelenne vagy elrejtésre kerülne (azaz a shown.bs.popover
vagy hidden.bs.popover
esemény bekövetkezése előtt). Ez a popover „kézi” kiváltásának tekinthető.
$('#element').popover('toggle')
.popover('dispose')
Elrejti és megsemmisíti egy elem felbukkanását. A delegálást használó felugró ablakok (amelyek a selector
beállítással jönnek létre ) nem semmisíthetők meg egyenként a leszármazott triggerelemeken.
$('#element').popover('dispose')
.popover('enable')
Lehetővé teszi, hogy egy elem popover megjelenjen. A popoverek alapértelmezés szerint engedélyezve vannak.
$('#element').popover('enable')
.popover('disable')
Eltávolítja az elem felugró ablakának megjelenítési lehetőségét. A popover csak akkor jelenhet meg, ha újra engedélyezve van.
$('#element').popover('disable')
.popover('toggleEnabled')
Bekapcsolja az elem felugró ablakának megjelenítését vagy elrejtését.
$('#element').popover('toggleEnabled')
.popover('update')
Frissíti egy elem popover pozícióját.
$('#element').popover('update')
Események
Esemény típus | Leírás |
---|---|
show.bs.popover | Ez az esemény azonnal aktiválódik a show példánymetódus meghívásakor. |
mutatott.bs.popover | Ez az esemény akkor indul el, amikor a popover láthatóvá vált a felhasználó számára (megvárja, amíg a CSS-átmenetek befejeződnek). |
elrejteni.bs.popover | Ez az esemény azonnal elindul, amikor a hide példánymetódus meghívásra került. |
rejtett.bs.popover | Ez az esemény akkor indul el, amikor a popover elrejtése befejeződött a felhasználó elől (megvárja a CSS-átmenetek befejezését). |
beszúrva.bs.popover | Ez az esemény az show.bs.popover esemény után indul el, amikor a popover sablont hozzáadták a DOM-hoz. |
$('#myPopover').on('hidden.bs.popover', function () {
// do something...
})