JSFiddle - React, Tailwind, and code Playground

by Jordan Sayner

HTML

<div>
    <input type="button" id="prev" value="<" />
    <input type="button" id="next"value=">" />
    <div id="bar">
        <span>
            <ul id="list">
                <li>1</li> <li class="selected">2</li> <li>3</li>
                <li>4</li> <li>5</li> <li>6</li>
                <li>7</li> <li>8</li> <li>9</li>
                <li>1</li> <li>2</li> <li>3</li>
                <li>4</li> <li>5</li> <li>6</li>
                <li>7</li> <li>8</li> <li>9</li>
                <li>1</li> <li>2</li> <li>3</li>
                <li>4</li> <li>5</li> <li>6</li>
                <li>7</li> <li>8</li> <li>9</li>
            </ul>
        </span>
    </div>
</div>

CSS

div#bar
{
    overflow: hidden;
    margin-left: 20px;
    margin-right: 20px;
}
div
{
    position:relative;
}
span
{
    overflow:visible;
    display:block;
}
ul
{
    display:inline-block;
    white-space: nowrap;
    overflow-x: visible;
    overflow-y: visible;
}
li
{
    display: inline-block;
}
input#prev
{
    left: -10px;
    position: absolute;
}
input#next
{
    right: -10px;
    position: absolute;
    z-index: 2;
}
/* decorations. */
ul, span
{
    margin: 0px;
    padding: 0px;
}
span
{
    border: 1px solid blue;
    border-radius: 4px;
}
li
{
    list-style: none;
    padding: 2px;
    background: #000;
    color: #FFF;
    border: 1px solid cyan;
    border-top-style: none;
    border-radius: 2px;
    margin: 2px;
    position: relative;
    top: -3px;
    box-shadow: 2px 2px 2px black;
}
li:before, li:after
{
    font-weight: bold;
    font-size: larger;
    content: "::";
}
li.selected
{
    background: #FFF;
    color: #000;
}

JavaScript

jQuery.fn.cleanWhitespace = function() {
    textNodes = this.contents().filter(

    function() {
        return (this.nodeType == 3 && !/\S/.test(this.nodeValue));
    }).remove();
    return this;
}
jQuery("ul#list").cleanWhitespace();
jQuery("input#next").click(function() {
    jQuery("ul#list").append(jQuery("ul#list li:first-child"));
});

jQuery("input#prev").click(function() {
    jQuery("ul#list").prepend(jQuery("ul#list li:last-child"));
});

jQuery("li").click(function(){ 
    jQuery(this).siblings().removeClass("selected");
    jQuery(this).addClass("selected");
});