JSFiddle - React, Tailwind, and code Playground
HTML
<div class="slider">
<button class="l" onClick="showPage(--pageCurrent);"><<</button>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<button class="r" onClick="showPage(++pageCurrent);">>></button>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
var pageCurrent = 1;
var pageCount = Math.ceil($(".slider div").length / 4);
function showPage(pageNumber){
if (pageNumber > pageCount) {
pageNumber = pageCurrent = 1;
};
if (pageNumber <= 0) {
pageNumber = pageCurrent = pageCount;
};
begin = (pageNumber - 1) * 4;
end = pageNumber * 4;
$(".slider div").each(function(i){
( i >= begin && i < end && (this.style.display = "block") ) || (this.style.display = "none");
});
}
function init(pageNumber){
$(".slider").css("overflow", "hidden");
// Выстроить все блоки зигзагом.
$(".slider div").each(function(i){
group = Math.floor(i / 4);
groupNumber = i - group * 4;
css = {};
if (groupNumber == 0) {
css["top"] = css["left"] = 10;
} else if (groupNumber == 1) {
css["top"] = 10;
css["left"] = 100;
} else if (groupNumber == 2) {
css["top"] = 100;
css["left"] = 10;
} else if (groupNumber == 3) {
css["top"] = 100;
css["left"] = 100;
}
css["position"] = "absolute";
css["left"] = group * 190 + css["left"];
$(this).css(css);
});
}
//init(1);
showPage(1);
</script>
CSS
* {
margin: 0;
padding: 0;
border: 0;
}
.slider {
height:180px;
width: 180px;
background: red;
padding: 10px 0 0 10px;
position: relative;
overflow: hidden;
}
.slider div {
margin: 0 10px 10px 0;
height: 80px;
width: 80px;
background: green;
float: left;
}
.slider button {
display: block;
text-align: center;
position: absolute;
top:0;
left:0;
height: 190px;
visibility: hidden;
z-index: 2;
background-color: rgba(255,255,255, 0.4);
}
.slider button.r {
left: auto;
right: 0;
}
.slider:hover button {
visibility: visible;
}