作者:安小軒 原文鏈接:https://juejin.cn/post/7086272341994536974 實現一個旋轉的立方體,只需要用css的基本屬性就可以實現。我們一起看看吧~ 一:transform 基本屬性 transform可以實現元素的2D或3D轉換,可以對元素進行旋轉,縮放,移動, ...
作者:安小軒
實現一個旋轉的立方體,只需要用css的基本屬性就可以實現。我們一起看看吧~
一:transform 基本屬性
transform可以實現元素的2D或3D轉換,可以對元素進行旋轉,縮放,移動,傾斜等。
基本屬性有:
1. 移動 可以整個設置設置屬性(translate
),也可以單個設置某個方向的轉換
- translate(x,y) 2D 轉換
- translate3d(x,y,z) 定義 3D 轉換
- translateX(x) X 軸轉換
- translateY(y) Y 軸轉換
- translateZ(z) Z 軸轉換
2. 縮放 可以整個設置設置屬性(scale
),也可以單個設置某個方向的縮放
- scale(x[,y]?) 2D 縮放轉換
- scale3d(x,y,z) 3D 縮放轉換
- scaleX(x) 設置 X 軸的值來定義縮放轉換
- scaleY(y) 設置 Y 軸的值來定義縮放轉換
- scaleZ(z) 設置 Z 軸的值來定義 3D 縮放轉換
3. 旋轉 可以整個設置設置屬性(rotate
),也可以單個設置某個方向的旋轉
- rotate(angle) 2D 旋轉
- rotate3d(x,y,z,angle) 3D 旋轉
- rotateX(angle) 沿著 X 軸的 3D 旋轉
- rotateY(angle) 沿著 Y 軸的 3D 旋轉
- rotateZ(angle) 沿著 Z 軸的 3D 旋轉
4. 傾斜 可以整個設置設置屬性(skew
),也可以單個設置某個方向的傾斜
- skew(x-angle,y-angle) 沿著 X 和 Y 軸的 2D 傾斜轉換
- skewX(angle) 沿著 X 軸的 2D 傾斜轉換
- skewY(angle) 沿著 Y 軸的 2D 傾斜轉換
5. 設置3d的透視
perspective
(n) 為 3D 轉換元素定義透視視圖
二:旋轉的立方體
需求分析:繪製6個面,將面進行旋轉,移動組成一個立方體,加入動畫效果,使其旋轉起來。
1. 繪製立方體的6個面
<div class="cube">
<main>
<div class="front"></div>
<div class="back"></div>
<div class="left"></div>
<div class="right"></div>
<div class="top"></div>
<div class="bottom"></div>
</main>
</div>
複製代碼
.cube div{
width: 300px;
height: 300px;
position: absolute;
}
.front {
background: rgba(100, 0, 100, 0.6);
}
.back {
background: rgba(0, 100, 100, 0.5);
}
.left {
background: rgba(100, 1000, 100, 0.5);
}
.right {
background: rgba(1000, 100, 100, 0.5);
}
.top {
background: rgba(1000, 0, 0, 0.5);
}
.bottom {
background: rgba(0, 0, 1000, 0.5);
}
複製代碼
如圖,所有面都疊在一起,此時需要設置transform屬性改變每個面的位置,使得其達到3d立方體效果。
2. 將6個面進行縮放旋轉
需要設置外層div在z軸上負向移動150px
transform: translateZ(-150px)
複製代碼
同時要設置3d效果。這樣正面就不會被後面覆蓋
transform-style: preserve-3d;
複製代碼
設置正面,z軸正向移動150px
transform: translateZ(150px);
複製代碼
設置背面,z軸負向移動150px
transform: translateZ(150px);
複製代碼
設置左面,先y軸負向移動150px,再x軸旋轉90°
transform: translateY(-150px) rotateX(90deg);
複製代碼
設置右面,先y軸正向移動150px,再x軸旋轉90°
transform: translateY(150px) rotateX(90deg);
複製代碼
設置上面,先x軸負向移動150px,再y軸旋轉90°
transform: translateX(-150px) rotateY(90deg);
複製代碼
設置下麵,先x軸正向移動150px,再y軸旋轉90°
transform: translateX(150px) rotateY(90deg);
複製代碼
3.立方體加上動畫效果
main {
animation: rotate 3s linear infinite;
}
@keyframes rotate {
from {
transform: rotateX(0) rotateY(0);
}
to {
transform: rotateX(360deg) rotateY(360deg);
}
}
複製代碼
三:旋轉的立方體的全部代碼
.cube {
width: 300px;
height: 300px;
perspective: 900px;
}
main {
width: 100%;
height: 100%;
transform: translateZ(-150px);
transform-style: preserve-3d;
animation: rotate 3s linear infinite;
}
@keyframes rotate {
from {
transform: rotateX(0) rotateY(0);
}
to {
transform: rotateX(360deg) rotateY(360deg);
}
}
.cube div{
width: 100%;
height: 100%;
position: absolute;
}
.front {
background: rgba(100, 0, 100, 0.6);
transform: translateZ(150px);
}
.back {
background: rgba(0, 100, 100, 0.5);
transform: translateZ(-150px);
}
.left {
background: rgba(100, 1000, 100, 0.5);
transform: rotateY(90deg) translateZ(150px) ;
}
.right {
background: rgba(1000, 100, 100, 0.5);
transform: rotateY(90deg) translateZ(-150px);
}
.top {
background: rgba(1000, 0, 0, 0.5);
transform: rotateX(90deg) translateZ(-150px);
}
.bottom {
background: rgba(0, 0, 1000, 0.5);
transform: rotateX(90deg) translateZ(150px);
}
複製代碼
代碼看起來是不是很簡單,只需要利用css的transform的基本屬性就可以實現了。還可以給每個面設置背景圖片,這樣就可以炫一把了,再加上前面的雪花效果,那就更酷了,快動手試試吧~
寫在最後
近年來,在AIOps領域快速發展的背景下,IT工具、平臺能力、解決方案、AI場景及可用數據集的迫切需求在各行業迸發。基於此,雲智慧在2021年8月發佈了AIOps社區, 旨在樹起一面開源旗幟,為各行業客戶、用戶、研究者和開發者們構建活躍的用戶及開發者社區,共同貢獻及解決行業難題、促進該領域技術發展。
社區先後 開源 了數據可視化編排平臺-FlyFish、運維管理平臺 OMP 、雲服務管理平臺-摩爾平臺、 Hours 演算法等產品。
可視化編排平臺-FlyFish:
項目介紹:https://www.cloudwise.ai/flyFish.html
Github地址: https://github.com/CloudWise-OpenSource/FlyFish
Gitee地址: https://gitee.com/CloudWise/fly-fish
行業案例:https://www.bilibili.com/video/BV1z44y1n77Y/
部分大屏案例: