sverebom
Vice Admiral
- Registriert
- Aug. 2004
- Beiträge
- 6.314
Situation: Ich bastele ein kleines automatisches Karussel. Dafür verwende ich eine einfache Liste, die sechs mal breiter ist als als ein einzelnes Listen-Element:
Mit jquery/JavaScript verschiebe ich die Liste einfach nach einem gewissen Intervall um die Breite eines Listen-Elements nach links. Um eine nahtlose Wiederholung zu erreichen, wird das erste Listen-Element dupliziert und am Ende der Liste als sechstes Listen-Element eingefügt.
Die Idee und das Problem: Wenn die Animation beim letzten Listen-Element angekommen ist, dass ja ein Duplikat des ersten Listen-Elements ist, soll die Animation einfach wieder an den Anfang der Liste springen und erneut durch die Liste laufen, und das ohne Animation, so dass der Eindruck entsteht, das Karussel würde endlos rotieren.
Wie kriege ich es nun hin, dass die Liste einfach wieder an den Anfang springt? Es muss doch möglich sein, innerhalb eines DOM-Elements zu einem Anker zu springen.
Mein Lösungansatz treibt mit Sicherheit dem einen oder anderen Tränen in die Auge, aber mir reicht diese Lösung für den Anfang. Ich werde mich schon noch weiter damit auseinander setzen, aber jetzt fehlt mir die Zeit, etwas ganz Neues anzufangen. Es funktioniert ja auch soweit, nur der Sprung an den Anfang der Liste fehlt mir noch.
HTML:
<ul id="carouselContent" class="carousel">
<li id="carouselItem_1"><a title="Carousel Dummy 1"><img src="style/carousel_1.jpg" width="736" height="245" alt="Carousel Dummy 1" /></a></li>
<li id="carouselItem_2"><a title="Carousel Dummy 2"><img src="style/carousel_2.jpg" width="736" height="245" alt="Carousel Dummy 2" /></a></li>
<li id="carouselItem_3"><a title="Carousel Dummy 3"><img src="style/carousel_3.jpg" width="736" height="245" alt="Carousel Dummy 3" /></a></li>
<li id="carouselItem_4"><a title="Carousel Dummy 4"><img src="style/carousel_4.jpg" width="736" height="245" alt="Carousel Dummy 4" /></a></li>
<li id="carouselItem_5"><a title="Carousel Dummy 5"><img src="style/carousel_5.jpg" width="736" height="245" alt="Carousel Dummy 5" /></a></li>
</ul>
Mit jquery/JavaScript verschiebe ich die Liste einfach nach einem gewissen Intervall um die Breite eines Listen-Elements nach links. Um eine nahtlose Wiederholung zu erreichen, wird das erste Listen-Element dupliziert und am Ende der Liste als sechstes Listen-Element eingefügt.
Die Idee und das Problem: Wenn die Animation beim letzten Listen-Element angekommen ist, dass ja ein Duplikat des ersten Listen-Elements ist, soll die Animation einfach wieder an den Anfang der Liste springen und erneut durch die Liste laufen, und das ohne Animation, so dass der Eindruck entsteht, das Karussel würde endlos rotieren.
Wie kriege ich es nun hin, dass die Liste einfach wieder an den Anfang springt? Es muss doch möglich sein, innerhalb eines DOM-Elements zu einem Anker zu springen.
Code:
function rotate() {
$('#carouselContent li:first').clone().appendTo('#carouselContent');
setInterval( function(carouselIndex) {
target = '-' + global.carouselIndex + '00%';
if ( global.carouselIndex == 5 ) {
$('#carouselContent').animate({ left: target });
// Hier irgendwo soll die Liste wieder an den Anfang springen!
global.carouselIndex = 0;
} else {
$('#carouselContent').animate({ left: target });
global.carouselIndex++;
};
}, 1000);
};
Mein Lösungansatz treibt mit Sicherheit dem einen oder anderen Tränen in die Auge, aber mir reicht diese Lösung für den Anfang. Ich werde mich schon noch weiter damit auseinander setzen, aber jetzt fehlt mir die Zeit, etwas ganz Neues anzufangen. Es funktioniert ja auch soweit, nur der Sprung an den Anfang der Liste fehlt mir noch.