Es gibt zwei Möglichkeiten, einen unendlichen Schieberegler zu verwenden.
Zuerst, wenn die gezeigte links abbiegen und verschwinden, sollten Sie es an den übergeordneten Knoten anhängen.
Aber auf diese Weise sollten Sie .slides
genug Breite halten, um mehr li (s) zu halten, wenn Zeit rutschen.
// CSS
#slider .slides {
display: block;
height: 400px;
width: 1000000px; /*enough width to keep slides*/
margin: 0;
padding: 0;
}
// JS
setInterval (function(){
$(slides).animate({'margin-left': '-=266.5px'}, 1000, function(){
$('.slide').eq(currentSlide).clone().appendTo($('#slider .slides'))
// Maybe you need to give .slides new width here
currentSlide++
});
}, 3000);
Auf diese Weise könnte man meinen sloution verstehen, aber der Code vielleicht ein wenig hässlich, also werde ich Sie das nächste Plan geben.
Zweitens, verwenden Sie einfach die li (s) Sie bleiben infinite Slider.
// HTML
// use .slide1 .slide2 be more clear
<ul class="slides">
<li class="slide slide1">1</li>
<li class="slide slide2">2</li>
</ul>
// CSS
#slider .slides {
display: block;
height: 400px;
width: 566px; /*total width of both slides*/
margin: 0;
padding: 0;
}
.slide1 {
background-color: red;
height: 400px;
width: 266.5px;
}
.slide2 {
background-color: blue;
height: 400px;
width: 266.5px;
}
// JS
setInterval (function(){
$(slides).animate({'margin-left': '-=266.5px'}, 1000, function(){
$('.slide').eq(0).appendTo($('#slider .slides'))
$('#slider .slides').css('margin-left', 0)
});
}, 3000);
Was ich tue nur, wenn die Animation beendet:
- machen den disapper in linke an den Schwanz der Eltern.
- dann machen
margin-left: 0
des Mutter
so sieht es aus wie die Schleife unendlich hält.
Aber Vorsicht:
In der Callback-Funktion von .animate()
, Sie $('.slide')
-slide
verwenden sollten, die Sie vor gespeichert. Weil der jQuery-Selektor im Speicher von der Wahrheit abweicht.
Hier wird der vollständige Code ist:
$(document).ready(function(){
var slider = $('#slider'),
slides = $('#slider .slides'),
slide = $('.slide'),
currentSlide = 0;
setInterval (function(){
$(slides).animate({'margin-left': '-=266.5px' }, 1000, function(){
$('.slide').eq(0).appendTo($('#slider .slides'))
$(slides).css('margin-left', 0)
});
}, 3000);
});
#slider {
position: relative;
height: 400px;
width: 266.5px;
overflow: hidden; /*hides overflow of child elements*/
margin-top: 100px;
margin-bottom: 100px;
margin-left: 100px;
}
#slider .slides {
display: block;
height: 400px;
width: 566px; /*total width of both slides*/
margin: 0;
padding: 0;}
#slider .slide {
list-style-type: none;
float: left;
}
.slide1 {
background-color: red;
height: 400px;
width: 266.5px;
}
.slide2 {
background-color: blue;
height: 400px;
width: 266.5px;
}
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
<body>
<div id="slider">
<ul class="slides">
<li class="slide slide1">1</li>
<li class="slide slide2">2</li>
</ul>
</div>
</body>
Dank Tomlsion. Ich schätze deine Hilfe sehr ! –