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 konfigurieren Sie SSL für den Koa2-Dienst

I. Einleitung 1: SSL-Zertifikat Mein Domänenname ...

Einige grundlegende Anweisungen für Docker

Inhaltsverzeichnis Einige grundlegende Anweisunge...

So greifen Sie in Docker auf den lokalen Computer (Hostcomputer) zu

Frage Wie greife ich in Docker auf die lokale Dat...

MySQL verwendet frm-Dateien und ibd-Dateien, um Tabellendaten wiederherzustellen

Inhaltsverzeichnis Einführung in FRM-Dateien und ...

Einige Erfahrung im Aufbau des React Native-Projektframeworks

React Native ist ein plattformübergreifendes Fram...

Detaillierte Analyse der SQL-Ausführungsschritte

Detaillierte Analyse der SQL-Ausführungsschritte ...

Vant+postcss-pxtorem implementiert Browser-Anpassungsfunktion

Rem-Layout-Anpassung Die Stile in Vant verwenden ...

Binäre Typoperationen in MySQL

Dieser Artikel stellt hauptsächlich die binären O...

JavaScript implementiert einen verschiebbaren Fortschrittsbalken

In diesem Artikel wird der spezifische JavaScript...

MySQL-Ansichtsprinzipien und grundlegende Bedienungsbeispiele

Dieser Artikel veranschaulicht anhand von Beispie...

Detaillierte Erläuterung der benutzerdefinierten Vue-Anweisungen

Inhaltsverzeichnis Benutzerdefinierte Vue-Direkti...