Kolotoč
Komponent prezentácie na prepínanie medzi prvkami – obrázkami alebo snímkami textu – ako je kolotoč.
Ako to funguje
Kolotoč je prezentácia na cyklické prechádzanie sériou obsahu, vytvorená pomocou transformácií CSS 3D a trocha JavaScriptu. Pracuje so sériou obrázkov, textom alebo vlastným označením. Zahŕňa tiež podporu pre predchádzajúce/nasledujúce ovládacie prvky a indikátory.
V prehliadačoch, kde je podporované rozhranie Page Visibility API , sa karusel vyhne posúvaniu, keď webová stránka nie je pre používateľa viditeľná (napríklad keď je karta prehliadača neaktívna, okno prehliadača je minimalizované atď.).
prefers-reduced-motion
mediálneho dopytu. Pozrite si
časť so zníženým pohybom v našej dokumentácii o prístupnosti .
Upozorňujeme, že vnorené karusely nie sú podporované a karusely vo všeobecnosti nie sú v súlade so štandardmi dostupnosti.
Príklad
Karusely automaticky nenormalizujú rozmery snímky. Na prispôsobenie veľkosti obsahu preto možno budete musieť použiť ďalšie pomôcky alebo vlastné štýly. Hoci karusely podporujú predchádzajúce/nasledujúce ovládacie prvky a indikátory, nie sú výslovne potrebné. Pridajte a prispôsobte, ako uznáte za vhodné.
Triedu .active
je potrebné pridať na jednu zo snímok, inak nebude kolotoč viditeľný. Nezabudnite tiež nastaviť jedinečné id
na .carousel
voliteľné ovládacie prvky, najmä ak používate viacero karuselov na jednej stránke. Prvky ovládacích prvkov a indikátorov musia mať data-bs-target
atribút (alebo href
pre odkazy), ktorý sa zhoduje id
s daným .carousel
prvkom.
Iba diapozitívy
Tu je kolotoč iba so sklíčkami. Všimnite si prítomnosť obrázkov .d-block
a .w-100
na karuseli, aby ste zabránili predvolenému zarovnaniu obrázkov prehliadača.
<div id="carouselExampleSlidesOnly" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
</div>
S ovládaním
Pridanie predchádzajúceho a nasledujúceho ovládacieho prvku. Odporúčame použiť <button>
prvky, ale môžete použiť aj <a>
prvky s role="button"
.
<div id="carouselExampleControls" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
S indikátormi
Okrem ovládacích prvkov môžete do kolotoča pridať aj indikátory.
<div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
S titulkami
Pridajte titulky na svoje snímky jednoducho pomocou .carousel-caption
prvku v ľubovoľnom súbore .carousel-item
. Môžu byť ľahko skryté v menších výrezoch, ako je znázornené nižšie, pomocou voliteľných zobrazovacích nástrojov . Pôvodne ich skryjeme pomocou .d-none
a vrátime ich späť na stredne veľké zariadenia pomocou .d-md-block
.
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</div>
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</p>
</div>
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Prelínanie
Pridajte .carousel-fade
do svojho kolotoča a animujte snímky s prechodom miznutia namiesto snímky.
<div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Individuálny .carousel-item
interval
Pridajte data-bs-interval=""
k a , ak .carousel-item
chcete zmeniť čas oneskorenia medzi automatickým prechodom na ďalšiu položku.
<div id="carouselExampleInterval" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active" data-bs-interval="10000">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item" data-bs-interval="2000">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Zakázať posúvanie dotykom
Karusely podporujú potiahnutie prstom doľava/doprava na zariadeniach s dotykovou obrazovkou na pohyb medzi snímkami. Toto je možné deaktivovať pomocou data-bs-touch
atribútu. Nižšie uvedený príklad tiež nezahŕňa data-bs-ride
atribút, a data-bs-interval="false"
preto sa neprehráva automaticky.
<div id="carouselExampleControlsNoTouching" class="carousel slide" data-bs-touch="false" data-bs-interval="false">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Tmavý variant
Pridajte .carousel-dark
do .carousel
pre tmavšie ovládacie prvky, indikátory a titulky. Ovládacie prvky boli invertované z ich predvolenej bielej výplne s vlastnosťou filter
CSS. Titulky a ovládacie prvky majú ďalšie premenné Sass, ktoré prispôsobujú color
a background-color
.
<div id="carouselExampleDark" class="carousel carousel-dark slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active" data-bs-interval="10000">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</div>
</div>
<div class="carousel-item" data-bs-interval="2000">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</p>
</div>
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Vlastný prechod
Trvanie prechodu .carousel-item
je možné zmeniť pomocou $carousel-transition-duration
premennej Sass pred kompiláciou alebo pomocou vlastných štýlov, ak používate kompilovaný CSS. Ak sa použije viacero prechodov, uistite sa, že prechod transformácie je definovaný ako prvý (napr. transition: transform 2s ease, opacity .5s ease-out
).
Sass
Premenné
$carousel-control-color: $white;
$carousel-control-width: 15%;
$carousel-control-opacity: .5;
$carousel-control-hover-opacity: .9;
$carousel-control-transition: opacity .15s ease;
$carousel-indicator-width: 30px;
$carousel-indicator-height: 3px;
$carousel-indicator-hit-area-height: 10px;
$carousel-indicator-spacer: 3px;
$carousel-indicator-opacity: .5;
$carousel-indicator-active-bg: $white;
$carousel-indicator-active-opacity: 1;
$carousel-indicator-transition: opacity .6s ease;
$carousel-caption-width: 70%;
$carousel-caption-color: $white;
$carousel-caption-padding-y: 1.25rem;
$carousel-caption-spacer: 1.25rem;
$carousel-control-icon-width: 2rem;
$carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>");
$carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>");
$carousel-transition-duration: .6s;
$carousel-transition: transform $carousel-transition-duration ease-in-out; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
$carousel-dark-indicator-active-bg: $black;
$carousel-dark-caption-color: $black;
$carousel-dark-control-icon-filter: invert(1) grayscale(100);
Použitie
Cez dátové atribúty
Pomocou atribútov údajov môžete jednoducho ovládať polohu karuselu. data-bs-slide
akceptuje kľúčové slová prev
alebo next
, čím sa zmení poloha snímky vzhľadom na jej aktuálnu pozíciu. Prípadne použite data-bs-slide-to
na odovzdanie nespracovaného indexu snímky do karuselu data-bs-slide-to="2"
, ktorý posunie pozíciu snímky na konkrétny index začínajúci na 0
.
Atribút data-bs-ride="carousel"
sa používa na označenie karuselu ako animovaného pri načítaní stránky. Ak karusel nepoužívate data-bs-ride="carousel"
na inicializáciu, musíte ho inicializovať sami. Nemožno ho použiť v kombinácii s (nadbytočnou a nepotrebnou) explicitnou inicializáciou JavaScriptu toho istého karuselu.
Cez JavaScript
Zavolajte karusel manuálne pomocou:
var myCarousel = document.querySelector('#myCarousel')
var carousel = new bootstrap.Carousel(myCarousel)
možnosti
Možnosti môžu byť odovzdané prostredníctvom dátových atribútov alebo JavaScriptu. Pre atribúty údajov pripojte názov voľby k data-bs-
, ako v data-bs-interval=""
.
názov | Typ | Predvolené | Popis |
---|---|---|---|
interval |
číslo | 5000 |
Čas oneskorenia medzi automatickým cyklovaním položky. Ak false , karusel sa nebude automaticky cyklovať. |
keyboard |
boolovská hodnota | true |
Či má kolotoč reagovať na udalosti klávesnice. |
pause |
reťazec | boolovská hodnota | 'hover' |
Ak je nastavené na Ak je na zariadeniach s dotykovým ovládaním nastavená možnosť |
ride |
reťazec | boolovská hodnota | false |
Automaticky prehrá karusel po tom, čo používateľ manuálne zacyklí prvú položku. Ak je nastavené na 'carousel' , automaticky sa spustí kolotoč pri načítaní. |
wrap |
boolovská hodnota | true |
Či má kolotoč nepretržite cyklovať alebo má mať tvrdé zastávky. |
touch |
boolovská hodnota | true |
Či má karusel podporovať interakcie potiahnutím prstom doľava/doprava na zariadeniach s dotykovou obrazovkou. |
Metódy
Asynchrónne metódy a prechody
Všetky metódy API sú asynchrónne a spúšťajú prechod . Vrátia sa k volajúcemu hneď po spustení prechodu, ale skôr, ako sa skončí . Okrem toho bude volanie metódy na prechodovom komponente ignorované .
Môžete vytvoriť inštanciu karuselu pomocou konštruktora karuselu, napríklad na inicializáciu s ďalšími možnosťami a začať cyklicky prechádzať položkami:
var myCarousel = document.querySelector('#myCarousel')
var carousel = new bootstrap.Carousel(myCarousel, {
interval: 2000,
wrap: false
})
Metóda | Popis |
---|---|
cycle |
Prechádza položkami kolotoča zľava doprava. |
pause |
Zastaví kolotoč prechádzať položkami. |
prev |
Prejde na predchádzajúcu položku. Vráti sa k volajúcemu pred zobrazením predchádzajúcej položky (napr. pred slid.bs.carousel výskytom udalosti). |
next |
Prejde na ďalšiu položku. Vráti sa k volajúcemu pred zobrazením ďalšej položky (napr. pred slid.bs.carousel výskytom udalosti). |
nextWhenVisible |
Nepresúvajte otočný pás na ďalšiu, keď nie je viditeľná stránka alebo nie je viditeľná otočná lišta alebo jej nadradený prvok. Vráti sa k volajúcemu skôr, ako sa zobrazí cieľová položka |
to |
Cyklizuje karusel na konkrétny rámec (na základe 0, podobne ako pole). Vráti sa k volajúcemu pred zobrazením cieľovej položky (napr. pred slid.bs.carousel výskytom udalosti). |
dispose |
Zničí kolotoč prvku. (Odstráni uložené údaje v prvku DOM) |
getInstance |
Statická metóda, ktorá vám umožňuje získať inštanciu karuselu priradenú k prvku DOM, môžete ju použiť takto:bootstrap.Carousel.getInstance(element) |
getOrCreateInstance |
Statická metóda, ktorá vráti inštanciu karuselu priradenú k prvku DOM alebo vytvorí novú v prípade, že nebola inicializovaná. Môžete ho použiť takto:bootstrap.Carousel.getOrCreateInstance(element) |
Diania
Trieda karuselu Bootstrap odhaľuje dve udalosti na pripojenie k funkcii karuselu. Obe udalosti majú nasledujúce ďalšie vlastnosti:
direction
: Smer, v ktorom sa kolotoč posúva (buď"left"
alebo"right"
).relatedTarget
: Prvok DOM, ktorý sa posúva na miesto ako aktívna položka.from
: Index aktuálnej položkyto
: Index ďalšej položky
Všetky udalosti karuselu sa spúšťajú na samotnom kolotoči (tj na <div class="carousel">
).
Typ udalosti | Popis |
---|---|
slide.bs.carousel |
Spustí sa okamžite pri slide vyvolaní metódy inštancie. |
slid.bs.carousel |
Spustí sa, keď kolotoč dokončí posuvný prechod. |
var myCarousel = document.getElementById('myCarousel')
myCarousel.addEventListener('slide.bs.carousel', function () {
// do something...
})