CSS3 verwendet Transformationsverformung in Kombination mit Ereignissen, um die fächerförmige Navigation zu vervollständigen

CSS3 verwendet Transformationsverformung in Kombination mit Ereignissen, um die fächerförmige Navigation zu vervollständigen

Weil ich in diesem Fall das Wort Übergang falsch geschrieben habe, habe ich einen ganzen Nachmittag damit verbracht. Es hat mich wirklich blind gemacht. So einen dummen Fehler werde ich nie wieder machen >_<

1. Wissenspunktanalyse

1. APDiv-Positionierungslayout

2. Die Auswirkungen von Übergang und Transformation bei Klickereignissen.

3. Berechnung der linken und oberen Werte jedes kleinen Symbols.

4. Hören Sie sich nach dem Klicken auf das kleine Symbol das Übergangsereignis des Symbols an.

2. HTML-Quellcode

<div id="Bühne">
  <div id="nav"> 
      <img src="images/1.png"> 
      <img src="bilder/2.png"> 
      <img src="images/3.png"> 
      <img src="images/4.png"> 
      <img src="images/5.png"> 
  </div>
  <div id="home"> <img src="images/home.png"> </div>
</div>

3. CSS-Stil

Körper {
	Rand: 0;
}
Körper{
	Hintergrundfarbe:#eee;}
#Bühne {
	Breite: 300px;
	Höhe: 300px;
	Position: relativ;
	oben: 150px;
	Rand: 0 automatisch;
}
#nav {
	Position: absolut;
	Breite: 120px;
	Höhe: 107px;
	links: 50%;
	Rand links: -60px;
	oben: 50 %;
	Rand oben: -53px;
}
#nav img {
	Breite: 100 %;
	Position: absolut;
	links: 0;
	oben: 0;
	Cursor: Zeiger;
}
#heim {
	Position: absolut;
	Breite: 150px;
	Höhe: 134px;
	links: 0;
	oben: 0;
	rechts: 0;
	unten: 0;
	Rand: automatisch;
	Cursor: Zeiger;
	Übergang: 0,5 s Ein- und Ausstieg;
	
}
#home-Bild {
	Breite: 100 %;
}

4. JavaScript-Quellcode

fenster.onload = funktion(){
	var oHome = document.getElementById("home");
	var oNav = document.getElementById("nav");
	var aImg=oNav.getElementsByTagName("img");
	var imgLen=aImg.length;
	var einAus=true;
	var iR=-260;
	
	//Wenn die Maus auf jedes kleine Symbol klickt for(var i=0;i<imgLen;i++){
		aImg[i].onclick=Funktion(){
			dieser.Stil.Übergang="0,2 s";
			this.style.transform="Skalierung(1,2) Drehung(720 Grad)";
			dieser.Stil.Opazität=0,1;
			addEnd(this,end); //Fügen Sie jedes Mal einen Ereignis-Listener hinzu, wenn auf ein kleines Bild geklickt wird. Wenn das Ereignis endet, wird die Endfunktion ausgeführt.
			}
		}
	//Wenn das Ereignis endet, führen Sie die Endfunktion aus, stellen Sie den Standardwert wieder her und entfernen Sie den Ereignislistener.
	Funktion Ende () {
		dieser.Stil.Übergang="0,1 s";
		this.style.transform="Skalierung(1) Drehung(720 Grad)";
		dieser.Stil.Opazität=1;
		entferneEnde(dies,Ende); 
		}
	
	//Wenn Sie auf das Home-Symbol klicken, dreht es sich beim ersten Mal im Uhrzeigersinn und beim zweiten Mal gegen den Uhrzeigersinn.
	oHome.onclick=Funktion(){
		wenn(anAus)
		{
			this.style.transform="drehen(360 Grad)";
			//Legen Sie die linken und oberen Werte jedes Bildes fest.
			für(var i=0;i<imgLen;i++){
				// hat einen Startwinkel von 30 Grad.
				var oLt=getLeftTop(iR,120/(imgLen-1)*i+30);
				aImg[i].style.left=oLt.l+"px";
				aImg[i].style.top=oLt.t+"px";
				// Jedes Bild hat eine Verzögerung von 100 ms.
				aImg[i].style.transition="0,5 s Ein-Aus-Zeit "+100*i+"ms";
				aImg[i].style.transform="Skalierung(1) Drehung(720 Grad)";
				}
			
			}
		anders
		{
			this.style.transform="drehen(0 Grad)";
			für(var i=0;i<imgLen;i++){
				aImg[i].style.left=0+"px";
				aImg[i].style.top=0+"px";
				//Die Bilder werden in umgekehrter Reihenfolge abgerufen. Jedes Bild hat eine Verzögerung von 100 ms.
				aImg[i].style.transition="0,5 s Ein-Aus-Zeit "+100*(imgLen-i-1)+"ms";
				
				aImg[i].style.transform="Skalierung(1) Drehung(0 Grad)";
				}
			}
		einAus=!einAus;
		
	}
	
}	
	
	
	//Holen Sie sich die linken und oberen Werte des img-Bildes. Satz des Pythagoras: Gegeben sind der eingeschlossene Winkel und die Hypothenuse. Berechnen Sie die Länge der gegenüberliegenden Seite: sin(Radiant)*Hypotenuse. Länge der Seite: cos(Radiant)*Hypotenuse. Bogenmaß = Grad/180*Pi.
	Funktion getLeftTop(iR,iDeg){
		var ileft=Math.round(Math.sin(iDeg/180*Math.PI)*iR);
		var iTop=Math.round(Math.cos(iDeg/180*Math.PI)*iR);
		//Wenn Sie zwei Werte zurückgeben, verwenden Sie die Objektmethode.
		zurückkehren {
			"l":ilinks,
			"t":iOben
			}
		}
	//Endfunktionen hinzufügen und entfernen. Achten Sie auf Übergangsereignisse.
	Funktion addEnd(Objekt,fn){
		obj.addEventListener("Übergangsende",fn,false);
		}
	Funktion removeEnd(obj,fn){
		obj.removeEventListener("Übergangsende",fn,false);
		}

Vollständiger Seitencode

<!doctype html>
<html>
<Kopf>
<meta charset="utf-8">
<title>Zirkularnavigation</title>
<Stil>
Körper {
	Rand: 0;
}
Körper{
	Hintergrundfarbe:#eee;}
#Bühne {
	Breite: 300px;
	Höhe: 300px;
	Position: relativ;
	oben: 150px;
	Rand: 0 automatisch;
}
#nav {
	Position: absolut;
	Breite: 120px;
	Höhe: 107px;
	links: 50%;
	Rand links: -60px;
	oben: 50 %;
	Rand oben: -53px;
}
#nav img {
	Breite: 100 %;
	Position: absolut;
	links: 0;
	oben: 0;
	Cursor: Zeiger;
}
#heim {
	Position: absolut;
	Breite: 150px;
	Höhe: 134px;
	links: 0;
	oben: 0;
	rechts: 0;
	unten: 0;
	Rand: automatisch;
	Cursor: Zeiger;
	Übergang: 0,5 s Ein- und Ausstieg;
	
}
#home-Bild {
	Breite: 100 %;
}
</Stil>
<Skript>
fenster.onload = funktion(){
	var oHome = document.getElementById("home");
	var oNav = document.getElementById("nav");
	var aImg=oNav.getElementsByTagName("img");
	var imgLen=aImg.length;
	var einAus=true;
	var iR=-260;
	
	//Wenn die Maus auf jedes kleine Symbol klickt for(var i=0;i<imgLen;i++){
		aImg[i].onclick=Funktion(){
			dieser.Stil.Übergang="0,2 s";
			this.style.transform="Skalierung(1,2) Drehung(720 Grad)";
			dieser.Stil.Opazität=0,1;
			addEnd(this,end); //Fügen Sie jedes Mal einen Ereignis-Listener hinzu, wenn auf ein kleines Bild geklickt wird. Wenn das Ereignis endet, wird die Endfunktion ausgeführt.
			}
		}
	//Wenn das Ereignis endet, führen Sie die Endfunktion aus, stellen Sie den Standardwert wieder her und entfernen Sie den Ereignislistener.
	Funktion Ende () {
		dieser.Stil.Übergang="0,1 s";
		this.style.transform="Skalierung(1) Drehung(720 Grad)";
		dieser.Stil.Opazität=1;
		entferneEnde(dies,Ende); 
		}
	
	//Wenn Sie auf das Home-Symbol klicken, dreht es sich beim ersten Mal im Uhrzeigersinn und beim zweiten Mal gegen den Uhrzeigersinn.
	oHome.onclick=Funktion(){
		wenn(anAus)
		{
			this.style.transform="drehen(360 Grad)";
			//Legen Sie die linken und oberen Werte jedes Bildes fest.
			für(var i=0;i<imgLen;i++){
				// hat einen Startwinkel von 30 Grad.
				var oLt=getLeftTop(iR,120/(imgLen-1)*i+30);
				aImg[i].style.left=oLt.l+"px";
				aImg[i].style.top=oLt.t+"px";
				// Jedes Bild hat eine Verzögerung von 100 ms.
				aImg[i].style.transition="0,5 s Ein-Aus-Zeit "+100*i+"ms";
				aImg[i].style.transform="Skalierung(1) Drehung(720 Grad)";
				}
			
			}
		anders
		{
			this.style.transform="drehen(0 Grad)";
			für(var i=0;i<imgLen;i++){
				aImg[i].style.left=0+"px";
				aImg[i].style.top=0+"px";
				//Die Bilder werden in umgekehrter Reihenfolge abgerufen. Jedes Bild hat eine Verzögerung von 100 ms.
				aImg[i].style.transition="0,5 s Ein-Aus-Zeit "+100*(imgLen-i-1)+"ms";
				
				aImg[i].style.transform="Skalierung(1) Drehung(0 Grad)";
				}
			}
		einAus=!einAus;
		
	}
	
}	
	
	
	//Holen Sie sich die linken und oberen Werte des img-Bildes. Satz des Pythagoras: Gegeben sind der eingeschlossene Winkel und die Hypothenuse. Berechnen Sie die Länge der gegenüberliegenden Seite: sin(Radiant)*Hypotenuse. Länge der Seite: cos(Radiant)*Hypotenuse. Bogenmaß = Grad/180*Pi.
	Funktion getLeftTop(iR,iDeg){
		var ileft=Math.round(Math.sin(iDeg/180*Math.PI)*iR);
		var iTop=Math.round(Math.cos(iDeg/180*Math.PI)*iR);
		//Wenn zwei Werte zurückgegeben werden, verwenden Sie die Objektmethode.
		zurückkehren {
			"l":ilinks,
			"t":iOben
			}
		}
	//Endfunktionen hinzufügen und entfernen. Achten Sie auf Übergangsereignisse.
	Funktion addEnd(Objekt,fn){
		obj.addEventListener("Übergangsende",fn,false);
		}
	Funktion removeEnd(obj,fn){
		obj.removeEventListener("Übergangsende",fn,false);
		}
	

</Skript>
</Kopf>

<Text>
<div id="Bühne">
  <div id="nav"> <img src="Bilder/1.png"> <img src="Bilder/2.png"> <img src="Bilder/3.png"> <img src="Bilder/4.png"> <img src="Bilder/5.png"> </div>
  <div id="home"> <img src="images/home.png"> </div>
</div>
</body>
</html>

Oben sind die Details, wie CSS3 Transform Deformation kombiniert mit Ereignissen verwendet, um die fächerförmige Navigation zu vervollständigen. Weitere Informationen zur fächerförmigen Navigation in CSS3 finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

<<:  Layui implementiert Beispielcode für Abfragen mit mehreren Bedingungen

>>:  Detaillierte Erläuterung der grundlegenden Verwendung von Apache POI

Artikel empfehlen

So installieren Sie den Xrdp-Server (Remote Desktop) unter Ubuntu 20.04

Xrdp ist eine Open-Source-Implementierung des Rem...

Implementierungsideen für die Synchronisierung von Docker-Registry-Images

Einleitung Bisher wurden unsere Docker-Images in ...

JS ES: Neue Funktion zur variablen Entkopplungszuweisung

Inhaltsverzeichnis 1. Entkoppelte Zuweisung von A...

HTML- und CSS-Grundlagen (unbedingt lesen)

(1) HTML: HyperText Markup Language, die im Wesen...

Beispiel für den Import von Nginx-Protokollen in Elasticsearch

Die Nginx-Protokolle werden von Filebeat gesammel...

Einführung in die gängigen Festplattenverwaltungsbefehle von Linux

Inhaltsverzeichnis 1. df-Befehl 2. du-Befehl 3. B...

Die Grundprinzipien und die detaillierte Verwendung des Ansichtsfensters

1. Übersicht über das Ansichtsfenster Mobile Brow...

So installieren Sie MySQL 5.7 unter Windows

Laden Sie zuerst die komprimierte Version von MyS...

So installieren Sie JDK und Mysql auf dem Linux-System Ubuntu 18.04

Plattformbereitstellung 1. JDK installieren Schri...

Beispielanalyse für MySQL-Transaktionen, Isolationsebenen und Sperrenverwendung

Dieser Artikel beschreibt anhand von Beispielen M...

Spezifische Verwendung interner temporärer MySQL-Tabellen

Inhaltsverzeichnis UNION Tabelleninitialisierung ...

So installieren Sie binäres MySQL unter Linux und knacken das MySQL-Passwort

1. Stellen Sie sicher, dass das System über die e...