JSFiddle - React, Tailwind, and code Playground

by Praveen Kumar Purushothaman

HTML

<div id="wrapper">
    <div id="nav">
        <button id="prev">&lt;&lt;&lt;</button>
        <button id="next">&gt;&gt;&gt;</button>
    </div>
    <div id="mask">
        <div id="item1" class="item"> <a name="item1"></a>

            <div class="content">
                <img id="image1" src="http://placehold.it/350x150" alt="slot1" />
                <img id="image2" src="http://placehold.it/350x150" />
                <img id="image3" src="http://placehold.it/350x150" />
                <img id="image4" src="http://placehold.it/350x150" />
                <img id="image5" src="http://placehold.it/350x150" />
                <img id="image6" src="http://placehold.it/350x150" />
                <img id="image7" src="http://placehold.it/350x150" />
                <img id="image8" src="http://placehold.it/350x150" />
                <img id="image9" src="http://placehold.it/350x150" />
                <img id="image10" src="http://placehold.it/350x150" />
            </div>
        </div>
        <div id="item2" class="item">
            <div class="content">
                <img id="image1" src="http://placehold.it/350x150" alt="slot2" />
                <img id="image2" src="http://placehold.it/350x150" />
                <img id="image3" src="http://placehold.it/350x150" />
                <img id="image4" src="http://placehold.it/350x150" />
                <img id="image5" src="http://placehold.it/350x150" />
                <img id="image6" src="http://placehold.it/350x150" />
                <img id="image7" src="http://placehold.it/350x150" />
                <img id="image8" src="http://placehold.it/350x150" />
                <img id="image9" src="http://placehold.it/350x150" />
                <img id="image10" src="http://placehold.it/350x150" />
            </div>
        </div>
        <div id="item3" class="item">
            <div class="content">
                <img id="image1" src="http://placehold.it/350x150" alt="slot2" />
               ...

CSS

body {
    margin: 0;
}
#wrapper {
    width: 100%;
    height: 350px;
    /*position: absolute;*/
    top: 0;
    left: 0;
    background-color: white;
    overflow: hidden;
}
#nav button {
    position: absolute;
    top: 100px;
}
#prev {
    left: 40px;
}
#next {
    right: 40px;
}
#mask {
    width: 50000px;
    height: 100%;
    background-color: white;
}
.item {
    width: 1200px;
    height: 100%;
    float: left;
    background-color: white;
}
.content img {
    height: 100px;
    width: 17%;
    float:left;
    margin-right: 10px;
    margin-bottom: 10px;
}
.content {
    width: 50%;
    height: 220px;
    top: 20%;
    margin: auto;
    background-color: white;
    position: relative;
}
.content a {
    position: relative;
    top: -17px;
    left: 170px;
}
.selected {
    background: #fff;
    font-weight: 700;
}
.clear {
    clear:both;
}

JavaScript

$(document).ready(function () {
    var newItem = 0;
    var itemCount = $('.item').length;

    function shift(direction) {
        var $mask = $('#mask'),
            $items = $('.item'),
            currentItem = $mask.data('currentItem');

        if (currentItem === undefined) {
            currentItem = 0;
        }

        $mask.data('currentItem', newItem).animate({
            marginLeft: -newItem * $items.eq(0).width()
        }, (newItem == 0) ? 100 : 400);
    }

    $('#prev').click(function () {
        if (newItem === 0) {
            newItem = itemCount - 1;
        } else {
            newItem--;
        }
        return shift();
    });
    $('#next').click(function () {
        if (newItem === itemCount - 1) {
            newItem = 0;
        } else {
            newItem++;
        }
        return shift();
    });

    function resizePanel() {
        width = $(window).width();
        height = $(window).height();

        $('#wrapper, .item').css({
            width: width,
            height: height
        });
    }
       
    $(window).resize(function () {
        resizePanel();
    });
    resizePanel();
});