KarussellDie Grundidee ist: Im großen Container befindet sich ein sehr langer Tisch, der ein ganzzahliges Vielfaches der Breite des Containers beträgt. Ändern Sie dann das linke Attribut im Listenstil, um ein Gleiten nach links und rechts zu erreichen. Dieser Artikel zielt darauf ab , das Gleiten von fünf Bildern zu steuern , aber in HTML werden sieben Bilder verwendet. Das erste und das letzte Bild werden wiederholt. Der Grund wird weiter unten erklärt. Indem wir dem Container das Attribut overflow:hidden zuweisen, können wir sicherstellen, dass nur ein Bild in der Größe des Ansichtsfensters des Containers angezeigt wird. <Text> <div id="Behälter"> /*Behälter*/ <div id="wrap" style="left: -400px;"> /*Liste der Bilder*/ <div Klasse="Artikel Artikel5">l5</div> <div Klasse="Artikel Artikel1">1</div> <div Klasse="Artikel Artikel2">2</div> <div Klasse="Artikel Artikel3">3</div> <div Klasse="Artikel Artikel4">4</div> <div Klasse="Artikel Artikel5">5</div> <div Klasse="Artikel Artikel1">r1</div> </div> </div> <div id="key"> /*Schaltfläche festlegen*/ <div id="list"> /*Klicken Sie auf den kleinen Kreis, um zu einem festen Bild zu wechseln*/ <div Klasse="btn1 btnNum">1</div> <div Klasse="btn2 btnNum">2</div> <div Klasse="btn3 btnNum">3</div> <div class="btn4 btnNum">4</div> <div class="btn5 btnNum">5</div> </div> <div id="btn"> /*Buttons zum Umschalten nach links und rechts*/ <button class="links">←</button> <button class="rechts">→</button> </div> </div> </body> CSS: Sie können die Flex-Eigenschaft für die Wrap-Liste festlegen, um die Bilder in einer Zeile anzuzeigen. Andere Layouts können entsprechend Ihren Anforderungen erstellt werden. Beachten Sie, dass der Inline-Stil links im Knoten mit der ID „wrap“d festgelegt ist. Denn wenn ich zwischen Bildern wechsle, verwende ich das linke Attribut. Wenn ich das linke Attribut nicht festlege, kann ich das linke Attribut beim Festlegen des Stils im DOM nicht finden. <Stil> #Behälter { Breite: 400px; Höhe: 300px; Rand: 8px rgb(8, 8, 8) durchgezogen; Rand: 0 automatisch; Rand oben: 150px; Überlauf: versteckt; Position: relativ; } #wickeln { Breite: 2800px; Höhe: 300px; Anzeige: Flex; Position: relativ; } .Artikel { biegen: 1; Breite: 400px; Höhe: 300px; } .Artikel1 { Hintergrundfarbe: rosabraun; } .item2 { Hintergrundfarbe: rgb(12, 226, 37); } .item3 { Hintergrundfarbe: rgb(212, 221, 29); } .item4 { Hintergrundfarbe: rgb(61, 27, 182); } .item5 { Hintergrundfarbe: rgb(221, 23, 145); } #Schlüssel { Breite: 400px; Höhe: 300px; Rand: 0 automatisch; } #Liste { Breite: 400px; Höhe: 40px; Anzeige: Flex; Inhalt ausrichten: zentriert; } #Liste div { Rand oben: 10px; Rand links: 10px; Breite: 20px; Höhe: 20px; Hintergrundfarbe: rgb(13, 162, 221); Textausrichtung: zentriert; Randradius: 45 %; Deckkraft: 0,6; } #Liste div:hover { Cursor: Zeiger; Deckkraft: 1; } #btn { Breite: 400px; Textausrichtung: zentriert; } </Stil> Das ist der komplette Stil Jede Farbe stellt ein Bild dar und ist fortlaufend nummeriert. Ausgangslage ist das zweite Bild. Der Grund, warum an beiden Enden des ersten und letzten Bildes jeweils ein zusätzliches Duplikatbild platziert ist, liegt darin, dass beim Erstellen eines Gleiteffekts das letzte Bild (das vorletzte Bild, rosa und lila) weiter reibungslos nach rechts zum ersten Bild (tatsächlich das zweite Bild in diesem Bild, hellbraun) gleiten kann. Wenn Sie das erste Bild (in diesem Bild das zweite, hellbraun) nach links schieben, können Sie fließend zum letzten Bild (eigentlich zum vorletzten Bild) schieben. Lesen Sie unten weiter. 1. Mehrere KarussellmodiDas Karussell muss positioniert werden und das linke Attribut der Wrap-Liste muss geändert werden, damit es sich bewegt. Initialisieren Sie zuerst einige Daten var wrap = document.getElementById('wrap'); var nowleft = -400; //Wird verwendet, um den Wert von left in der aktuellen Liste zu speichernvar currIndex = 1; //Wird verwendet, um die aktuelle Bildnummer zu speichern//Mehrere Schaltflächen suchenvar btnNum = document.getElementsByClassName('btnNum'); //Kleiner Kreisvar right = document.getElementsByClassName('right')[0]; //Schaltfläche zum Verschieben nach rechtsvar left = document.getElementsByClassName('left')[0]; //Schaltfläche zum Verschieben nach links 1.1 Timing des automatischen KarusselleffektsSprechen Sie nur über den Effekt des automatischen Schiebens nach links Da es sich um eine automatische Rotation handelt, ist der Timer setInterval() unverzichtbar, um die Rotation kontinuierlich aufrechtzuerhalten. Funktion nächstes() { setInterval(function() { //Bild so einstellen, dass es alle zwei Sekunden wechselt wrap.style.transition = 'left 1s' //Übergangs-Gleiteffekt einstellen nowleft = parseInt(wrap.style.left) - 400; //Nach einmaligem Wechsel soll nowleft um die Breite eines Bildes verkleinert werden (also nach links gleiten), wrap.style.left = nowleft + 'px'; //Dann nowleft dem linken Attribut von wrapif(parseInt(wrap.style.left) == -2400) { zuweisen //Nach der Beurteilung des Letzten heimlich zum Anfang zurückwechseln setTimeout(() => { wrap.style.transition = 'none' //Da die Rückänderung heimlich erfolgt, muss der Übergangseffekt jetzt abgebrochen werdenleft = -400; wrap.style.left = jetztlinks + 'px' },1200) // Stellen Sie sicher, dass die Timerzeit größer als die Übergangszeit und kleiner als die Zeit jeder Rotation ist} },2000) } / Da wrap.style.left einen String mit px zurückgibt, können Sie parseInt verwenden, um den vorherigen Wert abzurufen / 1.2 Drücken Sie den rechten Schiebeknopfright.addEventListener('klicken',function() { if(nowleft >= -2000){ //Beurteilen, ob es das letzte Bild ist, wenn nicht, mit dem Gleiten beginnen nowleft -= 400; Wrap.Style.Transition = "links 1 Sek."; wrap.style.left = jetztlinks + 'px'; } if(nowleft == -2400) { //Wenn wir das letzte Bild erreichen, wechseln wir heimlich zurück zum ersten Bild setTimeout(() => { Wrap.Style.Transition = "keine"; jetztlinks = -400; wrap.style.left = jetztlinks + 'px'; },1020) } }) 1.3 Kleiner Kreis zum Wechseln von Bildernfür(lass i = 0; i < btnNum.Länge; i++) { btnNum[0].style.opacity = 1; btnNum[i].addEventListener('klicken',function() { Wrap.Style.Transition = "links 1 Sek."; für(let j = 0; j < btnNum.length; j++) { btnNum[j].style.opacity = "0,6"; } btnNum[i].style.opacity = 1; jetztlinks = jetztlinks – (i+1 – aktuellerIndex)*400; aktuellerIndex = i + 1; wrap.style.left = jetztlinks + 'px'; }) Tatsächlich ist der Vorgang des heimlichen Wechselns vom letzten zum ersten Bild in diesem Artikel fehlerhaft, da das Verschieben des Bildes mit der Sequenznummer 5 zum Bild mit der Sequenznummer r1 1 Sekunde dauert, wrap.style.left sich jedoch direkt ändert und sich während der Übergangszeit nicht mit der Verschiebung ändert. Daher ist es etwas schwierig, die Zeit zu kontrollieren, um die Sequenznummer 5 vollständig auf r1 zu schieben und dann heimlich auf die Sequenznummer 1 zu wechseln. Beispielsweise kann durch 3-maliges Klicken von der Sequenznummer 1 aus zur Sequenznummer 4 gewechselt werden. Natürlich ist es nicht möglich, ab Sequenznummer 5 dreimal hintereinander zu klicken. Wenn R1 zu Sequenznummer 1 wechselt, erfolgt keine Reaktion auf den Klickeffekt, sodass sich der Interaktionsunterschied hier leicht unangenehm anfühlt. Wenn Sie diesen unangenehmen Fehler beheben möchten, können Sie die Funktion „Anti-Shake“ verwenden. Damit ist dieser Artikel über verschiedene Methoden zur nativen Implementierung von Karussellbildern mit JS abgeschlossen. Weitere relevante native Karussellinhalte mit JS finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Schritte zum Übertragen des neuen Kernels auf das Linux-System
>>: Python3.6-MySql Dateipfad einfügen, die Lösung zum Entfernen des Backslashs
Beim Entwickeln mobiler Apps stoßen Sie häufig au...
Verwenden Sie einen CSS-Filter, um den Mouseover-...
Heute habe ich einen Blogbeitrag über Eingabeerei...
1. Hintergrund Im Kontext schneller Updates und I...
Laden Sie das MySQL-Installationsprogramm herunte...
Problem mit der Mysql-Connector-Java-Treiberversi...
Netzwerktyp nach der Docker-Installation [root@in...
1. Melden Sie sich beim System an und geben Sie d...
Hier ist ein Fall, den Frontend-Entwickler kennen...
Vorwort Vor ein paar Tagen bin ich zufällig auf d...
Zuvor habe ich MySQL 5.7 verwendet, aber da MySQL...
In diesem Artikel wird der spezifische JavaScript...
【Frage】 Wir haben einen HP-Server. Wenn die SSD e...
Bei der Installation von mha4mysql sind die Schri...
Heutzutage gehört die Unterstützung von HTTPS für...