Untitled

 avatar
unknown
plain_text
a year ago
4.5 kB
11
Indexable
document.addEventListener('DOMContentLoaded', function() {
    const carouselImages = document.querySelectorAll('.carousel-images img');
    const carouselContainer = document.querySelector('.carousel-container');
    const carouselRect = carouselContainer.getBoundingClientRect();
    const centerX = carouselRect.left + (carouselRect.width / 2);

    const nonFeaturedImageWidth = 200;
    const featuredImageWidth = 400;
    const imageSpacing = 20;


    let beforeFeatured = []
    let afterFeatured = []
    let toBeFeatured;
    let featuredImage;

    let autoCycle;
    let direction = 0;

    function initializeCarousel() {
        let allImages = Array.from(carouselImages);

        if (allImages.length >= 7) {
            beforeFeatured = allImages.slice(0, 3);
            featuredImage = allImages[3];
            afterFeatured = allImages.slice(4);
        } else {
            alert("Not enough images in carousel! 7 needed current amount is: " + allImages.length);
            return;
        }
        
        document.querySelector('.carousel-next').addEventListener('click', next);
        document.querySelector('.carousel-prev').addEventListener('click', prev);
        featuredImage.classList.add('middle');
    }

    function moveCarousel() {
        //translate featured image
        let offset = direction * (imageSpacing + nonFeaturedImageWidth + (featuredImageWidth / 2));
        featuredImage.style.transform = `translateX(${offset}px)`;

        beforeFeatured.forEach((img, index) => {
            let offset = direction * (nonFeaturedImageWidth + imageSpacing);
            img.style.transform = `translateX(${offset}px)`;
        });

        afterFeatured.forEach((img, index) => {
            let offset = direction * (nonFeaturedImageWidth + imageSpacing);
            img.style.transform = `translateX(${offset}px)`;
        });
    }
    
    function next() {
        //shift returns first element || push adds to end
        afterFeatured.push(beforeFeatured.shift());
        beforeFeatured.push(featuredImage);
        toBeFeatured = afterFeatured.shift();
        
        featuredImage.classList.remove('middle');
        toBeFeatured.classList.add('middle');
        featuredImage = toBeFeatured;
        direction = -1;

        moveCarousel();
    }

    function prev() {
        //pop returns last element || unshift adds to beginning
        beforeFeatured.unshift(afterFeatured.pop());
        afterFeatured.unshift(featuredImage);
        toBeFeatured = beforeFeatured.pop();
        
        featuredImage.classList.remove('middle');
        toBeFeatured.classList.add('middle');
        featuredImage = toBeFeatured;
        direction = 1;

        moveCarousel();
    }

    function resetAutoCycle() {
        clearInterval(autoCycle);
        autoCycle = setInterval(next, 3000); // Change image every 3 seconds
    }

    initializeCarousel();
});


/*document.addEventListener('DOMContentLoaded', function() {
    const images = document.querySelectorAll('.carousel-images img');
    const totalImages = images.length;

    let beforeFeatured = [];
    let afterFeatured = [];
    let featuredImage;

    function initializeCarousel() {
        updateCarousel();
        resetAutoCycle();
    }

    function updateCarousel() {
        carouselBefore.innerHTML = beforeList.map(img => `<img src="${img}" alt="Before Image">`).join('');
        carouselAfter.innerHTML = afterList.map(img => `<img src="${img}" alt="After Image">`).join('');
        carouselFeatured.src = featuredImage;
    }

    function resetAutoCycle() {
        clearInterval(autoCycle);
        autoCycle = setInterval(next, 3000); // Change image every 3 seconds
    }

    function next() {
        beforeList.push(featuredImage);
        afterList.push(beforeList.shift());
        featuredImage = afterList.shift();

        updateCarousel();
        resetAutoCycle();
    }

    function prev() {
        afterList.unshift(featuredImage);
        beforeList.unshift(afterList.pop());
        featuredImage = beforeList.pop();

        updateCarousel();
        resetAutoCycle();
    }

    document.querySelector('.carousel-next').addEventListener('click', next);
    document.querySelector('.carousel-prev').addEventListener('click', prev);

    initializeCarousel();
});*/

Editor is loading...
Leave a Comment