Wenn wir ein Karussell bauen wollen, müssen wir zunächst das Prinzip verstehen. Wie können wir das Bild von rechts nach links gleiten lassen? Erstellen Sie einen Block und eine ListeErstellen Sie einen Block, der als Gesamtcontainer und Anzeigebereich dient. <div id="aus"> <ul id="imgList"> <li><img src="pto/viele.jpg" ></li> <li><img src="pto/hallo.jpg" ></li> <li><img src="pto/timg.jpg" ></li> <li><img src="pto/zhenjing.jpg"></li> </ul> </div> Jetzt sind die Bilder vertikal in einer Spalte gestapelt und ich weiß nicht, wo die Blöcke sind. Fügen wir einige Stile hinzu. Aktivieren Sie die Positionierung und zentrieren Sie sie, vergrößern Sie den Block und fügen Sie einen Hintergrund hinzu, um die Position zu bestimmen (das Bild in diesem Experiment hat ein einheitliches Seitenverhältnis von 500*431, also beträgt das Div-Seitenverhältnis 520*451). Entfernen Sie den Standardlistenstil und stellen Sie die Liste horizontal dar *{ Rand: 0; Polsterung: 0; } #aus{ Breite: 520px; Höhe: 451px; Hintergrundfarbe: #00bcd4; Position: relativ; Rand: 50px automatisch; /*Überlauf: versteckt;*/ /*Schneiden Sie die Teile aus, die wir nicht benötigen, und kommentieren Sie sie zur einfacheren Fehlerbehebung aus*/ } #imgList{ Listenstil: keiner; Position: absolut; /* links: -520px; */ } #imgList li{ schweben: links; Rand: 10px; } Nach dem Versuch, sie zu schweben, befinden sich die Bilder immer noch in einer Spalte, da die Breite von lu zu klein ist. Daher müssen wir sie erweitern. Wir können ihre Breite jedoch nicht direkt bestimmen, da die Breite mit zunehmender Anzahl der Bilder weiter zunehmen sollte. Daher verwenden wir JavaScript, um die Breite zu berechnen. Jedes Mal, wenn ein Bild hinzugefügt wird, wird die Breite um 520 Pixel erweitert. fenster.onload = Funktion () { // Dynamische UL-Länge var imgList = document.getElementById("imgList"); var imgArr = document.getElementsByTagName("img"); imgList.style.width=520*imgArr.length+"px"; }//beladen Jetzt wird der Film ul, der das Bild lädt, jedes Mal ein Bild ändern, wenn es sich um -520px nach links verschiebt Navigationsleiste Die Karussellbilder werden regelmäßig geändert, aber es ist möglich, dass die Bilder genau dann geändert werden, wenn Ihre Kunden angezogen sind. Wenn Sie möchten, dass Ihre Kunden zurückkommen und die Bilder trocken anstarren, werden Sie sie wahrscheinlich verlieren. <div id="navDiv"> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> </div> ul befindet sich außerhalb des Dokumentflusses, nachdem die absolute Positionierung aktiviert wurde. Jetzt ist unsere Navigation in der oberen linken Ecke zu einer Kugel geschrumpft, da kein Inhalt vorhanden ist. Wir müssen jeden Hyperlink voneinander trennen, den Abstand manuell erweitern und ihn an die untere Position anpassen. Die untere Mitte oder die rechte Seite ist eine bessere Wahl. } #navDiv{ Position: absolut; unten: 15px; } #navDiv a{ schweben: links; Breite: 15px; Höhe: 15px; Hintergrundfarbe: #89ff00; Rand: 0,5px; Deckkraft: 0,5; } //Dynamisches Navigationszentrum var navDiv = document.getElementById("navDiv"); var out = document.getElementById("out"); // Teilen Sie den verbleibenden vertikalen Abstand links und rechts der Navigation, um den Zentrierungseffekt zu erzielen. // Wenn es nicht durch zwei geteilt wird, wird es rechtsbündig ausgerichtet. // Vergessen Sie nicht die Einheit, ähm. . Vielleicht bin ich der Einzige, der navDiv.style.left = (out.clientWidth - navDiv.clientWidth)/2+"px"; vergessen hat. Verbesserte Navigationsfunktion Welche Art von Feedback sollte ein 15-Pixel-Quadrat den Benutzern geben? #navDiv a:hover{ Hintergrundfarbe: rot; /* Mausbewegungseffekt*/ /* Inline-Stile haben eine hohe Priorität. Achten Sie darauf, dass sie nicht überschrieben und ungültig gemacht werden.*/ } //Positionierungseffekt var allA = document.getElementsByTagName("a"); Var-Index = 0; allA[index].style.backgroundColor="schwarz"; //Navigationseffekt anklicken //Blockebenenbereich let verwenden, sonst ist i die gleiche Zahl for(let i=0;i<allA.length;i++){ alleA[i].onclick=Funktion () { imgList.style.left=-520*i+"px"; //Inline-Styles löschen, damit die CSS-Datei wirksam werden kann allA[index].style.backgroundColor=""; Index=i; allA[index].style.backgroundColor="schwarz"; } } AnimationseffekteWarum Animation machen? (Weil es cool ist (≧ω≦*)♪) Denn ohne den Karusselleffekt wird es nicht als Karussell bezeichnet. Offensichtlich kann es durch Ändern der Adresse vervollständigt werden. Sind Sie nicht gerade damit schon lange beschäftigt? Ich verwende den größten Titel, um Ihnen zu sagen, dass Animation die Essenz des Karussells ist. Die Grundidee besteht darin, einen Effekt, der ursprünglich in einem Schritt abgeschlossen wurde, mithilfe des Timers mehrmals abzuschließen und den Timer auszuschalten, wenn er die angegebene Position erreicht. Zu beachtende Probleme Jede Bewegungsdistanz kann durch die Bildgröße geteilt werden, was zu einer ungenauen Halteposition (größer oder kleiner als) oder einem Nichtanhalten (Nichterreichen der Halteposition genau) führt. Kleine Fehler summieren sich allmählich. //Klick-Navigationseffekt for(let i=0;i<allA.length;i++){ alleA[i].onclick=Funktion () { verschieben(Bildliste,-520*i,10); // imgList.style.left=-520*i+"px"; //Ersetze diesen Low-Level-Übergang allA[index].style.backgroundColor=""; Index=i; allA[index].style.backgroundColor="schwarz"; } } Funktion „move(obj,target,speed)“ {//Element; Zielposition; Geschwindigkeit//Schließe den vorherigen Timer jedes Mal, wenn ein Ereignis ausgelöst wird//Das ist der entscheidende Punkt. Sie können diesen Satz entfernen und klicken, um den Differenzeffekt nach Belieben auszuschalten. „clearInterval(obj.timer)“; var aktuell = parseInt(window.getComputedStyle(obj,null).left); // Aktuelle Position ermitteln // Bewegungsrichtung bestimmen if (target < current) { Geschwindigkeit = -Geschwindigkeit; } //Timer-Flag obj.timer = window.setInterval(function () { //m beginnt jedes Mal, die aktuelle Position abzurufen var oldValue = parseInt(window.getComputedStyle(obj,null).left); //Bewegen und an der angegebenen Position anhalten var newValue = oldValue + speed; //Stoppposition anpassen. Kleine Fehler werden mit der Zeit unendlich vergrößert, wenn ((Geschwindigkeit < 0 && neuerWert < Ziel)||(Geschwindigkeit > 0 && neuerWert > Ziel)){ neuerWert = Ziel; } imgList.style.left =neuerWert+"px"; wenn(neuerWert == Ziel){ Intervall löschen(Objekt.Timer); } },30); } ändern(); //Automatisches Karussell //Ein Timer wird verwendet, um die Funktion change() aufzurufen { setzeIntervall(Funktion () { Index++; index=index % imgArr.Länge; Konsole.log(imgArr.length); konsole.log(index); Verschieben (Bildliste, -520*Index, 20); für (lass i = 0; i <allA.length; i++) { alleA[i].style.backgroundColor=""; allA[index].style.backgroundColor="schwarz"; } },3000); } Damit lässt sich die Grundfunktion des Karussells bereits erreichen, aber wenn das letzte Bild zum ersten Bild wechselt, werden alle Bilder nach links gezogen, was sehr uncool ist. Was sollen wir tun, wenn wir möchten, dass sich das Karussell weiter nach links dreht? Angenommen, wir möchten zwei Bilder drehen, Bild A und Bild B. Wir können am Ende ein Bild wie Bild A einfügen. Nachdem die beiden Bilder fertig gedreht sind, wechseln wir zum dritten Bild, damit die Leute fälschlicherweise denken, es sei das erste Bild. Nachdem das dritte Bild fertig gedreht ist, springen wir sofort zum ersten Bild und drehen weiter. Das ist ein Trick, um die Leute zu täuschen. Für das Karussell müssen wir eigentlich nur das Prinzip kennen, ganz zu schweigen vom Framework. Mit jQuery ist weniger als ein Zehntel des Aufwands nötig, um das Karussell fertigzustellen. Vollständiger Code<!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <title>Titel</title> <Stil> *{ Rand: 0; Polsterung: 0; } #aus{ Breite: 520px; Höhe: 451px; Rand: 50px automatisch; Hintergrundfarbe: #00bcd4; Position: relativ; Überlauf: versteckt; } #imgList{ Listenstil: keiner; Position: absolut; } #imgList li{ schweben: links; Rand: 10px; } #navDiv{ Position: absolut; unten: 15px; } #navDiv a{ schweben: links; Breite: 15px; Höhe: 15px; Hintergrundfarbe: #89ff00; Rand: 0,5px; Deckkraft: 0,5; } #navDiv a:hover{ Hintergrundfarbe: rot; /* Inline-Stile haben eine hohe Priorität und werden nach einmaligem Auslösen ungültig*/ } </Stil> </Kopf> <Text> <div id="aus"> <ul id="imgList"> <li><img src="pto/viele.jpg" ></li> <li><img src="pto/hallo.jpg" ></li> <li><img src="pto/timg.jpg" ></li> <li><img src="pto/zhenjing.jpg"></li> <li><img src="pto/viele.jpg" ></li> </ul> <div id="navDiv"> <a href="javascript:;" ></a> <a href="javascript:;" ></a> <a href="javascript:;" ></a> <a href="javascript:;" ></a> </div> </div> <Skript> fenster.onload = Funktion () { // Dynamische UL-Länge var imgList = document.getElementById("imgList"); var imgArr = document.getElementsByTagName("img"); imgList.style.width=520*imgArr.length+"px"; //Dynamisches Navigationszentrum var navDiv = document.getElementById("navDiv"); var out = document.getElementById("out"); navDiv.style.left = (out.clientWidth - navDiv.clientWidth)/2+"px"; //Positionierungseffekt var allA = document.getElementsByTagName("a"); Var-Index = 0; allA[index].style.backgroundColor="schwarz"; //Klick-Navigationseffekt for(let i=0;i<allA.length;i++){ alleA[i].onclick=Funktion () { Verschieben (Bildliste, -520*i, 20); setzeA(); // imgList.style.left=-520*i+"px"; // alleA[index].style.backgroundColor=""; // Index = i; // alleA[index].style.backgroundColor="schwarz"; } } // Animationseffektfunktion move(obj,target,speed,callback) {//Element; Zielposition; Geschwindigkeit; Rückruffunktion clearInterval(obj.timer); var aktuell = parseInt(window.getComputedStyle(obj,null).left); // Aktuelle Position ermitteln // Bewegungsrichtung bestimmen if (target < current) { Geschwindigkeit = -Geschwindigkeit; } //Timer-Flag obj.timer = window.setInterval(function () { //m beginnt jedes Mal, die Position abzurufen var oldValue = parseInt(window.getComputedStyle(obj,null).left); //Bewegen und an der angegebenen Position anhalten var newValue = oldValue + speed; //Stoppposition anpassen. Kleine Fehler werden mit der Zeit unendlich vergrößert, wenn ((Geschwindigkeit < 0 && neuerWert < Ziel)||(Geschwindigkeit > 0 && neuerWert > Ziel)){ neuerWert = Ziel; } imgList.style.left =neuerWert+"px"; wenn(neuerWert == Ziel){ Intervall löschen(Objekt.Timer); Rückruf(); } },30); } ändern(); //Automatisches Karussell //Ein Timer wird verwendet, um die Funktion change() aufzurufen { setzeIntervall(Funktion () { Index++; index=index % imgArr.Länge; verschieben(Bildliste,-520*Index,20,Funktion () { wenn(index>=imgArr.length-1 ){ imgList.style.left =0; } setzeA(); }); },3000); } Funktion setA() { für (lass i = 0; i <allA.length; i++) { alleA[i].style.backgroundColor=""; allA[index].style.backgroundColor="schwarz"; } } }//beladen </Skript> </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:
|
<<: Installation, Aktivierung und Konfiguration von ModSecurity unter Apache
>>: So filtern Sie während einer vollständigen MySQL-Sicherung bestimmte Bibliotheken heraus
Dieser Artikel ist eine selbstgeschriebene Nachah...
Inhaltsverzeichnis 1. Selbstsortierung der Tabell...
Inhaltsverzeichnis 1. Einführung in Compose 2. Co...
1. Verwenden Sie .gifs statt .jpgs. GIFs sind im ...
Inhaltsverzeichnis Domänenübergreifende Gründe JS...
Inhaltsverzeichnis Offizielle Einführung in Node....
Inhaltsverzeichnis Wie wird die aktuelle Uhrzeit ...
Tab-Auswahlkarten werden auf echten Webseiten seh...
Installationsumgebung: CAT /etc/os-release Zeigt ...
Inhaltsverzeichnis 1. Hintergrund 2. Zusammengese...
Syntax: <marquee> …</marquee> Mithilfe...
1 Ziehen Sie das Bild von hup Docker-Pull Nginx 2...
1. Passwort ändern 1. Ändern Sie das Passwort nor...
Inhaltsverzeichnis SQL-Ausführungsreihenfolge Bin...
Die erste Lösung besteht darin, das Bild in ein ö...