Reputation: 83
I'm having trouble in jquery horizontal scroll animation. i'm rendering all of list data from database. it should visible only 4 item always. but on scroll its not showing hidden items and not showing 4 items. and also scroll stops after single scroll i want it to scroll until it reach end of list. how to solve please.
[Style]
* {
margin: 0;
padding: 0;
list-style: none;
}
#content {
width: 500px;
}
.scroller {
border: 1px solid #f00;
height: 100px;
width: auto;
overflow: hidden;
}
.scroller li {
float: left;
}
.scroller li {
width: 24.5%;
height: 100%;
text-align: center;
border: 1px solid #444;
}
.item {
background: green;
position: relative;
}
[html]
<div id="content">
<ul class="scroller">
<li class="item">1</li>
<li class="item">2</li>
<li class="item">3</li>
<li class="item">4</li>
<li class="item">5</li>
<li class="item">6</li>
</ul>
<a href="javascript:void(0);" id="prev">«</a>
<a href="javascript:void(0);" id="next">»</a>
</div>
[jquery]
$(document).ready(function () {
var $item = $('li.item'),
visible = 4,
index = 0,
endIndex = ($item.length / visible) - 1;
$('#next').click(function () {
if (index < endIndex) {
index++;
$item.animate({ 'left': '-=100px' });
}
});
$('#prev').click(function () {
if (index > 0) {
index--;
$item.animate({ 'left': '+=100px' });
}
});
});
Upvotes: 0
Views: 272
Reputation: 1584
Try this snippet. I changed your css and code just a bit
$(document).ready(function() {
var $item = $('li.item'),
visible = 4,
index = 0,
endIndex = ( $item.length - visible ) -1;
$('#content').css('width', visible * 100 + 'px');
$('#next').click(function(){
if (index <= endIndex) {
index++;
$item.animate({'left':'-=100px'});
}
});
$('#prev').click(function(){
if (index > 0) {
index--;
$item.animate({'left':'+=100px'});
}
});
});
* {margin:0;padding:0;list-style: none;}
#content{width:500px;}
.scroller{border:1px solid #f00;height:100px;width:auto;overflow:hidden; display: -webkit-box;}
.item{
background:green;
position:relative;
float:left;
width:98px;
height:100%;
text-align:center;
border:1px solid #444;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="content">
<ul class="scroller">
<li class="item">1</li>
<li class="item">2</li>
<li class="item">3</li>
<li class="item">4</li>
<li class="item">5</li>
<li class="item">6</li>
<li class="item">7</li>
<li class="item">8</li>
<li class="item">9</li>
<li class="item">10</li>
</ul>
<a href="javascript:void(0);" id="prev">«</a>
<a href="javascript:void(0);" id="next">»</a>
</div>
Upvotes: 1