Natives js-gekapseltes nahtloses Karussell-Plug-In. Zu Ihrer Information lautet der spezifische Inhalt wie folgt veranschaulichen:Dies ist ein nahtloses Karussellprogramm, das in nativer JS- und ES5-Syntax geschrieben ist. Die relevanten APIs sind im Code gekapselt, sodass Sie nach der Einführung der Karussell-JS-Datei nur zwei Codezeilen in Ihre eigene JS-Datei einfügen müssen, um einen grundlegenden nahtlosen Karusselleffekt auf der Webseite zu erzielen. Die grundlegenden Verwendungsschritte sind: Holen Sie sich das DOM-Element-Array, übergeben Sie Parameter an das Karussellobjekt und das Karussellobjekt ruft die automatische Karussellmethode auf. Zusätzlich zur grundlegenden automatischen Karussell-Timerfunktion unterstützt das Programm auch das Einstellen der Übergangsanimationszeit, das Einstellen eines automatischen Karussellstopps, wenn die Maus in das Element bewegt wird, das Einstellen des Karussells beim Klicken auf die linken und rechten Seitentasten und das Einstellen des Karussells beim Klicken auf die untere Taste. Das Programm ist nicht auf CSS- oder HTML-Dateien angewiesen, erfordert jedoch, dass Ihre CSS- und HTML-Layouts bestimmten Regeln folgen. Bitte beachten Sie, dass dieses Programm keine Kurvenübergangsgeschwindigkeit unterstützt und es manchmal zu einem Fehler kommt, bei dem das Karussellbild nach dem Wechseln des Browserfensters durcheinander gerät. Das Problem kann derzeit nicht gefunden werden. Dieses Programm ist lediglich eine einfache Kapselung der nahtlosen Karussellfunktion durch einen Anfänger wie mich und kann nur zum Lernen und als Referenz verwendet werden. Zusätzlich zum Karussellcode werde ich unten auch ein Beispielprogramm angeben. Wirkung der Operation:Ideen: Die Anordnungsreihenfolge aller Diashow-Elemente richtet sich nach der Richtung der Diashow. Wenn die aktuelle Diashow die Grenze aller Diashows erreicht hat, wird die letzte Diashow in der relativen Richtung sofort an die entsprechende Position verschoben. Kompilierungsumgebung:Chrom 86.0.4240.183 Code:slide.js kapselt den Diashow-Code (Funktion(Fenster, undefiniert) { // Den CSS-Attributwert des Elements abrufen function getCss(elem, attr) { elem.currentStyle zurückgeben? elem.currentStyle[attr] : window.getComputedStyle(elem, null)[attr]; } //Entferne Nicht-Ziffern aus dem String, ausgenommen negative Vorzeichen function toInt(str) { var rex = /[^0-9]/ig; return Zahl((str[0] === '-' && str[1] !== '=') ? '-' + str.replace(rex, '') : str.replace(rex, '')); } // Kapsele die Animationsfunktion, Parameter: Dom-Objekt, CSS-Attributwert-Objekt, Ausführungszeit der Animation, Rückruf nach Abschluss der Animation Funktion Animation (Element, Parameter, Geschwindigkeit, Rückruf) { für (var param in params) { (Funktion(Parameter) { var elemValue = toInt(getCss(elem, param)), Zielwert = toInt(Params[Param]), currentDis = Elementwert, Einheit = Params[Param].substr(Params[Param].indexOf('[A-Za-z]+') - 1); wenn (Params[Param].Länge > 2) { var Präfix = Params[Param].substr(0, 2); wenn (Präfix === '+=') Zielwert = Elementwert + Zielwert; sonst wenn (Präfix === '-=') Zielwert = Elementwert – Zielwert; } var dis = (Zielwert - Elementwert) / Geschwindigkeit, Größenflagge = Zielwert < Elementwert; var Timer = Intervall setzen(Funktion() { elemValue = toInt(getCss(elem, param)); if (GrößeFlag) { wenn (aktuellerDis <= Zielwert) { Intervall löschen(Timer); elem.style[param] = Zielwert + Einheit; } anders { aktuelleDis += dis; elem.style[param] = currentDis + unit; } } anders { wenn (aktuellerWert >= Zielwert) { Intervall löschen(Timer); elem.style[param] = Zielwert + Einheit; } anders { aktuelleDis += dis; elem.style[param] = currentDis + unit; } } }, 1); })(Parameter); } wenn (Typ des Rückrufs === 'Funktion') Rückruf(); }; // Verschiebe das Karussell-Array nach rechts Funktion rightRoundArrayMove() { var winsLen = wins.Länge; var letzterGewinn = Gewinne[Gewinnlänge - 1]; für (var i = winsLen - 1; i > 0; i--) Siege[i] = Siege[i - 1]; wins[0] = letzterSieg; } // Nach links drehen Funktion rightRound(time) { rightRoundArrayMove(); wins.forEach(Funktion(win, Index) { (Index === 0)? win.style.left = Index * Fensterbreite - Fensterbreite + 'px': Animation (Gewinn, {links: '+=' + Gewinnbreite + 'px'}, Zeit? Zeit: Animationszeit); }); } //Nach rechts drehen Funktion leftRound(time) { var winsLen = wins.Länge; var firstWin = gewinnt[0]; für (var i = 0; i < winsLen - 1; i++) Siege[i] = Siege[i + 1]; gewinnt[Gewinnlänge - 1] = ersterGewinn; wins.forEach(Funktion(win, Index) { (Index === Gewinne.Länge - 1)? win.style.left = Index * Fensterbreite - Fensterbreite + 'px': Animation (Gewinn, {links: '-=' + Gewinnbreite + 'px'}, Zeit? Zeit: Animationszeit); }); } var // wins, btns, sbtns werden verwendet, um den Konstruktorparameter wins zu speichern, btns, sbtns, // Fensterbreite winWidth, // Übergangsanimationszeit (Millisekunden), Standard ist 100 Animationszeit = 100, // Klicken Sie auf die Schaltfläche, um das Intervall zu drehen clickInterval = animationTime << 2, // Speichert den Auto-Rotationstimer, das Timerintervall und ob nach rechts gedreht werden soll autoRoundTimer, qIntervall, qisRichtig, //Folienkonstruktor, Parameter: Fensterarray, Schaltflächenarray, seitliches Schaltflächenarray Folie = Funktion (gewinnt, btns, sbtns) { gib eine neue Folie zurück.prototype.init(wins, btns, sbtns); }; Folie.Prototyp = { // Fensterelemente initialisieren init: function(awins, abtns, asbtns) { wenn (!awins) throw new Error('Das Fenster-Array darf nicht leer sein.'); Gewinne = Objekt.Werte(awins), btns = abtns, sbtns = asbtns; // Behandeln Sie die Situation, in der weniger als 3 Fenster vorhanden sind, if (wins.length === 1) { var winParent = wins[0].parentNode; var winHTML = wins[0].outerHTML; winParent.innerHTML += winHTML + winHTML; gewinnt = Objekt.Werte(winParent.children); } sonst wenn (gewinnt.Länge === 2) { var winParent = wins[0].parentNode; winParent.innerHTML += gewinnt[0].outerHTML + gewinnt[1].outerHTML; gewinnt = Objekt.Werte(winParent.children); } Gewinnbreite = Gewinne[0].Offsetbreite; wins.forEach(Funktion(win, Index) { win.style.position = "absolut"; win.index = index; }); rightRoundArrayMove(); wins.forEach(Funktion(win, Index) { win.style.left = Index * Fensterbreite – Fensterbreite + „px“; }); }, // Stelle die Übergangsanimationszeit ein setAnimationTime: function(time) { Animationszeit = Zeit; Klickintervall = Animationszeit << 2; }, // Automatische Rotation, Parameter: Rotationszeitintervall, ob nach rechts gedreht werden soll autoRound: function(interval, isRight) { autoRoundTimer = setzeIntervall(Funktion() { istRechts? RechtsRund() : LinksRund(); }, Intervall); qinterval = Intervall; qisRight = istRechts; }, // Klick mit seitlicher Taste, der Parameter ist das Array mit den Elementen der seitlichen Taste, das im Konstruktor übergeben werden kann oder jetzt übergeben werden kann sideBtnClickRound: function(sabtns) { var leftBtn = sabtns ? sabtns[0] : sbtns[0], rightBtn = sabtns ? sabtns[1] : sbtns[1]; var isclick = true; leftBtn.onclick = Funktion () { wenn(istklick) { istclick=false; rechtsRund(); setzeTimeout(Funktion() { istklick = wahr; }, Klickintervall); } }; rightBtn.onclick = Funktion () { wenn(istklick) { istclick=false; linkeRunde(); setzeTimeout(Funktion() { istklick = wahr; }, Klickintervall); } }; }, // Normaler Schaltflächenklick, Parameter: normales Schaltflächenarray, Rückruf btnsClickRound: Funktion (abtns, Rückruf) { var ibtns = abtns? abtns: btns; var isclick = true; ibtns.forEach(Funktion(btn, Index) { btn.onclick = Funktion() { wenn(istklick) { istclick=false; wenn (Typ des Rückrufs === 'Funktion') Rückruf (ibtns, btn, Index); var schlecht = index - gewinnt[1].index; var Anzahl = Math.abs(schlecht); wenn (schlecht < 0) { var absPoor = Anzahl; var Timer = Intervall setzen(Funktion() { console.log((absPoor + 1)) rightRound(Animationszeit / (absPoor + 2)); wenn ((--count) === 0) Intervall löschen(Timer); }, Animationszeit); } sonst wenn (schlecht > 0) { var Timer = Intervall setzen(Funktion() { linkeRunde(Animationszeit / (schlecht + 2)); wenn ((--count) === 0) Intervall löschen(Timer); }, Animationszeit); } setzeTimeout(Funktion() { istklick = wahr; }, Klickintervall << 1); } } }); }, //Maus auf Einfahren einstellen und automatische Drehung abbrechen, Parameter: das einzufahrende Element, der Callback des einzufahrenden Elements, der Callback des auszufahrenden Elements setOverStop: function(box, overCallback, outCallback) { box.onmouseover = Funktion(e) { : ClearInterval(autoRoundTimer); wenn (Typ von overCallback === 'Funktion') überCallback(e); } box.onmouseout = Funktion(e) { Folie.Prototype.AutoRound(qinterval, qisRight); wenn (Typ von outCallback === 'Funktion') outCallback(e); } } } Folie.prototype.init.prototype = Folie.prototype; Fenster.Slide = _Slide = Folie; })(Fenster); test.js Testbeispiel für JS-Code: onload = Funktion() { var wins = document.querySelectorAll('.wins > li'); var btns = document.querySelectorAll('.btns > li'); var sideBtns = document.querySelectorAll('.side-btns > div'); var box = document.querySelector('.box'); var s = slide(wins, btns, sideBtns); // Ein Karussellobjekt erstellen, Parameter: Fenster-Dom-Array, unteres Button-Dom-Array (optional), s.autoRound(2000); // Automatische Rotation einstellen s.setAnimationTime(200); // Übergangsanimationszeit einstellen s.setOverStop(box); // Automatischen Rotationsstopp einstellen, wenn die Maus in das Element hineinbewegt wird, Parameter: hineinbewegtes DOM-Element, Rückruf des hineinbewegten Elements, Rückruf des herausbewegten Elements s.sideBtnClickRound(); // Rotation einstellen, wenn auf die Seitentaste geklickt wird, Parameter: Button-DOM-Array (optional) s.btnsClickRound(); // Legt die Drehung fest, wenn auf die Schaltfläche unten geklickt wird, Parameter: Button-Dom-Array (optional), Rückruf} HTML- und CSS-Beispielcode <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8" /> <Titel></Titel> <style type="text/css"> * { Rand: 0; Polsterung: 0; } li { Listenstil: keiner; } .Kasten { Breite: 1000px; Höhe: 400px; Rand: 20px automatisch; Anzeige: Flex; Elemente ausrichten: zentrieren; Position: relativ; Überlauf: versteckt; } .box > * { Position: absolut; } .side-btns { Breite: erben; Höhe: 100px; Anzeige: Flex; Inhalt ausrichten: Abstand dazwischen; Z-Index: 2; } .side-btns > div { Breite: 50px; Höhe: erben; Textausrichtung: zentriert; Zeilenhöhe: 100px; Schriftgröße: 18px; Hintergrundfarbe: rgba(0, 0, 0, .3); Farbe: weiß; Cursor: Zeiger; Benutzerauswahl: keine; } .btns { Breite: erben; Höhe: 20px; Anzeige: Flex; Inhalt ausrichten: Flex-Ende; Z-Index: 2; Position: absolut; unten: 20px; } .btns > li { Breite: 16px; Höhe: 16px; Randradius: 50 %; Rand rechts: 12px; Cursor: Zeiger; Hintergrundfarbe: rgba(0, 0, 0, .2); } .gewinnt { Breite: erben; Höhe: erben; Anzeige: Flex; } .wins > li { Breite: erben; Höhe: erben; Flex-Wachstum: 0; Flex-Schrumpfen: 0; } </Stil> <script src="js/slide.js"></script> <script src="js/test.js"></script> </Kopf> <Text> <div Klasse="Box"> <div Klasse="side-btns"> <div class="left-btn"><</div> <div class="right-btn">></div> </div> <ul Klasse="btns"> <li></li> <li></li> <li></li> <li></li> </ul> <ul Klasse="gewinnt"> <li style="Hintergrundfarbe: Antikweiß;">a</li> <li style="Hintergrundfarbe: Aquamarin;">b</li> <li style="Hintergrundfarbe: grün;">c</li> <li style="Hintergrundfarbe: braun;">d</li> </ul> </div> </body> </html> 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:
|
<<: Django-Online-Bereitstellungsmethode von Apache
>>: MySQL 8.0.12 Installationskonfigurationsmethode und Kennwortänderung
Tomcat-Serverkonfiguration Jeder, der das Web ken...
Herunterladen https://tomcat.apache.org/download-...
Inhaltsverzeichnis 1. Wählen Sie die am besten ge...
1. Einleitung Responsive Webdesign ermöglicht die...
1. Versionsinformationen # Katze /etc/system-rele...
In diesem Artikel finden Sie den spezifischen Cod...
Hinweis: Andere Maschinen (IP) können ohne Autori...
Inhaltsverzeichnis Boolescher Typ Nummerntypen Ze...
Nginx (Engine x) ist ein leistungsstarker HTTP- u...
Docker-Netzwerk anzeigen Docker-Netzwerk ls [root...
1. Installation des MySQL RPM-Pakets # Laden Sie ...
Handlungsüberblick Im vorherigen Artikel haben wi...
Inhaltsverzeichnis 1. Was ist JSONP 2. JSONP-Cros...
In diesem Artikel wird der spezifische Code von V...
Einführung Um Datenverlust in einer Produktionsum...