JSFiddle - React, Tailwind, and code Playground

by ponyspy

HTML

<div class="column infinity one">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>			
</div>
<div class="column infinity two">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>			
</div>

<div class="column infinity three">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>			
</div>

CSS

::-webkit-scrollbar {
    display: none;
}

.item {
    font-size: 48px;
    text-align:  center;
    height: 60px;
    background-color: white;
    /* margin-bottom: 10px; */
		background-position: 50% 50%;
		background-repeat: repeat-y;
		background-size: cover;
}

html, body, .column {
    height: 100%;
}

.column {
    width: 175px;
    overflow: scroll;
    float: left;
    margin-right: 10px;
}

.one .item {
		background-image:url("http://ecx.images-amazon.com/images/I/31-X-et%2BGgL.jpg");
}

.two .item {
		background-image:url("http://www.cprw.com/wp-content/uploads/2011/09/A.jpg");
}

.three .item {
		background-image:url("http://vignette2.wikia.nocookie.net/survivor-org/images/d/d4/H.jpg/revision/latest?cb=20130927203525");
}

JavaScript

var parent = $('.infinity');
var max = parent[0].scrollHeight - parent[0].offsetHeight - 20;

parent.on('scroll', function(event) {
    var s = $(this).scrollTop(),
        f = $('>:first', parent),l = $('>:last', parent);
    if(s > max) {f.appendTo(parent); parent.scrollTop(s - f.height())}
    if(s < 5) {l.prependTo(parent);parent.scrollTop(s + l.height()) }
}).scrollTop(5);

var position = 50;
parent.on('scroll', function() {
	//position = parent.scrollTop() * 300 / parent.height();
	position = position - 1;
	if (position <= 0) position = 0;
	
	$('.item').css('background-position', '50% ' + position + '%');
});

parent.on('scroll', function() {
	position = parent.scrollTop();
	parent.not(this).scrollTop(position);
});