Např. modernifarma.cz
Nejdříve přidáme js soubory do kompilace (webpack.mix.js), jedná se o soubory glide.js a glide_extension.js (rozšíření obsahuje funkci CustomLength a VisibleClass).
Příklad HTML
{* Product slider *}
<div class="case-studies-slider" n:if="!empty($items)">
{* Product slider | Title *}
{* Product slider | js slider *}
<div class="case-studies-slider__content --content">
<div class="case-studies-slider__glide glide js--case-studies-slider --w-12">
<div class="glide__track" data-glide-el="track">
<div class="glide__slides">
{foreach $items as $item}
{include './case-study-item.latte', item => $item}
{/foreach}
</div>
<div class="glide__arrows">
<div class="glide__arrow glide__arrow--left"></div>
<div class="glide__arrow glide__arrow--right"></div>
</div>
</div>
</div>
</div>
</div>
Javascript
Funkce šipek lépe funguje v případě vlastního nastavení - viz. zde
const element = document.querySelector('.js--case-studies-slider');
if(element){
const currentCarousel = element.querySelector('.glide__slides');
const commonGlide = new Glide(element, {
type: 'slider',
startAt: 0,
perView: 1,
breakpoints: {
960: {
perView: 1,
peek: 0
},
},
peek: {
before: 0,
after: 0
},
touchRatio: 1,
useTransform: true,
gap: 13,
});
commonGlide.on(['mount', 'mount.after', 'run'], function () {
setTimeout(() => {
currentCarousel.style.transform = 'translate3d(' + Math.round(
currentCarousel.style.transform.substring(
currentCarousel.style.transform.indexOf('(') + 1, currentCarousel.style.transform.indexOf('px')
)
) + 'px, 0px, 0px) translateZ(0)';
}, 500);
});
commonGlide.mount({
CustomLength,
VisibleClass
});
if (element) {
let arrowLeft = element.querySelector(".glide__arrow--left");
let arrowRight = element.querySelector(".glide__arrow--right");
if (arrowLeft && arrowRight) {
arrowLeft.addEventListener("click", function (e) {
commonGlide.go("<");
});
arrowRight.addEventListener("click", function (e) {
commonGlide.go(">");
})
}
}
}