以下是繁體中文翻譯的內容:
# CSS - 3D Transforms:為您的網頁設計帶來深度
你好,未來的網頁設計師們!今天,我們將踏上一段令人興奮的旅程,進入CSS 3D變換的世界。作為你們親切鄰居的電腦老師,我很高興能夠引導你們進入這個迷人的主題。別擔心如果你是編程新手——我們將從基礎開始,逐步學習。在本課結束時,你將能夠創作出讓你的網站閃耀的3D傑作!
## 什麼是CSS 3D Transforms?
想像你手中有一張紙。在網頁設計的世界中,那就是你典型的2D網頁。現在,如果你能折疊這張紙,旋轉它,或是讓它站起來呢?這就是CSS 3D變換讓我們能對網頁元素做的事情!
CSS 3D變換賦予我們在三维空間中操縱元素的能力。我們可以沿著X、Y和Z軸旋轉、平移(移動)和縮放元素。Z軸是為我們的設計添加深度的軸,使元素看起來更接近或更遠。
## 開場:Transform屬性
在我們潛入3D世界之前,讓我們快速回顧一下`transform`屬性。這是我們用來應用3D變換的魔法棒。
```css
.element {
transform: function(value);
}
在這種語法中,function
是我們想要應用的變換類型,value
是我們想要變換元素的程度。
變換函數
現在,讓我們看看我們手頭上的主要3D變換函數:
函數 | 描述 | 範例 |
---|---|---|
translate3d(x,y,z) | 在3D空間中移動元素 | transform: translate3d(10px, 20px, 30px); |
translateZ(z) | 沿著Z軸移動元素 | transform: translateZ(30px); |
scale3d(x,y,z) | 在3D空間中縮放元素 | transform: scale3d(1.5, 1.5, 2); |
scaleZ(z) | 沿著Z軸縮放元素 | transform: scaleZ(2); |
rotate3d(x,y,z,angle) | 在3D空間中旋轉元素 | transform: rotate3d(1, 1, 1, 45deg); |
rotateX(angle) | 围繞X軸旋轉元素 | transform: rotateX(45deg); |
rotateY(angle) | 围繞Y軸旋轉元素 | transform: rotateY(45deg); |
rotateZ(angle) | 围繞Z軸旋轉元素 | transform: rotateZ(45deg); |
perspective(n) | 設置視角 | transform: perspective(1000px); |
別擔心這些看起來讓人眼花繚亂——我們會一一分解並提供範例!
讓我們開始變換!
在3D中的平移
讓我們從使用translate3d
在3D空間中移動元素開始:
.box {
width: 100px;
height: 100px;
background-color: #3498db;
transform: translate3d(50px, 30px, 20px);
}
在這個範例中,我們的盒子向右移動50px,向下移動30px,向觀眾移動20px。就像盒子從屏幕上飄起來一樣!
在3D中的縮放
現在,讓我們讓我們的盒子在3D中增長或縮小:
.box {
width: 100px;
height: 100px;
background-color: #e74c3c;
transform: scale3d(1.5, 1.5, 2);
}
這種變換使我們的盒子在寬度和高度上變得1.5倍大,而在深度上變得兩倍大。
在3D中的旋轉
在3D中旋轉元素可以創造一些非常酷的效果:
.box {
width: 100px;
height: 100px;
background-color: #2ecc71;
transform: rotateX(45deg) rotateY(30deg) rotateZ(60deg);
}
這個盒子正在做一個小舞蹈,圍繞X軸旋轉45度,圍繞Y軸旋轉30度,圍繞Z軸旋轉60度!
角度的重要性
現在,事情變得更加有趣。為了真正欣賞3D變換,我們需要添加視角。將視角想像為觀眾與物體之間的距離。
.container {
perspective: 1000px;
}
.box {
width: 100px;
height: 100px;
background-color: #9b59b6;
transform: rotateY(45deg);
}
在這個範例中,我們為容器添加了視角。現在當我們旋轉盒子時,它看起來更加三维!
組合所有知識:創建一個3D立方體
讓我們把我們學到的所有知識結合起來,創建一個3D立方體:
<div class="scene">
<div class="cube">
<div class="face front">前面</div>
<div class="face back">後面</div>
<div class="face right">右面</div>
<div class="face left">左面</div>
<div class="face top">頂面</div>
<div class="face bottom">底面</div>
</div>
</div>
.scene {
width: 200px;
height: 200px;
perspective: 600px;
}
.cube {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d;
transform: translateZ(-100px);
transition: transform 1s;
}
.face {
position: absolute;
width: 200px;
height: 200px;
border: 2px solid black;
line-height: 200px;
font-size: 40px;
font-weight: bold;
color: white;
text-align: center;
}
.front { background: rgba(255,0,0,0.7); transform: rotateY( 0deg) translateZ(100px); }
.right { background: rgba(0,255,0,0.7); transform: rotateY( 90deg) translateZ(100px); }
.back { background: rgba(0,0,255,0.7); transform: rotateY(180deg) translateZ(100px); }
.left { background: rgba(255,255,0,0.7); transform: rotateY(-90deg) translateZ(100px); }
.top { background: rgba(255,0,255,0.7); transform: rotateX( 90deg) translateZ(100px); }
.bottom { background: rgba(0,255,255,0.7); transform: rotateX(-90deg) translateZ(100px); }
.cube:hover {
transform: translateZ(-100px) rotateX(-90deg) rotateY(-45deg);
}
這段代碼創建了一個多彩的3D立方體,當你將鼠標悬停在上面時,它會旋轉。很酷吧?
結論
好了,各位!我們已經穿越了CSS 3D變換的精彩世界。從簡單的平移到創建一個完整的3D立方體,你現在有了為你的網頁設計添加深度和維度的能力。
記住,掌握3D變換的關鍵是練習。不要害怕嘗試不同的值和組合。誰知道呢?你可能會創造出網頁設計的下一個大熱門!
在我們結束時,我想到著名建築師Frank Lloyd Wright的一句名言:“空間是藝術的呼吸。”有了CSS 3D變換,你现在有了為你的網頁空間注入生命的工具。所以,勇往直前,創造令人驚奇的3D體驗吧!
快樂編程,願你的網頁設計總是充滿深度!
Credits: Image by storyset