transform 3D 空間轉換transform 這個屬性的強大之處在于它可以把一個二維的空間轉化成一個三維的空間,給視覺設計師更多的發揮空間,也給用戶帶來更好的視覺體驗。 1. 官方定義transform 屬性向元素應用 3D 轉換。屬性允許我們對元素進行旋轉、縮放、移動或傾斜。 2. 解釋當給元素使用 transform 之后,它就可以在它原來所在的位置變成一個向任意空間變換的元素,這里可以通過在 Z 軸上的設置,讓他在空間上呈現 3D 效果。 3. 語法transform: none|transform-functions; 3D 空間坐標軸 值說明
我們在 transform2D 中已經對平面屬性做了詳細的介紹,本章節主要是其 3D 屬性,這些屬性的使用需要在父級設置 perspective 和 transform-style 讓父級有了透視效果以及設置父級在內部空間的呈現方式。 4. 兼容性
5. 實例通用 html : <div class="common demo">transfrom3d</div> <div class="common demo-3d">transfrom3d</div> 通用 style : body{ perspective: px; } .common{ width:px; height:px; text-align: center; line-height: px; background:#f2f2f2; border:px solid #ccc; position: absolute; top: ; left: ; } .demo{ z-index: ; opacity: ; background: red; }
.demo-3d{ transform:translated( , ,-px); } 效果圖 說明: 紅色背景是 demo-3d 原來的位置,我們通過圖片看到它的表現是水平向右移動且縮小了,其實他是進行了 3D 空間的移動。
.demo-3d{ transform:scaled( , ,); } 效果圖 說明: scale3d 這個屬性可以拆成 scaleX() 、scaleY() 、 scaleZ() 。我們發現 scaleZ() 在 3D 空間變化上,它的區間 0~1 是不起作用的,只有 0 代表縮小到 0(消失), 1 (不變)。
.demo-3d{ transform: rotated(,,,deg); } 效果圖 說明: 不推薦使用 rotate3d() 這個屬性,因為它只能通過 0 或 1 去選擇是否需要旋轉,第 4 個參數給 1 個旋轉角度,這種方式很不靈活,不過它的特性就是可以同時控制 x,y,z 方向上的旋轉角度。 其實我們從 1~3 這 3 個例子中看到只設定了其中一項,接下來我們全方位的變化。
.demo-3d{ transform:translated(px ,px ,-px) rotateZ(deg); } 效果圖: 5.寫一個墻角效果 <div class="cude"> <div class="common left">left</div> <div class="common right">right</div> <div class="common bottom">bottom</div> </div> .cude { perspective: px; width:px; height:px; position: relative; margin: px auto; transform-style: preserve-d; transform: rotateX(-deg) rotateY(-deg); } .common { position: absolute; top: ; left: ; width: px; height: px; background:#666; opacity: ; font-size:px; text-align: center; line-height:px; font-weight: bold; color:#fff; border:px solid #fff; } .right { transform: rotateY(deg) translateZ(px); background: rosybrown; } .left { transform: rotateY(-deg) translateZ(px); background: rosybrown; } .bottom { transform: rotateX(deg) translateZ(-px); } 效果圖 說明: 寫這個其實沒有什么技巧,首先設置 transform-style: preserve-3d; 然后在理解每個面相對角度的基礎上去設置 translateZ 和 rotate3d. 6. 經驗分享
transform-origin: ; 上面設置代表在元素的水平面的中心位置。 transform-origin: ; 上面這個設置代表在元素 top 的中心位置。 transform-origin: ; 上面這個設置代表在元素 left 的中心位置。
7. 小結rotateX、rotateY這些是 3D 空間的變化,不可以出席在 2D 空間上面。 |