Carousel
Un componente di presentazione per scorrere elementi, immagini o diapositive di testo. Include anche il supporto per i controlli e gli indicatori precedente/successivo ed i dots di indicazione posizione.
Implementazione
Il plugin utilizzato è Splide.
Splide non è incluso nel bundle, pertanto quando occorre usare il componente Carousel è necessario includere i file CSS e JS della libreria all’interno del proprio progetto. I file sono disponibili sulla CDN.
- linkare il file CSS
splide-core.min.css
nella head del progetto, prima del CSS di Bootstrap Unito. - caricare il file JS
splide.min.js
nel blocco degli script a fondo pagina.
<link rel="stylesheet" href="https://cdn.unito.it/unito-theme/v2/css/splide-core.min.css">
<script src="https://cdn.unito.it/unito-theme/v2/js/splide.min.js" crossorigin="anonymous"></script>
Carousel con Card Articolo
div it-carousel-wrapper
: viene aggiunta la classe it-carousel-landscape-abstract-three-cols
che attiva la visualizzazione a 3 colonne su desktop.
<div class="it-carousel-wrapper it-carousel-landscape-abstract-three-cols splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card">
<div class="card-body">
<div class="category-top">
<a class="category" href="#">Category</a>
<span class="data">10/12/2018</span>
</div>
<h5 class="card-title big-heading">1 Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<p class="card-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<span class="card-signature">di Federico De Paolis</span>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card">
<div class="card-body">
<div class="category-top">
<a class="category" href="#">Category</a>
<span class="data">10/12/2018</span>
</div>
<h5 class="card-title big-heading">2 Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<p class="card-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<span class="card-signature">di Federico De Paolis</span>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card">
<div class="card-body">
<div class="category-top">
<a class="category" href="#">Category</a>
<span class="data">10/12/2018</span>
</div>
<h5 class="card-title big-heading">3 Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<p class="card-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<span class="card-signature">di Federico De Paolis</span>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card">
<div class="card-body">
<div class="category-top">
<a class="category" href="#">Category</a>
<span class="data">10/12/2018</span>
</div>
<h5 class="card-title big-heading">4 Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<p class="card-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<span class="card-signature">di Federico De Paolis</span>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
Carousel con Card ed immagine in evidenza
div it-carousel-wrapper
: viene aggiunta la classe it-carousel-landscape-abstract
che attiva la visualizzazione a 2 colonne in Flex.
<div class="it-carousel-wrapper it-carousel-landscape-abstract splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<a href="#">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine1" title="img title" alt="imagealt"></div>
</div>
</div>
</a>
<div class="it-text-slider-wrapper-outside">
<div class="card-wrapper">
<div class="card">
<div class="card-body">
<div class="category-top">
<a class="category" href="#">Category</a>
<span class="data">10/12/2018</span>
</div>
<h5 class="card-title big-heading">1 Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<p class="card-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<span class="card-signature">di Federico De Paolis</span>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<a href="#">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine1" title="img title" alt="imagealt"></div>
</div>
</div>
</a>
<div class="it-text-slider-wrapper-outside">
<div class="card-wrapper">
<div class="card">
<div class="card-body">
<div class="category-top">
<a class="category" href="#">Category</a>
<span class="data">10/12/2018</span>
</div>
<h5 class="card-title big-heading">2 Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<p class="card-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<span class="card-signature">di Federico De Paolis</span>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
Carousel con Card ed immagine in alto
div it-carousel-wrapper
: viene aggiunta la classe it-carousel-landscape-abstract-three-cols
per la visualizzazione a 3 colonne.
<div class="it-carousel-wrapper it-carousel-landscape-abstract-three-cols splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card card-img no-after">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine1" title="img title" alt="imagealt"></div>
</div>
</div>
<div class="card-body">
<h5 class="card-title pb-4">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card card-img no-after">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine2" title="img title" alt="imagealt"></div>
</div>
</div>
<div class="card-body">
<h5 class="card-title pb-4">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card card-img no-after">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine3" title="img title" alt="imagealt"></div>
</div>
</div>
<div class="card-body">
<h5 class="card-title pb-4">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card card-img no-after">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine4" title="img title" alt="imagealt"></div>
</div>
</div>
<div class="card-body">
<h5 class="card-title pb-4">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</h5>
<a class="read-more" href="#">
<span class="text">Leggi di più <span class="sr-only">Lorem ipsum dolor sit amet, consectetur adipiscing elit…</span></span>
<svg class="icon">
<use href="./dist/svg/sprite.svg#it-arrow-right"></use>
</svg>
</a>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
Carousel con Fullscreen di Immagini
- viene aggiunta la classe
it-carousel-landscape-abstract-three-cols
per la formattazione colonnare - viene aggiunta la classe
it-full-carousel
per la visualizzazione a tutto schermo (orizzontale) - viene aggiunta la classe
it-big-img
per indicare che l’immagine contenuta è di tipo grande
<div class="it-carousel-wrapper it-carousel-landscape-abstract-three-cols it-full-carousel it-big-img splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card card-img no-after">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine1" title="img title" alt="imagealt"></div>
</div>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card card-img no-after">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine2" title="img title" alt="imagealt"></div>
</div>
</div>
</div>
</div>
</div>
</li>
<li class="splide__slide">
<div class="it-single-slide-wrapper">
<div class="card-wrapper">
<div class="card card-img no-after">
<div class="img-responsive-wrapper">
<div class="img-responsive">
<div class="img-wrapper"><img src="https://via.placeholder.com/480x360/ebebeb/808080/?text=Immagine3" title="img title" alt="imagealt"></div>
</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
Accessibilità
Splide segue le indicazioni del W3C per l’implementazione di un carousel accessibile.
Il plugin, attraverso l’opzione i18n
, offre la possibilità di tradurre le aria-label
utilizzate per gli elementi di interfaccia.
Bootstrap Italia fornisce le label già tradotte in italiano come segue:
- prev: ‘Slide precedente’
- next: ‘Slide successiva’
- first: ‘Vai alla prima slide’
- last: ‘Vai all’ultima slide’
- slideX: ‘Vai alla slide %s’
- pageX: ‘Vai a pagina %s’
- play: ‘Attiva autoplay’
- pause: ‘Pausa autoplay’
Per tradurre le label in altre lingue è sufficiente utilizzare l’attributo opzionale data-splide
sul div it-carousel-wrapper splide
come nell’esempio seguente:
<div class="it-carousel-wrapper it-carousel-landscape-abstract-three-cols splide" data-splide='{"i18n":{"slideX":"Go to slide %s","pageX":"Go to page %s"}}>