Mehrere Methoden zur Implementierung von Karussellbildern in JS

Mehrere Methoden zur Implementierung von Karussellbildern in JS

Karussell

Die 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.

Bildbeschreibung hier einfügen

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

Bildbeschreibung hier einfügen

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 Karussellmodi

Das 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 Karusselleffekts

Sprechen 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 Schiebeknopf

right.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 Bildern

fü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:
  • JavaScript implementiert kreisförmiges Karussell
  • js zum Schreiben des Karusselleffekts
  • Implementierung eines einfachen Karussells auf Basis von JavaScript
  • JavaScript imitiert den Jingdong-Karusselleffekt
  • JavaScript Dom implementiert das Prinzip und Beispiel eines Karussells
  • Natives JS zum Erzielen eines nahtlosen Karusselleffekts
  • js, um einen mobilen Karussell-Schiebeschalter zu erreichen
  • Javascript zur Realisierung des Scrollrad-Karussellbildes
  • Beispielcode für ein einfaches, nahtlos scrollendes Karussell, implementiert mit nativem Js

<<:  Schritte zum Übertragen des neuen Kernels auf das Linux-System

>>:  Python3.6-MySql Dateipfad einfügen, die Lösung zum Entfernen des Backslashs

Artikel empfehlen

Detaillierte Erklärung des Sticky Position-Attributs in CSS

Beim Entwickeln mobiler Apps stoßen Sie häufig au...

Umfassendes Verständnis der Überwachung von HTML-Formulareingaben

Heute habe ich einen Blogbeitrag über Eingabeerei...

Zusammenfassung der Probleme mit der Mysql-connector-java-Treiberversion

Problem mit der Mysql-Connector-Java-Treiberversi...

Prozessdiagramm zur Implementierung des CentOS-IP-Verbindungsnetzwerks

1. Melden Sie sich beim System an und geben Sie d...

JavaScript implementiert Tab-Leisten-Umschalteffekte

Hier ist ein Fall, den Frontend-Entwickler kennen...

MySQL 8.X Installations-Tutorial unter Windows

Zuvor habe ich MySQL 5.7 verwendet, aber da MySQL...

JavaScript-Implementierung des klassischen Schlangenspiels

In diesem Artikel wird der spezifische JavaScript...

Detaillierte Analyse und Prüfung von SSD-Leistungsproblemen in MySQL-Servern

【Frage】 Wir haben einen HP-Server. Wenn die SSD e...

Detaillierte Konfiguration von Nginx, das sowohl Http als auch Https unterstützt

Heutzutage gehört die Unterstützung von HTTPS für...