From 1c170054c1221b9bdfba987bb5cd3ba0f64e37ca Mon Sep 17 00:00:00 2001
From: Sascha Schulz <sschulz@dh-software.de>
Date: Di, 05 Dez 2023 16:16:23 +0100
Subject: [PATCH] add CSS 3D Transforms

---
 assets/html/css-transform-3d-cube.html |  100 +++++++++++++++++++++++++
 assets/html/css-transform-3d.html      |   46 +++++++++++
 assets/images/blue-fish.png            |    0 
 index.html                             |   36 +++++++++
 4 files changed, 182 insertions(+), 0 deletions(-)

diff --git a/assets/html/css-transform-3d-cube.html b/assets/html/css-transform-3d-cube.html
new file mode 100644
index 0000000..a9df48a
--- /dev/null
+++ b/assets/html/css-transform-3d-cube.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="UTF-8">
+        <style>
+            * {
+                box-sizing: border-box;
+            }
+            
+            body {
+                margin: 0 auto;
+                
+                width: 100px;
+                height: 100px;
+                
+                perspective: 5000px;
+            }
+            
+            .cube {
+                position: relative;
+                
+                width: 100%;
+                height: 100%;
+
+                transform-style: preserve-3d;
+                
+                transition: transform 1s;
+                
+                animation-name: spin;
+                animation-duration: 3s;
+                animation-iteration-count: infinite;
+            }
+            
+            @keyframes spin {
+                0% {
+                    transform: rotateY(0deg);
+                }
+                
+                100% {
+                    transform: rotateY(360deg);
+                }
+            }
+            
+            .cube div {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                
+                font-size: 25px;
+                
+                width: 100px;
+                height: 100px;
+                
+                position: absolute;
+                
+                border: 1px solid white;
+
+                backface-visibility: hidden;
+                
+                color: white;
+            }
+            
+            .top {
+                transform: rotateX(90deg) translateZ(50px);
+            }
+
+            .bottom {
+                transform: rotateX(-90deg) translateZ(50px);
+            }
+
+            .left {
+                transform: rotateY(-90deg) translateZ(50px);
+            }
+
+            .right {
+                transform: rotateY(90deg) translateZ(50px);
+            }
+
+            .front {
+                transform: rotateY(0deg) translateZ(50px);
+            }
+
+            .back {
+                transform: rotateY(180deg) translateZ(50px);
+            }
+            
+            
+        </style>
+    </head>
+    <body>
+        <div class="cube">
+            <div class="front">3</div>
+            <div class="back">4</div>
+            <div class="right">5</div>
+            <div class="left">2</div>
+            <div class="top">1</div>
+            <div class="bottom">6</div>
+        </div>
+    </body>
+</html>
diff --git a/assets/html/css-transform-3d.html b/assets/html/css-transform-3d.html
new file mode 100644
index 0000000..9ed804a
--- /dev/null
+++ b/assets/html/css-transform-3d.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="UTF-8">
+        <style>
+            img {
+                width: 100px;
+                height: auto;
+            }
+            
+            .canvas {
+                perspective: 1000px;
+            }
+            
+            .glass {
+                margin: 0 auto;
+                width: 10%;
+
+                perspective: 1000px;
+            }
+            
+            #fish {
+                animation-name: swim;
+                animation-duration: 2s;
+                animation-iteration-count: infinite;
+            }
+
+            @keyframes swim {
+                from {
+                    transform: rotateX(-10deg) rotateY(360deg) translateZ(100px);
+                }
+                
+                to {
+                    transform: rotateX(-10deg) rotateY(0deg) translateZ(100px);
+                }
+            }
+        </style>
+    </head>
+    <body>
+        <div class="canvas">
+            <div class="glass">
+                <img id="fish" src="../images/blue-fish.png">
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/assets/images/blue-fish.png b/assets/images/blue-fish.png
new file mode 100644
index 0000000..7f3927a
--- /dev/null
+++ b/assets/images/blue-fish.png
Binary files differ
diff --git a/index.html b/index.html
index 68da8e9..9ab0b43 100644
--- a/index.html
+++ b/index.html
@@ -3414,6 +3414,42 @@
 						<h3>Beispiel</h3>
 						<iframe data-src="/assets/html/css-animation.html"></iframe>
 					</section>
+					<section>
+						<h3>3D Transform</h3>
+						<ul>
+							<li>Neben den gewohnten X- und Y-Achsen (Breite und Höhe) gibt es auch noch die Z-Achse</li>
+							<li>Bewegung entlang der Sichtachse, d.h. zum bzw. vom Betrachter weg</li>
+							<li>Perspektivische Effekte möglich</li>
+						</ul>
+					</section>
+					<section>
+						<h3>Beispiel</h3>
+						<iframe data-src="/assets/html/css-transform-3d.html"></iframe>
+					</section>
+					<section>
+						<h3>Bedingungen / Optionen</h3>
+						<pre>
+							<code class="css" data-trim data-line-numbers>
+								.container {
+									perspective: 1000px; /* "Entfernung" des Betrachters */
+								
+									transform-style: preserve-3d; /* oder "flat" */
+								}
+								
+								.element {
+									backface-visibility: hidden; /* oder "visible" */
+								}
+							</code>
+						</pre>
+					</section>
+					<section>
+						<h3>Beispiel</h3>
+						<iframe data-src="/assets/html/css-transform-3d-cube.html"></iframe>
+					</section>
+					<section>
+						<h3>Aufgabe</h3>
+						<p>Implementiere einen drehenden Würfel (Vorlage ".html")</p>
+					</section>
 				</section>
 			</div>
 		</div>

--
Gitblit v1.9.3