所以我试着用html,css和amp;jQuery和除了后退按钮之外的所有东西都在工作,不会循环,我已经花了很长时间做这件事了,我想知道是否有人有任何见解?http://jsfiddle.net/e2SKk/就是你可以看到代码的地方!我真的这么做是因为我认为这会给我一个学习更多的机会,但任何对代码布局或技术的批评都会有所帮助!
特别是这个代码似乎不起作用
else if(loopPrev==true){
sliderActive=true
$('.item-holder').css({
'left':clonePos
});
$('.item-holder').animate({
'left':holderPos+$('.slider').width()+'px'
},function(){
sliderActive=false;
});
};
顺便说一句,这只是一个片段,没有其他内容就没有多大意义!
var width = $('.slider').width();
$('.item').css({width:width});
var $holder = $('.item-holder').css({left:-width}).prepend($('.item:last'));
$('.prev').click(function(){
$holder.not(':animated').css({left:-2*width}).prepend($('.item:last')).animate({left:-width});
});
$('.next').click(function(){
$holder.not(':animated').css({left:0}).append($('.item:first')).animate({left:-width});
});
这就是完整的代码。
在上查看此操作http://jsfiddle.net/creativecouple/YPU2d/
这里有一个非常酷的小滑块!你说你是初学者?我想说你对jQuery了解得很好!同样在我忘记之前,回应你的评论:如果你在stackoverflow上发布了什么。。。它将被许多人观看:)。很少来这里却得不到任何帮助(尽管你可能并不总能得到答案)。
幸运的是,我发现了你的问题!就在这里:
else if(loopPrev==true){
sliderActive=true
$('.item-holder').css({
'left':clonePos
});
$('.item-holder').animate({
'left':holderPos+$('.slider').width()+'px'
},function(){
sliderActive=false;
});
};
您正在检查是否循环,将滑块设置为活动,将下一张幻灯片设置为索引中的最后一张幻灯片(然后同时将其推到最后一张),然后按正常方式设置动画。这会导致两个移动:首先移动到索引的后面,然后移动到holderPos+$('.slider').width()+'px'的值……因此会出现奇怪的行为。这应该会有所帮助:
else if(loopPrev==true){
sliderActive=true;
$('.item-holder').animate({
'left':"-1800px"
}, function(){
sliderActive=false;
})
};
值"-1800px"只是我预先计算的缓冲区中的最后一张幻灯片。。。您应该能够毫不费力地用clonePos变量替换它。
*编辑:您还应该将变量clonePos更改为如下所示:
var clonePos = '-'+($('.item').index()-1)*($('.slider').width());
当你在索引中的最后一张幻灯片和第一张幻灯片之间切换时,它将消除一个错误(如果你愿意的话,这是一个"平滑过渡")。
**
第二部分
**
为了实现无限滚动的效果,您需要在"左键按下"的动画调用中嵌入一个回调"推回"函数。现在已经很晚了,所以我还没有测试我即将编写的代码,但我很有信心它会为您工作。
else if(loopPrev==true){
sliderActive=true;
$('.item-holder').animate({
'left':clonePos
}, function(){
$(this).css('left':holderPos+$('.slider').width()+'px');
sliderActive=false;
})
};
如果你看一看,这与我最初给出的答案没有太大区别。我们所做的只是使用animate的回调函数,并添加了一个将位置滑动到原始索引位置的调用。同样,这是未经测试的,但其想法是.animate()将滑动到克隆,一旦完成,回调将用原始克隆交换克隆,然后停用滑块。
你离这儿不远!以下是animate函数的语义规则(试图帮助您理解回调的工作方式):
animate( params, [duration], [easing], [callback] )
- params是我们的左调用(在本例中为克隆幻灯片)
- 此处忽略持续时间
- 此处忽略宽松政策
- callback是我们的函数()调用,用于进行我们的小david-copperfield交换
希望这能有所帮助!