1. 構(gòu)造一個(gè)立方體
要?jiǎng)?chuàng)建一個(gè)立方體,首先我們需要?jiǎng)?chuàng)建一個(gè)虛擬的三維視覺(jué)空間,這可以通過(guò)設(shè)置包容器元素的perspective屬性獲得。
.stage {
width: 200px;
height: 260px;
perspective: 1000px;
perspective-origin: center center;// 缺省值,可忽略
}
上述代碼把元素放在距離觀察點(diǎn)1000px的地方(Z軸向),并且在X/Y軸向上居中。
接著,我們?cè)诎萜髟乩锩嫣砑右粋€(gè)立方體元素,6個(gè)邊(上下左右和前后),之所以使用figure,是因?yàn)樾枰С仲N圖。
我們需要根據(jù)書(shū)本的厚度和長(zhǎng)寬來(lái)確定立方體各個(gè)面的坐標(biāo)位置,在本例中所用書(shū)本模型(一本MySQL書(shū))的絕對(duì)厚度為18.2px,高度260px,寬度197.6px。
那么根據(jù)簡(jiǎn)單的幾何知識(shí),前后面距離立方體中心的距離為18.2/2=9.1px,其中“后”元素需要再翻轉(zhuǎn)一下(即“背”過(guò)去)。
.front {
transform: translateZ(9.1px);
}
.back {
transform: rotateY(180deg) translateZ(9.1px);
}
用類(lèi)似的計(jì)算方法,我們可以把其他4條邊放置(平移+旋轉(zhuǎn)變換)到各自的位置,從而拼裝成一個(gè)虛擬的立方體。
.front {
transform: translateZ(9.1px);
}
.back {
transform: rotateY(180deg) translateZ(9.1px);
}
.top {
transform: rotateX(90deg) rotateZ(90deg) translateZ(98.8px) translateY(-89.7px);
width: 18.2px;
height: 197.6px;
}
.bottombottom {
transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);
}
.left {
transform: rotateY(-90deg) translateZ(9.1px);
width: 18.2px;
}
.rightright {
transform: rotateY(90deg) translateZ(188.5px);
width: 18.2px;
}
2. 添加封面
接著我們給前后以及左側(cè)面元素添加背景圖(可以使用一張圖,然后從不同的位置截取),給其他3個(gè)面添加背景顏色,并給“底”面添加陰影效果:
.front {
transform: translateZ(9.1px);
background: url("http://wow.techbrood.com/uploads/160301/mysql.png") top rightright;
background-size: auto 100%;
}
.back {
transform: rotateY(180deg) translateZ(9.1px);
background: url("http://wow.techbrood.com/uploads/160301/mysql.png") top left;
background-size: auto 100%;
}
.top {
transform: rotateX(90deg) rotateZ(90deg) translateZ(98.8px) translateY(-89.7px);
background: #fafafa;
width: 18.2px;
height: 197.6px;
}
.bottombottom {
transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);
background: #ccc;
width: 18.2px;
height: 197.6px;
-webkit-filter: drop-shadow(0 0 26px rgba(0, 0, 0, 0.75));
}
.left {
transform: rotateY(-90deg) translateZ(9.1px);
background: url("http://wow.techbrood.com/uploads/160301/mysql.png") top center;
background-size: auto 100%;
width: 18.2px;
}
.rightright {
transform: rotateY(90deg) translateZ(188.5px);
background: #ddd;
background-size: auto 100%;
width: 18.2px;
}
這樣我們就實(shí)現(xiàn)了一個(gè)逼真的3D書(shū)本視覺(jué)模型。
3. 添加旋轉(zhuǎn)動(dòng)畫(huà)
這個(gè)比較簡(jiǎn)單,使用rotateY方法就可以。
@-webkit-keyframes rotate {
0% {
transform: rotateY(0) translateX(-18.2px);
}
100% {
transform: rotateY(360deg) translateX(-18.2px);
}
}
最終的效果圖如下:
以上是本文全部類(lèi)容,如果需要了解更多CSS3動(dòng)畫(huà)請(qǐng)閱讀css3 教程中的css3 動(dòng)畫(huà)章節(jié)
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com