Natives JavaScript zum Erzielen von Folieneffekten

Natives JavaScript zum Erzielen von Folieneffekten

Wenn wir eine Seite erstellen, insbesondere eine Homepage, entwerfen wir normalerweise eine Navigationsleiste, die auf andere Hauptseiten der gesamten Website verweisen kann, oder einen Absatz mit Einführungstext der Website, der den Sprung zu dieser Seite enthält. Normalerweise verwenden wir das Titelattribut, um diesen Sprunglinks einen erklärenden Text hinzuzufügen, aber wir können das Benutzererlebnis verbessern, indem wir eine Foliendemo erstellen. Wenn der Benutzer die Maus über einen Link bewegt, wird darunter die entsprechende Bildvorschau angezeigt. Dies verschönert nicht nur die Seite, sondern erhöht auch die Interaktivität der gesamten Website erheblich. Lassen Sie uns gemeinsam ein schönes Diashow-Skript erstellen.

Vorbereitung: Bevor Sie das Skript erstellen, müssen Sie ein Bild erstellen, das alle Vorschaueffekte zeigen soll, wie unten gezeigt:

Hauptseite

Erstellen Sie eine geordnete Liste und fügen Sie einige Seitenlinks hinzu

<Text>
 <h1>Einfache Animationsproduktion</h1>
 <p>Link-Sprungzielanzeige</p>
 <ol id="Liste">
 <li>
 <a href="list1.html" >Vorname</a>
 </li>
 <li>
 <a href="list2.html" >Zweite</a>
 </li>
 <li>
 <a href="list3.html" >Drittens</a>
 </li>
 </ol>
 <!--Dynamisch hinzugefügter Bildanzeigebereich>-->
<script src="script.js"></script>
</body>

Stil.css

Fügen Sie dieser Navigationsleiste einige Stile hinzu

ol{
 Polsterung links: 20px;
}
altes li{
 Anzeige: inline;
 Rand rechts: 10px;
}
#Sicht{
 Breite: 600px;
 Höhe: 200px;
 Position: absolut;
}
#Diashow{
 Breite: 200px;
 Höhe: 200px;
 Überlauf: versteckt;
 Position: relativ;
}

script.js

Umsetzungsideen:

Bevor wir ein Skript erstellen, sollten wir unsere Gedanken ordnen und festlegen, was wir tun möchten.
1. Erstellen Sie einige Knoten, um Vorschaubilder anzuzeigen
2. Fügen Sie dem a-Tag das Ereignis onmouseover hinzu
3. Der Animationseffekt wird durch die Funktion setTimeout () und die Bewegung des linken und oberen Offsets des Bildelements vervollständigt (die linken und oberen Attribute müssen beim Abrufen der festgelegten Attribute in Ganzzahlen umgewandelt werden).

/*Geteilte Last*/
Funktion addLoadEvent(Spaß){
 var oldLoad = Fenster.onload;
 wenn(Typ von oldLoad != "Funktion"){
  window.onload = Spaß;
 }anders{
  fenster.onload = funktion(){
   alteLoad();
   Spaß();
  }
 }
}

/*EinfügenNach*/
Funktion insertAfter(neuerKnoten,alterKnoten){
 var parent = alterNode.parentNode;
 wenn(übergeordnet.letztesKind == alterKnoten){
  übergeordnetes Element.anhängenKind(neuer Knoten);
 }anders{
  parent.insertBefore(neuerKnoten,alterKnoten.nächstesGeschwisterelement);
 }
}

Funktion zeigen(){
 /* Abwärtskompatibilität */
 wenn(!document.getElementById) false zurückgibt;
 wenn(!document.getElementsByTagName) false zurückgibt;
 wenn(!document.createElement) false zurückgibt;

 /*Liste der Listen abrufen*/
 var Liste = document.getElementById("Liste");

 /*Bildanzeigebereich erstellen*/
 /*Äußeres Div*/
 var div = document.createElement("div");
 div.setAttribute("id","Diashow");
 /*Bild*/
 var img = document.createElement("img");
 img.setAttribute("id","ansicht");
 img.setAttribute("src","bild.jpg");
 img.setAttribute("alt","Bildvorschau");
 /*Fügen Sie die Funktion insertAfter() hinzu, um sicherzustellen, dass das div direkt nach der Liste steht*/
 einfügenNach(div,Liste);
 div.appendChild(img);

 /*Bind-Ereignis*/
 var a = list.getElementsByTagName("a");
 a[0].onmouseover = Funktion(){
  moveElement("Ansicht",0,0,10);
 };
 a[1].onmouseover = Funktion(){
  moveElement("Ansicht",-200,0,10);
 };
 a[2].onmouseover = Funktion(){
  moveElement("Ansicht",-400,0,10);
 };
}


/*Die Bedeutung der Bewegungs*-Parameter: die ID des Elements, in dem sich das Bild befindet; der Offset nach links, um den das Bild verschoben werden soll; der obere Offset; die Zeit*/
Funktion moveElement(elementID,links,oben,intervall){
 /* Abwärtskompatibilität */
 wenn(!document.getElementById) false zurückgibt;
 wenn(!document.getElementById(elementID)) false zurückgibt;

 /*Bild abrufen*/
 var img = document.getElementById(elementID);

 /*Bestimmen Sie, ob sich das aktuelle Element bereits in einer Animationsfunktion befindet*Ansammlung von Animationen verhindern*/
 wenn(img.moveNow){
  /* Lösche den Animationsstapel */
  : Lösche Timeout (img.moveNow);
 }

 /*Bestimmen Sie, ob das Element links und oben gesetzt ist*/
 wenn(!img.style.left){
  img.style.left = "0px";
 }
 wenn(!img.style.top){
  img.style.top = "0px";
 }


 /* Aktuelle Position des Bildes abrufen* Der zu diesem Zeitpunkt abgerufene Wert liegt im Zeichenfolgenformat vor. Verwenden Sie parseInt(), um die Konvertierung in eine Zeichenfolge zu erzwingen*/
 var oldLeft = parseInt(img.style.left);
 var oldTop = parseInt(img.style.top);

 /*Vergleiche die aktuelle Position mit der Zielposition*/
 wenn(altLinks == links && altOben == oben){
  gibt true zurück;
 }

 /*Um das Benutzererlebnis zu gewährleisten, sollte die Bewegung bei großen Entfernungen schneller sein.*Bei kleinen Entfernungen kann sie langsamer sein.*Beurteilen Sie die Entfernung anhand der Entfernungsdifferenz und bewegen Sie sich jedes Mal um 1/10 der Entfernungsdifferenz.
 */
 /*Die Variable „dist“ wird verwendet, um die Distanz zwischen dem aktuellen Offset und dem Ziel-Offset zu speichern*/
 var dist = 0;
 wenn(altLinks < links){
  /*ceil() rundet auf, um Dezimalstellen und Zahlen kleiner als 1 zu vermeiden*/
  dist = Math.ceil((left-oldLeft)/10);
  altLinks = altLinks+Entfernung;
 }
 wenn (altesLinks > links) {
  dist = Math.ceil((altesLinks-links)/10);
  altLinks = altLinks - Abstand;
 }
 wenn(altesTop < top){
  dist = Math.ceil((oben-altOben)/10);
  altesTop = altesTop+dist;
 }
 wenn(altesTop > oben){
  dist = Math.ceil((altesTop-Top)/10);
  altesTop = altesTop - Vert;
 }

 /*bewegen*/
 img.style.left = altesLeft+"px";
 img.style.top = altesTop+"px";

 /*Funktion aufrufen*/
 var Ergebnis = "moveElement('"+elementID+"',"+left+","+top+","+interval+")";
 /*Legen Sie die Funktion, die die Animation ausführt, als Attribut dieses Elements fest*/
 img.moveNow = setTimeout(Ergebnis,Intervall);
}

addLoadEvent(anzeigen);

Endgültiger Ausführungseffekt

Wenn wir jetzt die Maus über verschiedene Listenelemente bewegen, werden die Bilder unter der Liste an die entsprechende Position des Vorschaubilds verschoben.

An diesem Punkt ist eine einfache Diashow-Demo abgeschlossen.

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:
  • Implementierung von JS-Folien
  • JavaScript zum Erreichen des Quellcodes für den Folieneffekt beim Bildwechsel
  • Schöner Code für den Bildrotationseffekt im JS-Tab (anpassbare Diashow und Bildpufferumschaltung)
  • JS+FLASH-Diashow-Bildskript, der Code ist so organisiert, dass der Aufruf bequemer ist!
  • Verwenden von JavaScript zum Erstellen von wartbarem Diashow-Code
  • js, um Beispielcode für Diashow-Bilder zu erhalten
  • Diashow-Umschalteffekt durch JS implementiert
  • JS realisiert den Effekt der Wiedergabe mehrerer Bilder nacheinander
  • So implementieren Sie den Taobao-Diashow-Effekt mit JS
  • js mit einigen automatischen Bildkarussell-Diashow-Spezialeffekten Code-Sharing

<<:  Die einfachste Lösung für das Problem, dass Sublime Text in Ubuntu kein Chinesisch eingeben kann

>>:  So ändern Sie die Standardspeicher-Engine in MySQL

Artikel empfehlen

Detaillierte Erläuterung des Lazy Loading und Preloading von Webpack

Inhaltsverzeichnis Normale Belastung Lazy Loading...

So setzen Sie das Root-Passwort in Linux mysql-5.6 zurück

1. Überprüfen Sie, ob der MySQL-Dienst gestartet ...

So konfigurieren Sie die Basic Auth-Anmeldeauthentifizierung in Nginx

Manchmal erstellen wir einen Dateiserver über ngi...

Eine kurze Diskussion darüber, ob zu viele MySQL-Datenabfragen OOM verursachen

Inhaltsverzeichnis Auswirkungen eines vollständig...

Implementierungsprinzip und Konfiguration der MySql Master-Slave-Replikation

Die Trennung von Lese- und Schreibzugriffen in Da...

Detaillierte Erklärung, wie zwei Node.js-Prozesse kommunizieren

Inhaltsverzeichnis Vorwort Kommunikation zwischen...

Detaillierte Analyse der Rolle von HTML-Kommentar-Tags <!--...-->

Wenn wir den Quellcode vieler Websites überprüfen...

Analyse des HTTP-Schnittstellentestprozesses basierend auf Postman

Ich habe zufällig ein tolles Tutorial zum Thema k...

Einführung in MySQL-Isolationsebene, Sperre und MVCC

Ziel dieses Artikels ist es, die Beziehung zwisch...

Neue Verwendung von watch und watchEffect in Vue 3

Inhaltsverzeichnis 1. Neue Verwendung der Uhr 1.1...

Installations- und Konfigurationstutorial von MongoDB unter Linux

MongoDB -Installation Wählen Sie die Installation...