Saltar al contingut principal Saltar a la navegació de documents
in English

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

L'efecte d'animació d'aquest component depèn de la prefers-reduced-motionconsulta 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 .activeclasse s'ha d'afegir a una de les diapositives , en cas contrari, el carrusel no serà visible. Assegureu-vos també d'establir un únic idper .carouselals 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-targetatribut (o hrefper als enllaços) que coincideixi amb el idde l' .carouselelement.

Només diapositives

Aquí teniu un carrusel només amb diapositives. Tingueu en compte la presència de les imatges .d-blocki .w-100a 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-captionelement 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-nonei 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>

Afegeix data-bs-interval=""a a .carousel-itemper 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-touchatribut. L'exemple següent tampoc inclou l' data-bs-rideatribut 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 .carousela controls, indicadors i subtítols més foscos. Els controls s'han invertit del seu emplenament blanc predeterminat amb la filterpropietat CSS. Els subtítols i els controls tenen variables Sass addicionals que personalitzen colori 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-itemes pot canviar amb la $carousel-transition-durationvariable 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-slideaccepta les paraules clau prevo next, que altera la posició de la diapositiva en relació a la seva posició actual. Alternativament, utilitzeu data-bs-slide-toper 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 'hover', posa en pausa el cicle del carrusel encès mouseenteri reprèn el cicle del carrusel encès mouseleave. Si s'estableix en false, passar el cursor per sobre del carrusel no el posarà en pausa.

Als dispositius tàctils, quan s'estableix en 'hover', el ciclisme s'aturarà touchend(un cop l'usuari hagi acabat d'interaccionar amb el carrusel) durant dos intervals, abans de reprendre's automàticament. Tingueu en compte que això s'afegeix al comportament del ratolí anterior.

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.carouselque 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.carouselque 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.carouselque 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""right").
  • relatedTarget: l'element DOM que s'està fent lliscar al seu lloc com a element actiu.
  • from: l'índex de l'element actual
  • to: 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 slides'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...
})