用CSS畫正方體
我們利用transform屬性。
transform屬性向元素應用2D或3D轉換,該元素允許我們對元素進行旋轉、縮放、移動或傾斜。
rotateX(angle)定義沿著 X 軸的 3D 旋轉。
rotateY(angle)定義沿著 Y軸的 3D 旋轉。
rotateZ(angle)
定義沿著 Z 軸的 3D 旋轉。
translateZ(z) 定義 3D 轉換,只是用 Z 軸的值。
可能比較抽象,我們先來看張圖。
- rorateX:以綠色的X軸線作為軸進行旋轉。
- rorateY:以紅色的Y軸線作為軸進行旋轉。
- rorateZ:相對於在XoY這個平面進行旋轉。
想象一下,把我們的手當做中間那個網格線,現在掌心朝著自己。
- 沿著X軸就是類似這樣。沿著手腕旋轉手掌。
-
沿著Y軸就是類似這樣。沿著中指為軸旋轉手掌。
-
-
沿Z軸就是類似這樣,像刮雨器,以你的手肘為支點,旋轉手臂。
-
好,現在我們可以畫立方體了。
先用HTML打結構
<div class="cube">
<divclass="side front">1</div>
<divclass="side back">6</div>
<divclass="side right">4</div>
<divclass="side left">3</div>
<divclass="side top">5</div>
<divclass="side bottom">2</div>
</div>
CSS立方體樣式
.wrapper{
width: 50%;
float: left;
}
.cube{
font-size: 4em;
width: 2em;
margin: 1.5em auto;
transform-style:preserve-3d;//使被轉換的子元素保留其3D轉換
transform:rotateX(-35deg) rotateY(30deg);
}
.side{
position: absolute;
width: 2em;
height: 2em;
background: rgba(255,99,71,0.6);
border: 1px solid rgba(0,0,0,0.5);
color: white;
text-align: center;
line-height: 2em;
}
增加6面的樣式
.front{
transform:translateZ(1em);
}
.bottom{
transform:rotateX(-90deg)translateZ(1em);
}
.top{
transform:rotateX(90deg)translateZ(1em);
}
.left{
transform:rotateY(-90deg)translateZ(1em);
}
.right{
transform:rotateY(90deg)translateZ(1em);
}
.back{
transform:translateZ(-1em);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>perspective</title>
<style>
.wrapper{
width: 50%;
float: left;
}
.cube{
font-size: 4em;
width: 2em;
margin: 1.5em auto;
transform-style:preserve-3d;
transform:rotateX(-35deg) rotateY(30deg);
}
.side{
position: absolute;
width: 2em;
height: 2em;
background: rgba(255,99,71,0.6);
border: 1px solid rgba(0,0,0,0.5);
color: white;
text-align: center;
line-height: 2em;
}
.front{
transform:translateZ(1em);
}
.bottom{
transform:rotateX(-90deg) translateZ(1em);
}
.top{
transform:rotateX(90deg) translateZ(1em);
}
.left{
transform:rotateY(-90deg) translateZ(1em);
}
.right{
transform:rotateY(90deg) translateZ(1em);
}
.back{
transform:translateZ(-1em);
}
</style>
</head>
<body>
<div class="wrapper w1">
<div class="cube">
<div class="side front">1</div>
<div class="side back">6</div>
<div class="side right">4</div>
<div class="side left">3</div>
<div class="side top">5</div>
<div class="side bottom">2</div>
</div>
</div>
<div class="wrapper w2">
<div class="cube">
<div class="side front">1</div>
<div class="side back">6</div>
<div class="side right">4</div>
<div class="side left">3</div>
<div class="side top">5</div>
<div class="side bottom">2</div>
</div>
</div>
</body>
</html>