JSFiddle - React, Tailwind, and code Playground

by Apple Ilagan

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.cycle2/20130801/jquery.cycle2.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.cycle2/20130409/jquery.cycle2.carousel.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js"></script>
<div class='main'>
    <div class="home-slideshow">
        <img src="http://placehold.it/950x250" alt="">
        <img src="http://placehold.it/950x251" alt="">
    </div>
    <div class="caro">
        <img src="http://placehold.it/300x300" alt="">
        <img src="http://placehold.it/300x301" alt="">
        <img src="http://placehold.it/300x302" alt="">
        <img src="http://placehold.it/300x303" alt="">
        <img src="http://placehold.it/300x304" alt="">
        <img src="http://placehold.it/300x305" alt="">
    </div>
</div>

CSS

.main {
    max-width: 950px;
    margin: auto;
}
.home-slideshow {
    margin-bottom: 150px;
}
.home-slideshow img {
    width: 100%;
}

JavaScript

function buildCarousel(visibleSlides) {
    $('.caro').cycle({
        fx: 'carousel',
        speed: 600,
        slides: 'img',
        carouselVisible: visibleSlides,
        carouselFluid: true
    });
}

function buildSlideshow() {
    $('.home-slideshow').cycle({
        fx: 'fade',
        slides: 'img',
        timeout: 12000
    });
}

function initCycle() {
    var width = $(document).width();
    var visibleSlides = 5;

    if (width < 400) {
        visibleSlides = 1
    } else if (width < 700) {
        visibleSlides = 3
    } else {
        visibleSlides = 5
    };

    buildSlideshow();
    buildCarousel(visibleSlides);
}

function reinit_cycle() {
    var width = $(window).width();
    var destroyCarousel = function() {
        $('.caro').cycle('destroy');
    }

    if (width < 400) {
        destroyCarousel();
        reinitCycle(1);
    } else if (width > 400 && width < 700) {
        destroyCarousel();
        reinitCycle(3);
    } else {
        destroyCarousel();
        reinitCycle(5);
    }
}

function reinitCycle(visibleSlides) {
    buildCarousel(visibleSlides);
}
var reinitTimer;
$(window).resize(function () {
    clearTimeout(reinitTimer);
    reinitTimer = setTimeout(reinit_cycle, 100);
});

$(document).ready(function () {
    initCycle();
});