更換.fadeOut/.fadeIn我們應該使用一個無序列表(<ul>
)首先改了一下結構:
<div id="slider">
<ul>
<li><img src="http://placehold.it/750x250/75c8c8/fff&text=1"></li>
<li><img src="http://placehold.it/750x250/b775c8/fff&text=2"></li>
<li><img src="http://placehold.it/750x250/c8bd75/fff&text=3"></li>
<li><img src="http://placehold.it/750x250/c87575/fff&text=4"></li>
</ul>
</div>
然後我們應該使用setTimeout()
而不是一個的setInterval所以可以肯定,一旦動畫完成下一張幻燈片啓動:
var s = 0,
t = 2000,
timer;
$(document).on('ready', slide);
function slide(){
timer = setTimeout(slider, t);
}
function slider(){
s++;
var sld = $('#slider li'),
imgs = sld.length;
if(s == imgs){
s = 0;
}
sld.eq(s-1).animate({'left': '750px'}, t, function() {
sld.eq(s).animate({'left': '0px'}, t, function() {
speed = setTimeout(slider, t);
});
});
}
這種方式,我們函數再次滑動肖像權,那麼下一個左最後調用`滑塊()超時。
爲了使這項工作,我們需要改變的CSS代碼:
#slider {
height:250px;
width:750px;
margin:20px auto;
}
#slider ul {
width: 100%;
height: 100%;
list-style: none;
overflow: hidden;
border: 1px solid grey;
position: relative;
}
#slider ul li {
position: absolute;
left: 750px;
}
#slider ul li:first-child {
left: 0px;
}
在這裏你可以看到一個DEMO
這是你想要達到的目標:[** ** FIDDLE ](http://jsfiddle.net/Dim13i/EVSkT/9/)? – Dim13i
是的,就是這樣,但沒有淡出/在只是滑出/在 –
我也希望圖像不能在黑色邊框之外看到:http://jsfiddle.net/EVSkT/11/ –