


Mit der HTML5-Transformation eines dreidimensionalen Würfels wird ein dreidimensionaler 360-Grad-Rotationseffekt ohne Sackgassen erzielt. HTML5-Tutorial-Kenntnisse
Um das Wesen der Transformation besser zu verstehen, haben wir uns entschieden, ein dreidimensionales Würfelmodell zu erstellen, das einen dreidimensionalen 360-Grad-Rotationseffekt ohne Sackgassen erzielen kann.
Allerdings ist es schwierig, die Ansichtsreihenfolge jedes Gesichts beim Drehen zu bestimmen, und es ist noch nicht perfekt gelöst. Ich hoffe, jemand kann es beantworten!
Der Quellcode wird direkt beigesteuert:
<script> ////////////////////////////////////// <br>//Private Variablen initialisieren<br>/ ////////////////////////////////////// <br>//Initialisiere den Quader Position und Größe<br>var left = left_init; <br>var long = long_init; <br>var height = height_init; Transformationswinkel, der Standardwert ist 0 <br>varRotateY = 0; <br>Var ZIndex = 0; Seiten des Quaders <br>var div_behind; <br>var div_top; <br><br> ///////// /////////////////////////// <br>//Quader initialisieren<br>/// ////////// ////////////////////////// <br>//Konstruieren Sie sechs Gesichter basierend auf der Initiale Position. <br>this.init = function() { <br>//Create front div <br>div_front = document.createElement("div"); <br>div_front.className = "cuboid_side_div"; = "div front"; <br>div_front.style.backgroundColor="#f1b2b2"; <br>document.body.appendChild(div_front); <br>//Create behind div <br>div_behind = document.createElement(" div"); <br>div_behind.className = "cuboid_side_div"; <br>div_behind.innerHTML = "div behind"; <br>div_behind.style.backgroundColor="#bd91eb"; <br>document.body.appendChild( div_behind); <br>//Create left div <br>div_left = document.createElement("div"); <br>div_left.innerHTML = "div left"; >div_left.style.backgroundColor="#64a3c3"; <br>document.body.appendChild(div_left); <br>//Create right div <br>div_right = document.createElement("div"); .className = "cuboid_side_div"; <br>div_right.innerHTML = "div_right"; <br>div_right.style.backgroundColor="<br>document.body.appendChild(div_right); Top-Div erstellen <br>div_top = document.createElement("div"); <br>div_top.className = "cuboid_side_div" <br>div_top.innerHTML = "div top" <br>div_top.style.backgroundColor=" #e7db78"; <br>document.body.appendChild(div_top); <br>//Unteres Div erstellen <br>div_bottom = document.createElement("div"); <br>div_bottom.className = "cuboid_side_div"; <br>div_bottom.innerHTML = "div bottom"; <br>div_bottom.style.backgroundColor="#e79c78" <br>this.refresh(); ; <br>//Redraw<br>this.refresh = function() <br>{ <br>//Div_front-Stil definieren <br>div_front.style.left = left "px"; top = top "px"; <br>div_front.style.width = long "px"; <br>div_front.style.height = height "px"; <br>div_front.style.webkitTransformOrigin = "50% 50%" ((-1)*width / 2) "px"; <br>//Div_behind-Stil definieren<br>div_behind.style.left = left "px"; <br>div_behind.style.top = top "px" ; <br>div_behind.style.width = div_front.style.width; <br>div_behind.style.height = div_front.style.height; <br>div_behind.style.webkitTransformOrigin = "50% 50% " ((-1 ) *width / 2) "px"; <br>//Div_left-Stil definieren <br>div_left.style.left = left ((long - height) / 2) "px"; ((height - width) / 2) "px"; <br>div_left.style.width = height "px"; <br>div_left.style.height = width "px"; "50% 50%" ((-1) * long /2 ) "px"; <br>//Div_right-Stil definieren<br>div_right.style.left = div_left.style.left; top = div_left.style.top; <br>div_right.style.width = div_left.style.width; <br>div_right.style.height = div_left.style.height; <br>div_right.style.webkitTransformOrigin = "50 % 50 % " ((-1) * long /2 ) "px"; <br>//Div_top-Stil definieren<br>div_top.style.left = left "px"; <br>div_top.style.top = top ( (Höhe - Breite)/ 2) "px"; <br>div_top.style.width = long "px"; <br>div_top.style.height = width "px"; 50 % 50 % " ((-1) * height /2 ) "px"; <br>//Div_bottom-Stil definieren <br>div_bottom.style.left = div_top.style.left; <br>div_bottom.style. top = div_top.style.top; <br>div_bottom.style.width = div_top.style.width; <br>div_bottom.style.height = div_top.style.height; <br>div_bottom.style.webkitTransformOrigin = "50% 50 % " ((-1) * height /2 ) "px"; <br>this.rotate(rotateX,rotateY,rotateZ); <br>}; <br>//Den Würfel drehen<br>this.rotate = function(x,y,z) { <br>rotateX = x; <br>rotateZ = z;var rotierenY_front = rotierenY; <br>var rotierenZ_front = rotierenZ; <br>//判断各个面旋转角度 <br>var rotationX_behind = rotationX_front 180; <br>var rotationY_behind = rotationY_front * (-1); <br>var rotateZ_behind = rotateZ_front * (-1); <br>var rotierenX_top = rotierenX_front 90; <br>var rotierenY_top = rotierenZ_front; <br>var rotierenZ_top = rotierenY_front * (-1); <br>var rotierenX_bottom = rotierenX_front-90; <br>var rotierenY_bottom = rotierenZ_front * (-1); <br>var rotateZ_bottom = rotationY_front; <br>var rotierenX_left = rotierenX_front 90; <br>var rotateY_left = rotateZ_front - 90; <br>var rotierenZ_left = rotierenY_front * (-1); <br>var rotierenX_right = rotierenX_front 90; <br>var rotateY_right = rotateZ_front 90; <br>var rotateZ_right = rotationY_front * (-1); <br>//判断各个面的z轴显示顺序 <br>var zIndex_front_default = -1; <br>var zIndex_behind_default = -6; <br>var zIndex_top_default = -5; <br>var zIndex_bottom_default = -2; <br>var zIndex_left_default = -4; <br>var zIndex_right_default = -3; <br>var xI = (rotateX_front / 90) % 4; <br>var yI = (rotateY_front / 90) % 4; <br>var zI = (rotateZ_front / 90) % 4; <br>var zIndex_matrix = new Array(); <br>for(var i = 0; i < 3;i ) { <br />zIndex_matrix.push(new Array()); <br />} <br />zIndex_matrix = [["","zIndex_top",""], <br />["zIndex_left","zIndex_front","zIndex_right"], <br />["","zIndex_bottom", ""]]; <br />var zIndex_matrix_behind = "zIndex_behind"; <br />//计算zIndex <br />if((xI >= 0 && xI < 1) ||(xI >= -4 && xI < -3)) { <br />} else if(( xI >= 1 && xI < 2) ||(xI >= -3 && xI < -2)) { <br />var zIndex_matrix_tmp = zIndex_matrix[0][1]; <br />zIndex_matrix[0][1] = zIndex_matrix[1][1]; <br />zIndex_matrix[1][1] = zIndex_matrix[1][2]; <br />zIndex_matrix[1][2] = zIndex_matrix_behind; <br />zIndex_matrix_behind = zIndex_matrix_tmp; <br />} else if((xI >= 2 && xI < 3) ||(xI >= -2 && xI < -1)) { <br />var zIndex_matrix_tmp = zIndex_matrix[0][1] ; <br />zIndex_matrix[0][1] = zIndex_matrix[2][1]; <br />zIndex_matrix[2][1] = zIndex_matrix_tmp; <br />zIndex_matrix_tmp = zIndex_matrix[1][1]; <br />zIndex_matrix[1][1] = zIndex_matrix_behind; <br />zIndex_matrix_behind = zIndex_matrix_tmp; <br />} else if((xI >= 3 && xI < 4) ||(xI >= -1 && xI < 0)) { <br />var zIndex_matrix_tmp = zIndex_matrix[0][1]; <br />zIndex_matrix[0][1] = zIndex_matrix_behind; <br />zIndex_matrix_behind = zIndex_matrix[2][1]; <br />zIndex_matrix[2][1] = zIndex_matrix[1][1]; <br />zIndex_matrix[1][1] = zIndex_matrix_tmp; <br />} <br />if((yI > 0 && yI <= 1) ||(yI > -4 && yI <= -3)) { <br />var zIndex_matrix_tmp = zIndex_matrix[1][ 0]; <br />zIndex_matrix[1][0] = zIndex_matrix_behind; <br />zIndex_matrix_behind = zIndex_matrix[1][2]; <br />zIndex_matrix[1][2] = zIndex_matrix[1][1]; <br />zIndex_matrix[1][1] = zIndex_matrix_tmp; <br />} else if((yI > 1 && yI <= 2) ||(yI > -3 && yI <= -2)) { <br />var zIndex_matrix_tmp = zIndex_matrix[1][0] ; <br />zIndex_matrix[1][0] = zIndex_matrix[1][2]; <br />zIndex_matrix[1][2] = zIndex_matrix_tmp; <br />zIndex_matrix_tmp = zIndex_matrix[1][1]; <br />zIndex_matrix[1][1] = zIndex_matrix_behind; <br />zIndex_matrix_behind = zIndex_matrix_tmp; <br />} else if((yI > 2 && yI <= 3) ||(yI > -2 && yI <= -1)) { <br />var zIndex_matrix_tmp = zIndex_matrix[1][0] ; <br />zIndex_matrix[1][0] = zIndex_matrix[1][1]; <br />zIndex_matrix[1][1] = zIndex_matrix[1][2]; <br />zIndex_matrix[1][2] = zIndex_matrix_behind; <br />zIndex_matrix_behind = zIndex_matrix_tmp; <br />} else if((yI > 3 && yI <= 4) ||(yI > -1 && yI <= 0)) { <br />} <br /><br />if((zI > 0 && zI <= 1) ||(zI > -4 && zI <= -3)) { <br />var zIndex_matrix_tmp = zIndex_matrix[0][1]; <br />zIndex_matrix[0][1] = zIndex_matrix[1][0]; <br />zIndex_matrix[1][0] = zIndex_matrix[2][1]; <br />zIndex_matrix[2][1] = zIndex_matrix[1][2]; <br />zIndex_matrix[1][2] = zIndex_matrix_tmp; <br />} else if((zI > 1 && zI <= 2) ||(zI > -3 && zI <= -2)) { <br />var zIndex_matrix_tmp = zIndex_matrix[0][1] ; <br />zIndex_matrix[0][1] = zIndex_matrix[2][1]; <br />zIndex_matrix[2][1] = zIndex_matrix_tmp; <br />zIndex_matrix_tmp = zIndex_matrix[1][0]; <br />zIndex_matrix[1][0] = zIndex_matrix[1][2]; <br />zIndex_matrix[1][2] = zIndex_matrix_tmp; <br />} else if((zI > 2 && zI <= 3) ||(zI > -2 && zI <= -1)) { <br />var zIndex_matrix_tmp = zIndex_matrix[0][1] ; <br />zIndex_matrix[0][1] = zIndex_matrix[1][2]; <br />zIndex_matrix[1][2] = zIndex_matrix[2][1]; <br />zIndex_matrix[2][1] = zIndex_matrix[1][0]; <br />zIndex_matrix[1][0] = zIndex_matrix_tmp; <br />} else if((zI > 3 && zI <= 4) ||(zI > -1 && zI <= 0)) { <br />} <br />//赋值zIndex <br /> eval(zIndex_matrix[0][1] "=" zIndex_top_default); <br />eval(zIndex_matrix[1][0] "=" zIndex_left_default); <br />eval(zIndex_matrix[1][1] "=" zIndex_front_default); <br />eval(zIndex_matrix[1][2] "=" zIndex_right_default); <br />eval(zIndex_matrix[2][1] "=" zIndex_bottom_default); <br />eval(zIndex_matrix_behind "=" zIndex_behind_default); <br />//front <br />var transform_rotate_front = "perspective(500px) rotateX(" rotateX_front <br />"deg) rotateY(" rotateY_front <br />"deg) rotateZ(" rotateZ_front "deg)"; <br />div_front.style.webkitTransform = transform_rotate_front; <br />div_front.style.zIndex = zIndex_front; <br />//behind <br />var transform_rotate_behind = "perspective(500px) rotateX(" rotateX_behind <br />"deg) rotateY(" rotateY_behind <br />"deg) rotateZ(" rotateZ_behind "deg)"; <br />div_behind.style.webkitTransform = transform_rotate_behind; <br />div_behind.style.zIndex = zIndex_behind; <br />//left <br />var transform_rotate_left = "perspective(500px) rotateX(" rotateX_left <br />"deg) rotateZ(" rotateZ_left <br />"deg) rotateY(" rotateY_left "deg)"; <br />div_left.style.webkitTransform = transform_rotate_left; <br />div_left.style.zIndex = zIndex_left; <br />//right <br />var transform_rotate_right = "perspective(500px) rotateX(" rotateX_right <br />"deg) rotateZ(" rotateZ_right <br />"deg) rotateY(" rotateY_right "deg)"; <br />div_right.style.webkitTransform = transform_rotate_right; <br />div_right.style.zIndex = zIndex_right; <br />//top <br />var transform_rotate_top = "perspective(500px) rotateX(" rotateX_top <br />"deg) rotateZ(" rotateZ_top <br />"deg) rotateY(" rotateY_top "deg)"; <br />div_top.style.webkitTransform = transform_rotate_top; <br />div_top.style.zIndex = zIndex_top; <br />//bottom <br />var transform_rotate_bottom = "perspective(500px) rotateX(" rotateX_bottom <br />"deg) rotateZ(" rotateZ_bottom <br />"deg) rotateY(" rotateY_bottom "deg)"; <br />div_bottom.style.webkitTransform = transform_rotate_bottom; <br />div_bottom.style.zIndex = zIndex_bottom; <br />} ; <br />//重置长方体的长、宽、高 <br />this.resize = function(new_long, new_width, new_height) <br />{ <br />long = new_long; <br />largeur = new_width; <br />hauteur = new_height; <br />this.refresh(); <br />} ; <br />//重置长方体的位置 <br />this.move = function(new_left,new_top) { <br />top = new_top; <br />left = new_left; <br />this.refresh(); <br />} ; <br />} <br /><br />function transform() { <br />cuboid.resize(parseInt(document.getElementById("long").value), <br />parseInt(document.getElementById("width"). valeur), <br />parseInt(document.getElementById("height").value)); <br />cuboid.move(parseInt(document.getElementById("left").value), <br />parseInt(document.getElementById("top").value)); <br />cuboid.rotate(parseInt(document.getElementById("rotatex").value), <br />parseInt(document.getElementById("rotatey").value), <br />parseInt(document.getElementById("rotatez" ).valeur)); <br />//cuboid.refresh(); <br />} <br /></script>
gauche :px
haut :< ;/input>px
long :px
width :px
hauteur :px
rotateX : deg
rotateY : deg
rotateZ : deg
<script> <br>var cuboid = new cuboidModel(parseInt(document.getElementById("left").value), <br>parseInt(document.getElementById("top").value), <br>parseInt(document.getElementById(" long").value), <br>parseInt(document.getElementById("width").value), <br>parseInt(document.getElementById("height").value)); <br>cuboid.init(); <br></script>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie man mit CSS rotierende Hintergrundbildanimationseffekte von Elementen implementiert, kann die visuelle Attraktivität und das Benutzererlebnis von Webseiten erhöhen. In diesem Artikel wird erläutert, wie Sie mithilfe von CSS den rotierenden Hintergrundanimationseffekt von Elementen erzielen, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir ein Hintergrundbild vorbereiten, das ein beliebiges Bild sein kann, beispielsweise ein Bild der Sonne oder eines elektrischen Ventilators. Speichern Sie das Bild und nennen Sie es „bg.png“. Erstellen Sie als Nächstes eine HTML-Datei, fügen Sie der Datei ein div-Element hinzu und legen Sie es auf fest

Wie komprimiere und formatiere ich Bilder in Vue? Bei der Frontend-Entwicklung müssen wir häufig Bilder komprimieren und formatieren. Besonders in der mobilen Entwicklung ist es wichtig, Bilder zu komprimieren und zu formatieren, um die Seitenladegeschwindigkeit zu verbessern und Benutzerverkehr zu sparen. Im Vue-Framework können wir einige Werkzeugbibliotheken zum Komprimieren und Formatieren von Bildern verwenden. Komprimierung mithilfe der Kompressor.js-Bibliothek compress.js ist ein JavaS zum Komprimieren von Bildern

Interpretation der CSS3D-Ansichtseigenschaften: Transformation und Perspektive, spezifische Codebeispiele sind erforderlich. Einführung: Im modernen Webdesign sind 3D-Effekte zu einem sehr beliebten Element geworden. Durch die Transformations- und Perspektiveigenschaften von CSS können wir Webseiten ganz einfach visuelle 3D-Effekte hinzufügen, um sie lebendiger und attraktiver zu machen. In diesem Artikel werden diese beiden Eigenschaften erläutert und spezifische Codebeispiele bereitgestellt. 1. Transformationsattribut: transf

Wie implementiert man Bildanimationen und Verlaufseffekte in Vue? Vue ist ein fortschrittliches Framework zum Erstellen von Benutzeroberflächen, mit dem sich Animationen und Verlaufseffekte einfach implementieren lassen. In diesem Artikel stellen wir vor, wie Sie mit Vue Bildanimationen und Verlaufseffekte implementieren, und stellen einige Codebeispiele bereit. 1. Verwenden Sie die Übergangseffekte von Vue, um Bildanimationen zu implementieren. Vue bietet integrierte Anweisungen für Übergangseffekte, die das Hinzufügen von Animationseffekten zu HTML-Elementen erleichtern. Wenn Sie Übergangseffekte verwenden, können Sie Bildelemente umbrechen und den Elementen Übergangsanweisungen hinzufügen. Beispiel

Erkundung der CSS-Rotationseigenschaften: Transformieren und Drehen. Einführung: Im modernen Webdesign müssen wir Elementen häufig einige Spezialeffekte hinzufügen, um die Attraktivität und Benutzererfahrung der Seite zu erhöhen. Unter diesen ist die Drehung von Elementen ein häufiger Effekt, der uns dabei helfen kann, einzigartige visuelle Effekte zu erzeugen. In CSS können wir das Transformationsattribut und sein Rotationsattribut „Rotate“ verwenden, um die Drehung des Elements zu erreichen. In diesem Artikel wird die Verwendung dieser beiden Eigenschaften untersucht und Code bereitgestellt

Detaillierte Erläuterung der kreisförmigen CSS-Layout-Eigenschaften: Randradius und Transformation 1. Einführung Im Webdesign wird kreisförmiges Layout häufig zum Erstellen kreisförmiger Elemente wie Schaltflächen, Avatare usw. verwendet. Die beiden wichtigsten CSS-Eigenschaften zum Implementieren eines kreisförmigen Layouts sind border-radius und transform. In diesem Artikel wird detailliert beschrieben, wie die Eigenschaften „border-radius“ und „transform“ zum Erstellen eines Ringlayouts verwendet werden, und es werden spezifische Codebeispiele bereitgestellt. 2. Grenze-ra

Methoden und Techniken, um den Würfelrotationseffekt von Bildern durch reines CSS zu erzielen. Im modernen Webdesign ist es sehr wichtig, einige coole Effekte hinzuzufügen, und die Verwendung von CSS zur Erzielung des Würfelrotationseffekts ist eine sehr interessante und herausfordernde Aufgabe. In diesem Artikel werden Methoden und Techniken zum Erzielen des Würfelrotationseffekts von Bildern durch reines CSS vorgestellt und einige spezifische Codebeispiele bereitgestellt. Zunächst benötigen wir eine grundlegende HTML-Struktur, bestehend aus einem Containerelement und sechs Gesichtselementen, die jeweils ein Bild enthalten. <d

Bei der dreidimensionalen dynamischen Gesichtserkennung wird der Skelettumriss einer Person identifiziert. Bei der dreidimensionalen dynamischen Gesichtserkennung wird eine dreidimensionale Gesichtsmodellierung basierend auf dem eingegebenen Gesichtsbild realisiert, z. B. Augen, Nasenspitze, Mundwinkel und Augenbrauen und verschiedene Aspekte des Gesichts, um wichtige Gesichtsmerkmalspunkte automatisch zu lokalisieren.
