JSFiddle - React, Tailwind, and code Playground
by ponyspy
HTML
<div class="columns_block">
<div class="column">
<div class="c_year">2013</div>
<div class="items_group" year="2013">
<div class="items_group_year">- 2013 -</div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="items_group" year="2012">
<div class="items_group_year">- 2012 -</div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="items_group" year="2011">
<div class="items_group_year">- 2011 -</div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
<div class="column">
<div class="c_year">2013</div>
<div class="items_group" year="2013">
<div class="items_group_year">- 2013 -</div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="items_group" year="2012">
<div class="items_group_year">- 2012 -</div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="items_group" year="2011">
<div class="items_group_year">- 2011 -</div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
<div class="column">
<div class="c_year">2013</div>
</div>
<div class="column">
<div class="c_year">2013</div>
</div>
</div>
<div class="res"></div>
CSS
.c_years {
overflow: hidden;
}
.c_year {
float: left;
width: 100px;
height: 30px;
margin-right: 10px;
background-color: blue;
position: fixed;
}
.columns_block {
overflow: hidden;
}
.column {
float: left;
overflow: auto;
width: 100px;
height: 230px;
margin-right: 10px;
background-color: red;
}
.items_group_year {
margin-bottom: 10px;
text-align: center;
}
.item {
width: 100px;
background-color: green;
height: 50px;
margin-bottom: 10px;
}
JavaScript
var chronicleSlider = {
index: undefined,
items: undefined,
getItems: function () {
chronicleSlider.items = $(this).children('.items_group');
chronicleSlider.index = $(this).index();
},
getSlide: function () {
chronicleSlider.items.each(function() {
var $this = $(this);
$this.offset().top <= 15
? $('.c_year').eq(chronicleSlider.index).text($this.attr('year'))
: false;
});
},
getUpdate: function () {
var items_group = $('<div/>', {'class': 'items_group'});
}
}
$('.column').on({
mouseover: chronicleSlider.getItems,
scroll: chronicleSlider.getSlide
});