Carrusel
Un compoñente de presentación de diapositivas para percorrer elementos (imaxes ou diapositivas de texto) como un carrusel.
Cómo funciona
O carrusel é unha presentación de diapositivas para percorrer unha serie de contidos, construído con transformacións CSS 3D e un pouco de JavaScript. Funciona cunha serie de imaxes, texto ou marcas personalizadas. Tamén inclúe soporte para controis e indicadores anteriores/seguintes.
Nos navegadores nos que se admite a API de visibilidade da páxina , o carrusel evitará deslizarse cando a páxina web non sexa visible para o usuario (por exemplo, cando a pestana do navegador está inactiva, a xanela do navegador está minimizada, etc.).
prefers-reduced-motion
consulta multimedia. Consulta a
sección de movemento reducido da nosa documentación de accesibilidade .
Teña en conta que os carrusels anidados non son compatibles e que, en xeral, os carruseles non cumpren os estándares de accesibilidade.
Por último, se estás a construír o noso JavaScript desde a fonte, requireutil.js
.
Exemplo
Os carrusels non normalizan automaticamente as dimensións das diapositivas. Polo tanto, é posible que necesites usar utilidades adicionais ou estilos personalizados para dimensionar adecuadamente o contido. Aínda que os carrusels admiten controis e indicadores anteriores ou seguintes, non son necesarios de forma explícita. Engade e personaliza como creas oportuno.
A .active
clase debe engadirse a unha das diapositivas , se non, o carrusel non estará visible. Tamén asegúrate de configurar un único para id
os .carousel
controis opcionais, especialmente se estás a usar varios carruseles nunha mesma páxina. Os elementos de control e indicador deben ter un data-target
atributo (ou href
para as ligazóns) que coincida co id
do .carousel
elemento.
Só diapositivas
Aquí tes un carrusel só con diapositivas. Teña en conta a presenza de .d-block
e .w-100
nas imaxes do carrusel para evitar o aliñamento de imaxes predeterminado do navegador.
<div id="carouselExampleSlidesOnly" class="carousel slide" data-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>
Con controis
Engadindo os controis anteriores e seguintes. Recomendamos usar <button>
elementos, pero tamén pode usar <a>
elementos con role="button"
.
<div id="carouselExampleControls" class="carousel slide" data-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-target="#carouselExampleControls" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleControls" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
Con indicadores
Tamén podes engadir os indicadores ao carrusel, xunto cos controis.
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
</ol>
<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-target="#carouselExampleIndicators" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleIndicators" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
Con subtítulos
Engade subtítulos ás túas diapositivas facilmente co .carousel-caption
elemento de calquera .carousel-item
. Pódense ocultar facilmente en xanelas máis pequenas, como se mostra a continuación, con utilidades de visualización opcionais . Ocultámolos inicialmente con .d-none
e traémolos de volta en dispositivos de tamaño medio con .d-md-block
.
<div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleCaptions" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
</ol>
<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-target="#carouselExampleCaptions" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleCaptions" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
Fundido cruzado
Engade .carousel-fade
ao teu carrusel para animar as diapositivas cunha transición de fundido en lugar dunha diapositiva. Dependendo do contido do teu carrusel (por exemplo, diapositivas só de texto), quizais queiras engadir .bg-body
ou algún CSS personalizado ao .carousel-item
s para un fundido cruzado adecuado.
<div id="carouselExampleFade" class="carousel slide carousel-fade" data-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-target="#carouselExampleFade" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleFade" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
.carousel-item
Intervalo individual
Engadir data-interval=""
a a .carousel-item
para cambiar a cantidade de tempo que transcorre entre o paso automático ao seguinte elemento.
<div id="carouselExampleInterval" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active" data-interval="10000">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item" data-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-target="#carouselExampleInterval" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleInterval" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
Desactiva o dedo táctil
Os carrusels admiten pasar o dedo cara á esquerda/dereita nos dispositivos con pantalla táctil para moverse entre as diapositivas. Isto pódese desactivar usando o data-touch
atributo. O exemplo seguinte tampouco inclúe o data-ride
atributo e ten, data-interval="false"
polo que non se reproduce automaticamente.
<div id="carouselExampleControlsNoTouching" class="carousel slide" data-touch="false" data-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-target="#carouselExampleControlsNoTouching" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleControlsNoTouching" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
Uso
A través de atributos de datos
Usa atributos de datos para controlar facilmente a posición do carrusel. data-slide
acepta as palabras clave prev
ou next
, que altera a posición da diapositiva en relación coa súa posición actual. Alternativamente, úsao data-slide-to
para pasar un índice de diapositivas en bruto ao carrusel data-slide-to="2"
, que cambia a posición da diapositiva a un índice concreto que comeza por 0
.
O data-ride="carousel"
atributo úsase para marcar un carrusel como animación a partir da carga da páxina. Se non o utilizas data-ride="carousel"
para inicializar o teu carrusel, tes que inicializalo ti mesmo. Non se pode usar en combinación coa inicialización explícita de JavaScript (redundante e innecesaria) do mesmo carrusel.
Vía JavaScript
Chamar ao carrusel manualmente con:
$('.carousel').carousel()
Opcións
As opcións pódense pasar a través de atributos de datos ou JavaScript. Para os atributos de datos, engada o nome da opción a data-
, como en data-interval=""
.
Nome | Tipo | Por defecto | Descrición |
---|---|---|---|
intervalo | número | 5000 | A cantidade de tempo que transcorre entre o ciclo automático dun elemento. Se false , o carrusel non realizará un ciclo automaticamente. |
teclado | booleano | verdade | Indica se o carrusel debe reaccionar aos eventos do teclado. |
pausa | cadea | booleano | 'pasar' | Se se establece en Nos dispositivos táctiles, cando se configura como |
paseo | corda | falso | Reproduce automaticamente o carrusel despois de que o usuario faga un ciclo manualmente o primeiro elemento. Se se define como 'carousel' , reproduce automaticamente o carrusel ao cargar. |
envolver | booleano | verdade | Se o carrusel debe circular de forma continua ou ter paradas duras. |
tocar | booleano | verdade | Indica se o carrusel debería admitir interaccións de desprazamento cara á esquerda/dereita nos dispositivos con pantalla táctil. |
Métodos
Métodos asíncronos e transicións
Todos os métodos da API son asíncronos e inician unha transición . Volven ao interlocutor en canto se inicia a transición pero antes de que remate . Ademais, ignorarase unha chamada de método nun compoñente en transición .
Consulte a nosa documentación de JavaScript para obter máis información .
.carousel(options)
Inicia o carrusel cunhas opcións opcionais object
e comeza a percorrer os elementos.
$('.carousel').carousel({
interval: 2000
})
.carousel('cycle')
Percorre os elementos do carrusel de esquerda a dereita.
.carousel('pause')
Impide que o carrusel circule por elementos.
.carousel(number)
Cicla o carrusel a un cadro particular (baseado en 0, semellante a unha matriz). Volve ao interlocutor antes de que se mostrase o elemento de destino (é dicir, antes de slid.bs.carousel
que se produza o evento).
.carousel('prev')
Ciclos ao elemento anterior. Volve á persoa que chama antes de que se mostrase o elemento anterior (é dicir, antes de slid.bs.carousel
que se produza o evento).
.carousel('next')
Ciclos ao seguinte elemento. Volve á persoa que chama antes de que se amose o seguinte elemento (é dicir, antes de slid.bs.carousel
que se produza o evento).
.carousel('dispose')
Destrúe o carrusel dun elemento.
.carousel('nextWhenVisible')
Non pases o carrusel ao seguinte cando a páxina non estea visible ou o carrusel ou o seu pai non estean visibles. Volve á persoa que chama antes de que se amose o seguinte elemento (é dicir, antes de slid.bs.carousel
que se produza o evento).
.carousel('to')
Cicla o carrusel a un cadro particular (baseado en 0, semellante a unha matriz). Volve á persoa que chama antes de que se amose o seguinte elemento (é dicir, antes de slid.bs.carousel
que se produza o evento).
Eventos
A clase de carrusel de Bootstrap expón dous eventos para conectarse á funcionalidade do carrusel. Ambos eventos teñen as seguintes propiedades adicionais:
direction
: A dirección na que se despraza o carrusel ("left"
ou ben"right"
).relatedTarget
: o elemento DOM que se está a colocar como elemento activo.from
: O índice do elemento actualto
: O índice do seguinte elemento
Todos os eventos do carrusel desenvólvense no propio carrusel (é dicir, no <div class="carousel">
).
Tipo de evento | Descrición |
---|---|
slide.bs.carrusel | Este evento desenvólvese inmediatamente cando slide se invoca o método de instancia. |
deslizar.bs.carrusel | Este evento desenvólvese cando o carrusel completou a súa transición de diapositivas. |
$('#myCarousel').on('slide.bs.carousel', function () {
// do something...
})
Cambiar a duración da transición
A duración da transición de .carousel-item
pódese cambiar coa $carousel-transition
variable Sass antes de compilar ou estilos personalizados se estás a usar o CSS compilado. Se se aplican varias transicións, asegúrate de que a transición de transformación estea definida primeiro (por exemplo, transition: transform 2s ease, opacity .5s ease-out
).