作者:安小軒
原文鏈接:https://juejin.cn/post/7086272341994536974
實作一個旋轉的立方體,只需要用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 >
<main>
<div ></div>
<div ></div>
<div ></div>
<div ></div>
<div ></div>
<div ></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/
部分大屏案例:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/458567.html
標籤:其他
