需求:左右切换自动无缝滚动如下图
代码:
HTML:
<div class="flex-viewport clearfix">
<div class="slide">
<ul id="silde-show">
<li>
<img src="img/cooperation1.png">
<span>新加坡香港综合肿瘤中心</span>
</li>
<li>
<img src="img/cooperation2.png">
<span>香港心汇心脏及脑血管病检查预防中心</span>
</li>
<li>
<img src="img/cooperation3.png">
<span>香港养和医院</span>
</li>
<li>
<img src="img/cooperation4.png">
<span>香港卓健医疗</span>
</li>
<li>
<img src="img/cooperation1.png">
<span>香港卓健医疗1</span>
</li>
<li>
<img src="img/cooperation2.png">
<span>香港卓健医疗2</span>
</li>
</ul>
</div>
<ul class="direction-nav">
<li><a href="javascript:void(0)" class="prev sprite">Previous</a></li>
<li><a href="javascript:void(0)" class="next sprite">Next</a></li>
</ul>
</div>
css:
.flex-viewport {
overflow: hidden;
margin-top: 10px;
}
.slide {
position: relative;
height: 163px;
overflow: hidden;
width: 1138px;
}
.slide ul {
margin-left: -12px;
position: absolute;
width: 3000px;
}
.slide li {
float: left;
position: relative;
margin-left: 12px;
}
.slide li img {
width: 275px;
height: 160px;
max-width: 100%;
}
.slide li span {
position: absolute;
display: block;
background: #25aa77;
bottom: 0;
left: 0;
width: 275px;
height: 32px;
font-size: 16px;
line-height: 30px;
text-align: center;
color: #fff;
}
.direction-nav li a{
display: block;
cursor: pointer;
position: absolute;
width: 50px;
height: 80px;
top: 50%;
text-indent: -9999px;
background-position: -500px 0px;
}
.direction-nav li .prev {
left: 0;
}
.direction-nav li .next {
right: 4px;
background-position: -452px 0px;
}
用的是jq3.0.0
JQ:
var silde = $("#silde-show"),
sildeLi = $("#silde-show li"),
next = $(".direction-nav .next"),
prev = $(".direction-nav .prev"),
len = $("#silde-show>li").length,
liWidth= parseInt($("#silde-show>li").width()) + parseInt($("#silde-show>li").css("marginLeft")),
index = 0,
clone = $("#silde-show li").clone();
function move(){
if(index == -1){
sildeLi.prepend(clone);
silde.animate({left: -(len - 4) * liWidth},500,function(){
sildeLi.remove(clone);
});
index = len - 4;
}
if(index > len - 4){
sildeLi.append(clone);
silde.animate({left: 0},500,function(){
sildeLi.remove(clone);
});
index = 0;
}
silde.stop().animate({left: -index * liWidth }, 500);
}
prev.on("click",function(){
index--;
move();
});
next.on("click",function(){
index++;
move();
});
问题:自己写的jQuery无缝滚动,为何无法无缝滚动?
思路:当鼠标点击在第一个时候(index = 0 )时候,增加复制的clone,然后把left定位最后一个后移除clone。当鼠标点击最后一个(len-4)时候,增加复制clone,然后把left定位第一个后移除clone
没有去试你的代码。
可以提供一个之前写循环轮播的思路:
几个轮播页排一排,都
float: left
。点左按钮,最左的那个轮播页动画至
margin-left: -(slideItemWidth)
,就形成向左轮播的效果;动画结束后,将第一个元素直接
append
到最后,恢复margin-left
点右按钮,以上逆向过程即可