Lassen Sie uns heute darüber sprechen, wie Sie mit js den Effekt der Karussellkarte zu Ihrer Referenz erzielen. Der spezifische Inhalt ist wie folgt Ideen1. Zuerst müssen wir die Elemente besorgen, die wir brauchen <div Klasse="alle" id="box"> <div Klasse="Bildschirm"> <!-- Ungeordnete Liste --> <ul> <li><img src="./wf1.jpg" width="500" height="200" /></li> <li><img src="./wf2.jpg" width="500" height="200" /></li> <li><img src="./wf3.jpg" width="500" height="200" /></li> <li><img src="./wf4.jpg" width="500" height="200" /></li> <li><img src="./wf5.jpg" width="500" height="200" /></li> </ul> <!-- Sortierte Liste --> <ol> </ol> </div> <div id="arr"><span id="left"><</span><span id="right">></span></div> </div> 2. Wir möchten, dass die Diashow überall dort ausgeführt wird, wo wir darauf klicken und ihre Farbe ändern 3. Fügen Sie dem Karussell linke und rechte Pfeiltasten hinzu, um nach oben und unten zu wechseln 4. Das Karussell von selbst in Bewegung setzen arbeiten1. Besorgen Sie sich zunächst die Elemente und Karusselleffekte, die Sie benötigen 1. Holen Sie sich zuerst die ul (Foto), ol (Klickfeld) und nth (linke und rechte Schaltflächen), die Sie benötigen. var ul = document.querySelector('ul') var ol = document.querySelector('ol') var nth = document.querySelector('#arr') var box = document.querySelector('#box') var links = document.querySelector('#links') var rechts = document.querySelector('#rechts') 2. Kapseln Sie den Animationseffekt ein, der später verwendet wird //Führen Sie eine Kapselung der Positionsanimation durch. Rufen Sie die Funktion animate(element,offset,setp,times){ auf. // Löschen, wenn wahr, um mehrere Trigger zu verhindern if(element.jsq){ Intervall löschen(element.jsq) } // Den aktuellen Offset abrufen var position = ul.offsetLeft // Wenn die verschobene Position kleiner als die aktuelle Position ist, ist die Schrittlänge negativ if (Offset < Position) { setp=-setp } // Starte den Lückentimer if(Math.abs(position-offset)>Math.abs(setp)){ element.jsq = setInterval(() => { Position + = Sollwert element.stil.links=position+'px' // Wenn der aktuelle Positionswert innerhalb eines Schrittes der voreingestellten Position liegt, stoppen Sie den Timer, wenn (Math.abs(position-offset)<Math.abs(setp)){ Intervall löschen(element.jsq) element.stil.links=Versatz+'px' } }, mal); } } Animationsschritte: 1. Überprüfen Sie beim Übergeben, ob ein Timer vorhanden ist. Wenn ja, löschen Sie ihn, um das gleichzeitige Vorhandensein mehrerer Timer zu verhindern. 2. Bestimmen Sie, ob die Position, zu der Sie sich bewegen möchten, größer als die ursprüngliche Position ist. Wenn sie größer ist, erhöht setp sie. Wenn sie kleiner ist, subtrahieren Sie jedes Mal die Schrittweite. 3. Starten Sie den Timer und bewegen Sie 4. Wenn der Abstand zwischen der aktuellen Position und der vorgegebenen Position kleiner als die Schrittlänge ist, endet der Timer und die Position wird auf die vorgegebene Position gesetzt, um wiederholte Seitwärtssprünge zu verhindern. 2.ol Inhalte hinzufügen, Klickereignisse hinzufügen, Bilder verschieben und Schaltflächenfarben ändern für(var i=0;i<ul.children.length;i++){ var li = document.createElement('li') li.innerHTML=i+1 // Für jedes li benutzerdefinierte Attribute festlegen li.setAttribute('a',i) ol.appendChild(li) // Setze ein Klickereignis für jedes li unter ol ol.children[i].onclick=function(){ // Schleife, damit li exklusives Denken durchführt for(var i=0;i<ol.children.length;i++){ ol.children[i].className='' } // Füge dem aktuell angeklickten Element das Klassenattribut this.className='current' hinzu // Holen Sie sich den Wert des benutzerdefinierten Attributs des aktuell angeklickten LI, um zu sehen, welches angeklickt wurde. var index=this.getAttribute('a') konsole.log(index) // Überprüfen Sie die Breite jedes Fotos var imgwidth = ul.children[0].offsetWidth // Multiplizieren Sie die Breite mit der Anzahl der Frames, um den Bewegungsbetrag zu erhalten. Offset = Index * - Bildbreite //Rufen Sie die Animationsfunktion animate(ul,offset,50,30) auf. 1. Verwenden Sie eine For-Schleife, um die gleiche Anzahl von Schaltflächen wie Fotos zu erstellen. Verwenden Sie setAttribute('a', i), um ein neues benutzerdefiniertes Attribut zu erstellen und es zu ol hinzuzufügen. Sie werden es später brauchen. für(var i=0;i<ul.children.length;i++){ var li = document.createElement('li') li.innerHTML=i+1 // Für jedes li benutzerdefinierte Attribute festlegen li.setAttribute('a',i) ol.appendChild(li) } 2. Fügen Sie allen Schaltflächen in dieser Schleife Bindungsereignisse hinzu, sodass die aktuelle Schaltfläche ihre Farbe ändert und die anderen keine Farbe haben. Exklusive Idee : Bei jedem Klicken hat die aktuelle Schaltfläche eine Farbe und die anderen werden gelöscht für(var i=0;i<ul.children.length;i++){ var li = document.createElement('li') li.innerHTML=i+1 // Für jedes li benutzerdefinierte Attribute festlegen li.setAttribute('a',i) ol.appendChild(li) //Neu// Setze ein Klickereignis für jedes li unter ol.children[i].onclick=function(){ // Schleife, damit li exklusives Denken durchführt for(var i=0;i<ol.children.length;i++){ ol.children[i].className='' } // Füge dem aktuell angeklickten Element das Klassenattribut this.className='current' hinzu 3. Holen Sie sich den Wert des benutzerdefinierten Attributs des aktuell angeklickten Elements , speichern Sie ihn und verwenden Sie ihn, um den Versatz der Seite festzulegen . Multiplizieren Sie den aktuell angeklickten Wert mit jedem Foto, um den Versatz von ul zu erhalten . Denken Sie daran, ein Minuszeichen hinzuzufügen, da ul nach links verschoben werden soll, nicht ins Ansichtsfenster. Rufen Sie dann die Animationsfunktion auf, die wir zuvor geschrieben haben. für(var i=0;i<ul.children.length;i++){ var li = document.createElement('li') li.innerHTML=i+1 // Für jedes li benutzerdefinierte Attribute festlegen li.setAttribute('a',i) ol.appendChild(li) // Setze ein Klickereignis für jedes li unter ol ol.children[i].onclick=function(){ // Schleife, damit li exklusives Denken durchführt for(var i=0;i<ol.children.length;i++){ ol.children[i].className='' } // Füge dem aktuell angeklickten Element das Klassenattribut this.className='current' hinzu //Neu// Holen Sie sich den Wert des benutzerdefinierten Attributs des aktuell angeklickten LI, um zu sehen, welches angeklickt ist. var index=this.getAttribute('a') konsole.log(index) // Überprüfen Sie die Breite jedes Fotos var imgwidth = ul.children[0].offsetWidth // Multiplizieren Sie die Breite mit der Anzahl der Frames, um den Bewegungsbetrag zu erhalten. Offset = Index * - Bildbreite //Rufen Sie die Animationsfunktion animate(ul,offset,50,30) auf. Ergebnisse 3. Fügen Sie dem Karussell Schaltflächen „Zurück“ und „Weiter“ hinzu (Den CSS-Stil werde ich hier nicht aufschreiben, ich werde ihn am Ende angeben. Stellen Sie ihn sich einfach zuerst vor. Das CSS ist am Anfang versteckt.) 1. Wir haben bereits zu Beginn verschiedene Elemente erhalten, daher müssen wir sie jetzt nicht mehr erhalten . Schreiben Sie einfach die Ereignisse für das Eintreten bzw. Verlassen. // Maus betritt Ereignisfeld.onmousemove=function(){ nth.style.display='Block' } // Maus verlässt die Ereignisbox.onmouseleave=function(){ nth.style.display='keine' } 2. Rufen Sie die aktuelle Seite ab , legen Sie das Klickereignis fest, „next ++ previous --“ und wenden Sie dann den vorherigen Onclick-Effekt an. für(var i=0;i<ul.children.length;i++){ var li = document.createElement('li') li.innerHTML=i+1 // Für jedes li benutzerdefinierte Attribute festlegen li.setAttribute('a',i) ol.appendChild(li) // Setze ein Klickereignis für jedes li unter ol ol.children[i].onclick=function(){ // Schleife, damit li exklusives Denken durchführt for(var i=0;i<ol.children.length;i++){ ol.children[i].className='' } // Füge dem aktuell angeklickten Element das Klassenattribut this.className='current' hinzu // Holen Sie sich den Wert des benutzerdefinierten Attributs des aktuell angeklickten LI, um zu sehen, welches angeklickt ist. var index=this.getAttribute('a') konsole.log(index) // Überprüfen Sie die Breite jedes Fotos var imgwidth = ul.children[0].offsetWidth // Multiplizieren Sie die Breite mit der Anzahl der Frames, um den Bewegungsbetrag zu erhalten. Offset = Index * - Bildbreite //Rufen Sie die Animationsfunktion animate(ul,offset,50,30) auf. // Neues // Klickereignis, Index ist der Wert des benutzerdefinierten Klassennamens der aktuell angeklickten Sequenz left.onclick=function(){ wenn(index>0){ Index-- } ol.Kinder[index].Klick() } rechts.beiKlick=Funktion(){ wenn(index<4){ Index++ } ol.Kinder[index].Klick() } } } Da der Wert im Klickereignis nicht von außen abgerufen werden kann, schreibe ich einfach Sie können Ereignisse auch in Ereignissen aufrufen, z. B. ol.children[index].click(). Denken Sie daran, Klammern hinzuzufügen und „on“ zu entfernen. 3. Wenn ol.onclick nicht ausgelöst wird (Nr. 1, 2, 3, 4, 5 unten wird angeklickt), funktioniert das Klicken nach links und rechts nicht, daher sollte dem Skript ein Codestück hinzugefügt werden var Klick=0 rechts.beiKlick=Funktion(){ Klick++ wenn(Klick==1){ ol.children[1].klick() } } An diesem Punkt ist der dritte Teil der Operation abgeschlossen. 4. Das Karussell von selbst in Bewegung setzen // Automatische Bewegung // 1. Zuerst müssen wir dem ersten Button am Anfang Farbe hinzufügen ol.children[0].className='current' // 2. Starte den Timer und schalte alle 5 Sekunden um setInterval(function(){ var position = ul.offsetLeft var imgwidth=ul.children[0].offsetWidth var Indizes = Math.abs(Position/Bildbreite) //3. Hole die aktuelle Position und die Länge des Bildes und dividiere sie, um den Index zu erhalten if (indexes>3) { Indizes = -1 } ol.children[index+1].click() // Achten Sie darauf, 1 hinzuzufügen, wenn Sie springen },5000) 1. Zuerst müssen wir dem ersten Button am Anfang Farbe hinzufügen und anschließend die exklusive Idee löschen. 2. Holen Sie sich den Index. Addieren Sie 1, um zu springen. Andernfalls springen Sie an Ort und Stelle. Der zweite Kreis beginnt bei -1, nicht bei 0, also sollte es +1 sein. Wir können das gewünschte Ergebnis erzielen. Gesamtcode<!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1.0"> <title>Dokument</title> <style type="text/css"> * { Polsterung: 0; Rand: 0; Listenstil: keiner; Rand: 0; } .alle { Breite: 500px; Höhe: 200px; Polsterung: 7px; Rand: 1px durchgezogen #ccc; Rand: 100px automatisch; Position: relativ; } .Bildschirm { Breite: 500px; Höhe: 200px; Überlauf: versteckt; Position: relativ; } .Bildschirm li { Breite: 500px; Höhe: 200px; Überlauf: versteckt; schweben: links; } .Bildschirm ul { Position: absolut; links: 0; oben: 0px; Breite: 3000px; } .alles ol { Position: absolut; rechts: 10px; unten: 10px; Zeilenhöhe: 20px; Textausrichtung: zentriert; } .alles ol li { schweben: links; Breite: 20px; Höhe: 20px; Hintergrund: #fff; Rand: 1px durchgezogen #ccc; Rand links: 10px; Cursor: Zeiger; } .alle ol li.current { Hintergrund: gelb; } #arr { Anzeige: keine; Z-Index: 1000; } #arr Spanne { Breite: 40px; Höhe: 40px; Position: absolut; links: 5px; oben: 50 %; Rand oben: -20px; Hintergrund: #000; Cursor: Zeiger; Zeilenhöhe: 40px; Textausrichtung: zentriert; Schriftstärke: fett; Schriftfamilie: „fett“; Schriftgröße: 30px; Farbe: #fff; Deckkraft: 0,3; Rand: 1px durchgezogen #fff; } #arr #rechts { rechts: 5px; links: auto; } </Stil> </Kopf> <Text> <div Klasse="alle" id="box"> <div Klasse="Bildschirm"> <!-- Ungeordnete Liste --> <ul> <li><img src="./wf1.jpg" width="500" height="200" /></li> <li><img src="./wf2.jpg" width="500" height="200" /></li> <li><img src="./wf3.jpg" width="500" height="200" /></li> <li><img src="./wf4.jpg" width="500" height="200" /></li> <li><img src="./wf5.jpg" width="500" height="200" /></li> </ul> <!-- Sortierte Liste --> <ol> </ol> </div> <div id="arr"><span id="left"><</span><span id="right">></span></div> </div> <Skript> //Führen Sie eine Kapselung der Positionsanimation durch. Rufen Sie die Funktion animate(element,offset,setp,times){ auf. // Löschen, wenn wahr, um mehrere Trigger zu verhindern if(element.jsq){ Intervall löschen(element.jsq) } // Den aktuellen Offset abrufen var position = ul.offsetLeft // Wenn die verschobene Position kleiner als die aktuelle Position ist, ist die Schrittlänge negativ if (Offset < Position) { setp=-setp } // Starte den Lückentimer if(Math.abs(position-offset)>Math.abs(setp)){ element.jsq = setInterval(() => { Position + = Sollwert element.stil.links=position+'px' // Wenn der aktuelle Positionswert innerhalb eines Schrittes der voreingestellten Position liegt, stoppen Sie den Timer, wenn (Math.abs(position-offset)<Math.abs(setp)){ Intervall löschen(element.jsq) element.stil.links=Versatz+'px' } }, mal); } } // 1. Holen Sie sich das Element var ul = document.querySelector('ul') var ol = document.querySelector('ol') var nth = document.querySelector('#arr') var box = document.querySelector('#box') var links = document.querySelector('#links') var rechts = document.querySelector('#rechts') // 2. Klickelemente in ol hinzufügen // li in ol-Schleife hinzufügen für(var i=0;i<ul.children.length;i++){ var li = document.createElement('li') li.innerHTML=i+1 // Für jedes li benutzerdefinierte Attribute festlegen li.setAttribute('a',i) ol.appendChild(li) // Setze ein Klickereignis für jedes li unter ol ol.children[i].onclick=function(){ // Schleife, damit li exklusives Denken durchführt for(var i=0;i<ol.children.length;i++){ ol.children[i].className='' } // Füge dem aktuell angeklickten Element das Klassenattribut this.className='current' hinzu // Holen Sie sich den Wert des benutzerdefinierten Attributs des aktuell angeklickten LI, um zu sehen, welches angeklickt ist. var index=this.getAttribute('a') konsole.log(index) // Überprüfen Sie die Breite jedes Fotos var imgwidth = ul.children[0].offsetWidth // Multiplizieren Sie die Breite mit der Anzahl der Frames, um den Bewegungsbetrag zu erhalten. Offset = Index * - Bildbreite //Rufen Sie die Animationsfunktion animate(ul,offset,50,30) auf. // Klickereignis, Index ist der Wert des benutzerdefinierten Klassennamens der aktuell angeklickten Sequenznummer left.onclick=function(){ wenn(index>0){ Index-- } ol.Kinder[index].Klick() } rechts.beiKlick=Funktion(){ wenn(index<4){ Index++ } ol.Kinder[index].Klick() } } } // Maus betritt Ereignisfeld.onmousemove=function(){ nth.style.display='Block' } // Maus verlässt die Ereignisbox.onmouseleave=function(){ nth.style.display='keine' } //Maus-Rechtsklick-Ereignis var Click=0 rechts.beiKlick=Funktion(){ Klick++ wenn(Klick==1){ ol.children[1].klick() } } // Automatische Bewegung // 1. Zuerst müssen wir dem ersten Button am Anfang Farbe hinzufügen ol.children[0].className='current' // 2. Starte den Timer und schalte alle 5 Sekunden um setInterval(function(){ var position = ul.offsetLeft var imgwidth=ul.children[0].offsetWidth var Indizes = Math.abs(Position/Bildbreite) //3. Hole die aktuelle Position und die Länge des Bildes und dividiere sie, um den Index zu erhalten if (indexes>3) { Indizes = -1 } ol.children[index+1].click() // Achten Sie darauf, 1 hinzuzufügen, wenn Sie springen },5000) </Skript> </body> </html> Denken Sie daran, den Pfad zum Bild zu ändern. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Grundlegende MySQL-Tabellenabfragen – häufige Fehler beim Left-Join
>>: MySQL-Triggersyntax und Anwendungsbeispiele
Die Rahmen- und Regelattribute des Tabellentags k...
stat-Funktion und stat-Befehl Erklärung von [inod...
1. Voraussetzungen Bei der Entwicklung von Front-...
Heute zeige ich Ihnen, wie Sie mit JavaScript ein...
In diesem Artikel wird der spezifische Code von V...
Wenn es um Datenbanken geht, ist eine der am häuf...
Möglicherweise sehen Sie häufig den folgenden Eff...
Beim Webdesign ist es sehr wichtig, eine organisi...
Der ausgeführte Docker-Container zeigt, dass der ...
1. Frage: Ich habe in diesen Tagen Einfügevorgäng...
Tutorial zur kostenlosen Konfiguration der mysql ...
1. Einleitung Warum brauchen wir Indizes? In allg...
Inhaltsverzeichnis 1. Vorbereitung vor der Entwic...
Inhaltsverzeichnis Docker Compose-Nutzungsszenari...
Ich habe vor Kurzem angefangen, Linux zu lernen. ...