Glide

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(">");
                })
            }
        }
    }

Nevíte si rady?
Neváhejte se zeptat

Nevíte si rady nebo potřebujete něco konzultovat? Nápovědu stále zdokonalujeme na základě vašich požadavků a postřehů. Uvádíme co nejvíce možných variant, které používáme na řešení jednotlivých částí webu, mějte ale na paměti, že projekty řešíme individuálně na základě konkrétních potřeb.

Nádražní 876
560 02 Česká Třebová

honza.cech@czechgroup.cz

+420 774 201 483

*
*