Carrusel
Un component de presentació de diapositives per passar per elements (imatges o diapositives de text) com un carrusel.
Com funciona
El carrusel és una presentació de diapositives per recórrer una sèrie de continguts, construït amb transformacions CSS 3D i una mica de JavaScript. Funciona amb una sèrie d'imatges, text o marques personalitzades. També inclou suport per a controls i indicadors anteriors/següents.
Als navegadors on s'admet l' API de visibilitat de la pàgina , el carrusel evitarà lliscar quan la pàgina web no sigui visible per a l'usuari (com ara quan la pestanya del navegador està inactiva, la finestra del navegador està minimitzada, etc.).
prefers-reduced-motion
consulta de mitjans. Consulteu la
secció de moviment reduït de la nostra documentació d'accessibilitat .
Tingueu en compte que els carrusels imbricats no s'admeten i, en general, els carrusels no compleixen els estàndards d'accessibilitat.
Exemple
Els carrusels no normalitzen automàticament les dimensions de la diapositiva. Com a tal, és possible que hàgiu d'utilitzar utilitats addicionals o estils personalitzats per dimensionar adequadament el contingut. Tot i que els carrusels admeten controls i indicadors anteriors/següents, no són necessaris explícitament. Afegiu i personalitzeu com us convingui.
La .active
classe s'ha d'afegir a una de les diapositives , en cas contrari, el carrusel no serà visible. Assegureu-vos també d'establir un únic id
per .carousel
als controls opcionals, especialment si feu servir diversos carrusels en una sola pàgina. Els elements de control i indicador han de tenir un data-bs-target
atribut (o href
per als enllaços) que coincideixi amb el id
de l' .carousel
element.
Només diapositives
Aquí teniu un carrusel només amb diapositives. Tingueu en compte la presència de les imatges .d-block
i .w-100
a les imatges del carrusel per evitar l'alineació d'imatges predeterminada del navegador.
<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>
Amb controls
Afegint els controls anterior i següent. Recomanem utilitzar <button>
elements, però també podeu utilitzar <a>
elements amb 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>
Amb indicadors
També podeu afegir els indicadors al carrusel, juntament amb els controls.
<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>
Amb subtítols
Afegiu subtítols a les vostres diapositives fàcilment amb l' .carousel-caption
element de qualsevol .carousel-item
. Es poden amagar fàcilment en finestres més petites, com es mostra a continuació, amb utilitats de visualització opcionals . Els amaguem inicialment amb .d-none
i els tornem a portar en dispositius de mida mitjana amb .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>
Fundició creuada
Afegiu .carousel-fade
-lo al vostre carrusel per animar les diapositives amb una transició esvaïda en lloc d'una diapositiva.
<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>
.carousel-item
Interval individual
Afegeix data-bs-interval=""
a a .carousel-item
per canviar la quantitat de temps per retardar entre el cicle automàticament a l'element següent.
<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>
Desactiva el lliscament tàctil
Els carrusels admeten lliscar cap a l'esquerra/dreta als dispositius de pantalla tàctil per moure's entre diapositives. Això es pot desactivar mitjançant l' data-bs-touch
atribut. L'exemple següent tampoc inclou l' data-bs-ride
atribut i té, de data-bs-interval="false"
manera que no es reprodueix automàticament.
<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>
Variant fosca
Afegiu .carousel-dark
-lo .carousel
a controls, indicadors i subtítols més foscos. Els controls s'han invertit del seu emplenament blanc predeterminat amb la filter
propietat CSS. Els subtítols i els controls tenen variables Sass addicionals que personalitzen color
i 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>
Transició personalitzada
La durada de la transició .carousel-item
es pot canviar amb la $carousel-transition-duration
variable Sass abans de compilar o estils personalitzats si utilitzeu el CSS compilat. Si s'apliquen diverses transicions, assegureu-vos que la transició de transformació estigui definida primer (p. ex. transition: transform 2s ease, opacity .5s ease-out
).
Sass
Les variables
$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);
Ús
Mitjançant atributs de dades
Utilitzeu atributs de dades per controlar fàcilment la posició del carrusel. data-bs-slide
accepta les paraules clau prev
o next
, que altera la posició de la diapositiva en relació a la seva posició actual. Alternativament, utilitzeu data-bs-slide-to
per passar un índex de diapositives en brut al carrusel data-bs-slide-to="2"
, que canvia la posició de la diapositiva a un índex concret que comença per 0
.
L' data-bs-ride="carousel"
atribut s'utilitza per marcar un carrusel com a animador a partir de la càrrega de la pàgina. Si no feu servir data-bs-ride="carousel"
per inicialitzar el vostre carrusel, haureu d'inicialitzar-lo vosaltres mateixos. No es pot utilitzar en combinació amb la inicialització explícita de JavaScript (redundant i innecessària) del mateix carrusel.
Mitjançant JavaScript
Truqueu manualment al carrusel amb:
var myCarousel = document.querySelector('#myCarousel')
var carousel = new bootstrap.Carousel(myCarousel)
Opcions
Les opcions es poden passar mitjançant atributs de dades o JavaScript. Per als atributs de dades, afegiu el nom de l'opció a data-bs-
, com a data-bs-interval=""
.
Nom | Tipus | Per defecte | Descripció |
---|---|---|---|
interval |
nombre | 5000 |
La quantitat de temps per retardar entre el cicle automàtic d'un element. Si false , el carrusel no girarà automàticament. |
keyboard |
booleà | true |
Si el carrusel ha de reaccionar als esdeveniments del teclat. |
pause |
cadena | booleà | 'hover' |
Si s'estableix en Als dispositius tàctils, quan s'estableix en |
ride |
cadena | booleà | false |
Reprodueix automàticament el carrusel després que l'usuari faci el cicle manualment del primer element. Si s'estableix en 'carousel' , reprodueix automàticament el carrusel en carregar. |
wrap |
booleà | true |
Si el carrusel ha de circular contínuament o tenir parades dures. |
touch |
booleà | true |
Si el carrusel ha d'admetre les interaccions de lliscament esquerra/dreta als dispositius de pantalla tàctil. |
Mètodes
Mètodes asíncrons i transicions
Tots els mètodes de l'API són asíncrons i comencen una transició . Tornen a la persona que truca tan bon punt s'inicia la transició però abans que acabi . A més, s'ignorarà una trucada de mètode en un component en transició .
Consulteu la nostra documentació de JavaScript per obtenir més informació .
Podeu crear una instància de carrusel amb el constructor de carrusel, per exemple, per inicialitzar-lo amb opcions addicionals i començar a recórrer els elements:
var myCarousel = document.querySelector('#myCarousel')
var carousel = new bootstrap.Carousel(myCarousel, {
interval: 2000,
wrap: false
})
Mètode | Descripció |
---|---|
cycle |
Recorre els elements del carrusel d'esquerra a dreta. |
pause |
Impedeix que el carrusel circuli per elements. |
prev |
Cicles a l'element anterior. Torna a la persona que truca abans que s'hagi mostrat l'element anterior (p. ex., abans slid.bs.carousel que es produeixi l'esdeveniment). |
next |
Passa a l'element següent. Torna a la persona que truca abans que es mostri el següent element (p. ex., abans slid.bs.carousel que es produeixi l'esdeveniment). |
nextWhenVisible |
No passeu del carrusel al següent quan la pàgina no sigui visible o el carrusel o el seu pare no sigui visible. Torna a la persona que truca abans que s'hagi mostrat l'element de destinació |
to |
Cicle el carrusel a un fotograma concret (basat en 0, similar a una matriu). Torna a la persona que truca abans que s'hagi mostrat l'element de destinació (p. ex., abans slid.bs.carousel que es produeixi l'esdeveniment). |
dispose |
Destrueix el carrusel d'un element. (Elimina les dades emmagatzemades a l'element DOM) |
getInstance |
Mètode estàtic que us permet obtenir la instància del carrusel associada a un element DOM, podeu utilitzar-lo així:bootstrap.Carousel.getInstance(element) |
getOrCreateInstance |
Mètode estàtic que retorna una instància de carrusel associada a un element DOM o en crea una de nova en cas que no s'hagi inicialitzat. Podeu utilitzar-lo així:bootstrap.Carousel.getOrCreateInstance(element) |
Esdeveniments
La classe de carrusel de Bootstrap exposa dos esdeveniments per connectar-se a la funcionalitat del carrusel. Tots dos esdeveniments tenen les següents propietats addicionals:
direction
: La direcció en què llisca el carrusel (o"left"
bé"right"
).relatedTarget
: l'element DOM que s'està fent lliscar al seu lloc com a element actiu.from
: l'índex de l'element actualto
: l'índex de l'element següent
Tots els esdeveniments del carrusel es desenvolupen al mateix carrusel (és a dir, al <div class="carousel">
).
Tipus d'esdeveniment | Descripció |
---|---|
slide.bs.carousel |
S'activa immediatament quan slide s'invoca el mètode d'instància. |
slid.bs.carousel |
S'ha disparat quan el carrusel ha completat la transició de lliscament. |
var myCarousel = document.getElementById('myCarousel')
myCarousel.addEventListener('slide.bs.carousel', function () {
// do something...
})