Popovers
Dokumentai ir pavyzdžiai, kaip pridėti „Bootstrap“ iššokančių langų, tokių kaip „iOS“ sistemoje, prie bet kurio svetainės elemento.
Apžvalga
Ką reikia žinoti naudojant popover papildinį:
- Popovers pozicionuoti remiasi trečiosios šalies biblioteka Popper . Prieš bootstrap.js turite įtraukti popper.min.js arba naudoti
bootstrap.bundle.min.js
/bootstrap.bundle.js
kuriame yra Popper, kad iššokantys langai veiktų! - Iššokantiesiems reikalingas patarimo įskiepis kaip priklausomybė.
- Iššokantys langai pasirenkami dėl našumo priežasčių, todėl turite juos inicijuoti patys .
- Nulinis ilgis
title
ircontent
reikšmės niekada nerodys iššokimo. - Nurodykite
container: 'body'
, kad išvengtumėte atvaizdavimo problemų sudėtingesniuose komponentuose (pvz., įvesties grupėse, mygtukų grupėse ir kt.). - Paslėptų elementų iššokančių langų suaktyvinimas neveiks.
- Elementų
.disabled
arbadisabled
elementų iššokimai turi būti suaktyvinti apvyniojimo elemente. - Suaktyvinus iš inkarų, apvyniojančių kelias linijas, iššokantys langai bus sutelkti tarp bendro inkarų pločio. Naudokite
.text-nowrap
ant savo<a>
, kad išvengtumėte tokio elgesio. - Iššokantys langai turi būti paslėpti prieš pašalinant atitinkamus elementus iš DOM.
- Iššokimas gali būti suaktyvintas dėl elemento šešėlinio DOM viduje.
prefers-reduced-motion
medijos užklausos. Žr
. mūsų pritaikymo neįgaliesiems dokumentacijos skyrių „Sumažintas judėjimas“ .
Skaitykite toliau, kad pamatytumėte, kaip veikia iššokantys langai su kai kuriais pavyzdžiais.
Pavyzdys: įgalinkite iššokančius langus visur
Vienas iš būdų inicijuoti visus puslapio iššokančius langus būtų pasirinkti juos pagal data-bs-toggle
atributą:
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl)
})
Pavyzdys: container
parinkties naudojimas
Kai pirminiame elemente yra tam tikrų stilių, kurie trukdo iššokimui, norėsite nurodyti tinkintą container
, kad iššokančiojo elemento HTML būtų rodomas tame elemente.
var popover = new bootstrap.Popover(document.querySelector('.example-popover'), {
container: 'body'
})
Pavyzdys
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Keturios kryptys
Galimos keturios parinktys: viršuje, dešinėje, apačioje ir kairėje. Nurodymai rodomi naudojant „Bootstrap“ RTL.
<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>
Atsisakyti kitą kartą spustelėjus
Naudokite focus
aktyviklį, kad atsisakytumėte iššokančių langų, kai vartotojas kitą kartą spustelėja kitą elementą nei perjungimo elementas.
Norint atmesti spustelėjus kitą kartą, reikalingas konkretus žymėjimas
Norėdami tinkamai veikti įvairiose naršyklėse ir įvairiose platformose, turite naudoti <a>
žymą, o ne<button>
žymą, taip pat turite įtraukti tabindex
atributą.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
var popover = new bootstrap.Popover(document.querySelector('.popover-dismiss'), {
trigger: 'focus'
})
Išjungti elementai
Elementai su disabled
atributu nėra interaktyvūs, o tai reiškia, kad naudotojai negali jų užvesti arba spustelėti, kad suaktyvintų iššokantįjį langą (arba patarimą). Kaip išeitis, norėsite suaktyvinti iškylantįjį ekraną iš paketo <div>
arba <span>
, idealiai pritaikyti klaviatūrai, naudojant tabindex="0"
.
Išjungus iškylančiojo lango aktyviklius taip pat galite pasirinkti data-bs-trigger="hover focus"
, kad iššokantis langas būtų rodomas kaip tiesioginis vaizdinis grįžtamasis ryšys jūsų vartotojams, nes jie gali nesitikėti spustelėti išjungto elemento.
<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>
Sass
Kintamieji
$popover-font-size: $font-size-sm;
$popover-bg: $white;
$popover-max-width: 276px;
$popover-border-width: $border-width;
$popover-border-color: rgba($black, .2);
$popover-border-radius: $border-radius-lg;
$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width);
$popover-box-shadow: $box-shadow;
$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;
$popover-arrow-color: $popover-bg;
$popover-arrow-outer-color: fade-in($popover-border-color, .05);
Naudojimas
Įgalinti iššokančius langus naudojant „JavaScript“:
var exampleEl = document.getElementById('example')
var popover = new bootstrap.Popover(exampleEl, options)
Kad iššokantys langai veiktų klaviatūros ir pagalbinių technologijų naudotojams
Kad klaviatūros naudotojai galėtų suaktyvinti iššokančius langus, turėtumėte juos pridėti tik prie HTML elementų, kurie tradiciškai yra skirti klaviatūrai ir yra interaktyvūs (pvz., nuorodos ar formų valdikliai). Nors savavališkus HTML elementus (pvz., <span>
s) galima sufokusuoti pridedant tabindex="0"
atributą, dėl to klaviatūros naudotojams bus pridėta potencialiai erzinančių ir klaidinančių tabuliavimo taškų neinteraktyviuose elementuose, o dauguma pagalbinių technologijų šiuo metu neskelbia iššokančiojo turinio. . Be to, nepasikliaukite vien tik hover
iššokančių langų paleidikliu, nes klaviatūros naudotojai negalės jų suaktyvinti.
Nors naudodami šią html
parinktį galite įterpti turtingą, struktūrinį HTML į iškylančius langus, primygtinai rekomenduojame nepridėti per daug turinio. Šiuo metu iššokantys langai veikia taip, kad, kai jie rodomi, jų turinys yra susietas su aktyviklio elementu su aria-describedby
atributu. Dėl to visas popover turinys pagalbinių technologijų naudotojams bus paskelbtas kaip vienas ilgas, nenutrūkstamas srautas.
Be to, nors į iššokantįjį langą taip pat galima įtraukti interaktyvius valdiklius (pvz., formos elementus ar nuorodas) (pridedant šiuos elementus prie allowList
leidžiamų atributų ir žymų), atminkite, kad šiuo metu iššokantis langas nevaldo klaviatūros fokusavimo tvarkos. Kai klaviatūros vartotojas atidaro iššokantįjį langą, dėmesys lieka ties suaktyvinimo elementu, o kadangi dokumento struktūroje iššokantis ekranas paprastai ne iš karto seka paleidiklį, nėra garantijos, kad judant pirmyn / paspaudusTABperkels klaviatūros vartotoją į patį iškylantįjį langą. Trumpai tariant, tiesiog įtraukus interaktyvius valdiklius prie iššokančiojo vaizdo, šie valdikliai taps nepasiekiami / nenaudojami klaviatūros ir pagalbinių technologijų naudotojams arba bent jau susidarys nelogiška bendra fokusavimo tvarka. Tokiais atvejais apsvarstykite galimybę naudoti modalinį dialogo langą.
Galimybės
Parinktys gali būti perduodamos naudojant duomenų atributus arba JavaScript. Duomenų atributams pridėkite parinkties pavadinimą prie data-bs-
, kaip ir data-bs-animation=""
. Perduodant parinktis per duomenų atributus, būtinai pakeiskite parinkties pavadinimo didžiosios ir mažosios raidės tipą iš „camelCase“ į „kebab-case“. Pavyzdžiui, užuot naudoję data-bs-customClass="beautifier"
, naudokite data-bs-custom-class="beautifier"
.
sanitize
,
sanitizeFn
ir
allowList
parinkčių negalima pateikti naudojant duomenų atributus.
vardas | Tipas | Numatytas | apibūdinimas |
---|---|---|---|
animation |
loginis | true |
Iššokančiai langui pritaikykite CSS išnykimo perėjimą |
container |
styga | elementas | klaidinga | false |
Prideda iššokantįjį langą prie konkretaus elemento. Pavyzdys |
content |
styga | elementas | funkcija | '' |
Numatytoji turinio vertė, jei Jei funkcija duota, ji bus iškviesta |
delay |
numeris | objektas | 0 |
Iššokančiojo lango rodymo ir slėpimo delsa (ms) – netaikoma rankinio paleidimo tipui Jei numeris pateikiamas, uždelsimas taikomas abiem slėptuvėms/rodyti Objekto struktūra yra tokia: |
html |
loginis | false |
Įdėkite HTML į iškylantįjį langą. Jei netiesa, innerText turinys bus naudojamas įterpti į DOM. Jei nerimaujate dėl XSS atakų, naudokite tekstą. |
placement |
styga | funkcija | 'right' |
Kaip išdėstyti iššokantįjį langą - auto | viršuje | apačioje | paliko | teisingai. Kai funkcija naudojama vietai nustatyti, ji iškviečiama, kai pirmasis argumentas yra iššokantis DOM mazgas, o antrasis – aktyvuojantis elementas DOM mazgas. Kontekstas |
selector |
styga | klaidinga | false |
Jei yra parinkiklis, iššokantys objektai bus deleguojami nurodytiems tikslams. Praktiškai tai naudojama norint įgalinti dinaminį HTML turinį pridėti iššokančių langų. Žiūrėkite tai ir informatyvų pavyzdį . |
template |
styga | '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
Pagrindinis HTML, naudojamas kuriant iššokantįjį langą. Popover Popover
Tolimiausias apvyniojimo elementas turi turėti |
title |
styga | elementas | funkcija | '' |
Numatytoji pavadinimo reikšmė, jei Jei funkcija duota, ji bus iškviesta |
trigger |
styga | 'click' |
Kaip suaktyvinamas iššokantis langas – spustelėkite | užveskite | fokusuoti | vadovas. Galite perduoti kelis aktyviklius; atskirkite juos tarpu. manual negali būti derinamas su jokiu kitu paleidikliu. |
fallbackPlacements |
masyvas | ['top', 'right', 'bottom', 'left'] |
Apibrėžkite atsargines paskirties vietas pateikdami vietų sąrašą masyve (pagal pirmenybę). Daugiau informacijos rasite Popperio elgesio dokumentuose |
boundary |
styga | elementas | 'clippingParents' |
Iššokančiojo perpildymo apribojimo riba (taikoma tik Popper's preventOverflow modifikatoriui). Pagal numatytuosius nustatymus jis 'clippingParents' priima ir gali priimti HTMLElement nuorodą (tik naudojant JavaScript). Daugiau informacijos rasite Popper's detectOverflow dokumentuose . |
customClass |
styga | funkcija | '' |
Pridėkite klases prie iškylančiojo lango, kai jis rodomas. Atminkite, kad šios klasės bus pridėtos prie visų šablone nurodytų klasių. Norėdami pridėti kelias klases, atskirkite jas tarpais: Taip pat galite perduoti funkciją, kuri turėtų grąžinti vieną eilutę su papildomais klasių pavadinimais. |
sanitize |
loginis | true |
Įjunkite arba išjunkite dezinfekavimą. Jei suaktyvinta 'template' , parinktys bus išvalytos 'content' . 'title' Žr . „JavaScript“ dokumentacijos valymo priemonių skyrių . |
allowList |
objektas | Numatytoji reikšmė | Objektas, kuriame yra leidžiamų atributų ir žymų |
sanitizeFn |
null | funkcija | null |
Čia galite pateikti savo dezinfekavimo funkciją. Tai gali būti naudinga, jei norite dezinfekuoti naudoti tam skirtą biblioteką. |
offset |
masyvas | styga | funkcija | [0, 8] |
Iššokimo poslinkis, palyginti su jo tikslu. Duomenų atributuose galite perduoti eilutę su kableliais atskirtomis reikšmėmis, pvz.: Kai funkcija naudojama poslinkiui nustatyti, ji iškviečiama su objektu, kuriame yra popper vieta, nuoroda ir popper rects kaip pirmasis argumentas. Suaktyvinantis elementas DOM mazgas perduodamas kaip antrasis argumentas. Funkcija turi grąžinti masyvą su dviem skaičiais: . Norėdami gauti daugiau informacijos, žr. Popper's poslinkio dokumentus . |
popperConfig |
null | objektas | funkcija | null |
Norėdami pakeisti numatytąją Bootstrap Popper konfigūraciją, žr . Popper konfigūraciją . Kai funkcija naudojama kuriant Popper konfigūraciją, ji iškviečiama su objektu, kuriame yra numatytoji Bootstrap Popper konfigūracija. Tai padeda naudoti ir sujungti numatytuosius nustatymus su savo konfigūracija. Funkcija turi grąžinti Popper konfigūracijos objektą. |
Atskirų iššokančių langų duomenų atributai
Atskirų iššokančių langų parinktys gali būti nurodytos naudojant duomenų atributus, kaip paaiškinta aukščiau.
Naudojant funkciją supopperConfig
var popover = new bootstrap.Popover(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metodai
Asinchroniniai metodai ir perėjimai
Visi API metodai yra asinchroniniai ir pradeda perėjimą . Jie grįžta pas skambinantįjį, kai tik prasideda perėjimas, bet jam nepasibaigus . Be to, pereinamojo komponento metodo iškvietimas bus ignoruojamas .
Daugiau informacijos rasite mūsų JavaScript dokumentacijoje .
Rodyti
Atskleidžia elemento iššokimą. Grįžta į skambinantįjį, kol iššokantis pranešimas iš tikrųjų nebuvo parodytas (ty prieš shown.bs.popover
įvykį). Tai laikoma „rankiniu“ iššokimo paleidimu. Iššokantys langai, kurių pavadinimas ir turinys yra nulinio ilgio, niekada nerodomi.
myPopover.show()
paslėpti
Slepia elemento iššokimą. Grįžta į skambinantįjį, kol iššokantis langas iš tikrųjų buvo paslėptas (ty prieš hidden.bs.popover
įvykį). Tai laikoma „rankiniu“ iššokimo paleidimu.
myPopover.hide()
perjungti
Perjungia elemento iššokantįjį langą. Grįžta į skambinantįjį, kol iššokantis langas iš tikrųjų buvo parodytas arba paslėptas (ty prieš įvykstant shown.bs.popover
arba hidden.bs.popover
įvykiui). Tai laikoma „rankiniu“ iššokimo paleidimu.
myPopover.toggle()
disponuoti
Slepia ir sunaikina elemento iššokantįjį ekraną (pašalina DOM elemente saugomus duomenis). Iššokančių langų, kuriuose naudojamas delegavimas (kurie sukuriami naudojant parinktį selector
) , negalima atskirai sunaikinti palikuonių aktyviklio elementuose.
myPopover.dispose()
įjungti
Suteikia elemento popover galimybę būti rodomas. Iššokantys langai įjungti pagal numatytuosius nustatymus.
myPopover.enable()
išjungti
Pašalina galimybę rodyti elemento iššokantįjį langą. Iššokantis ekranas gali būti rodomas tik tada, kai jis bus įjungtas iš naujo.
myPopover.disable()
perjungtiĮjungta
Perjungia galimybę rodyti arba paslėpti elemento iššokantįjį langą.
myPopover.toggleEnabled()
atnaujinti
Atnaujina elemento iššokančiojo lango padėtį.
myPopover.update()
getInstance
Statinis metodas, leidžiantis gauti iškylantįjį egzempliorių, susietą su DOM elementu
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getInstance(exampleTriggerEl) // Returns a Bootstrap popover instance
getOrCreateInstance
Statinis metodas, leidžiantis gauti iššokantįjį egzempliorių, susietą su DOM elementu, arba sukurti naują, jei jis nebuvo inicijuotas
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap popover instance
Renginiai
Renginio tipas | apibūdinimas |
---|---|
rodyti.bs.popover | Šis įvykis suaktyvinamas iš karto, kai show iškviečiamas egzemplioriaus metodas. |
parodyta.bs.popover | Šis įvykis suaktyvinamas, kai iššokantis langas tampa matomas vartotojui (lauks, kol bus baigti CSS perėjimai). |
paslėpti.bs.popover | Šis įvykis suaktyvinamas iš karto, kai hide iškviečiamas egzemplioriaus metodas. |
paslėptas.bs.popover | Šis įvykis suaktyvinamas, kai iššokantis ekranas baigiamas paslėpti nuo vartotojo (lauks, kol bus baigti CSS perėjimai). |
įterpta.bs.popover | Šis įvykis suaktyvinamas po show.bs.popover įvykio, kai prie DOM pridedamas iššokantis šablonas. |
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
// do something...
})