用css3實(shí)現(xiàn)立方體

2018-06-19 16:42 更新
隨著CSS3的出現(xiàn),各大網(wǎng)站出現(xiàn)了許多酷炫的3D動(dòng)畫效果,不再局限于平面UI。下面,我就分享一下使用css 3D效果的經(jīng)驗(yàn)。
首先,要制作3D效果,我們需要知道Web瀏覽器中是怎樣確定坐標(biāo)軸的。如圖:

注:x軸平行,y軸垂直,z軸指向正對(duì)你的屏幕。z軸的零點(diǎn)就是屏幕所在的平面。
現(xiàn)在知道web瀏覽器的坐標(biāo)軸是如何的定義后,接下來,我們需了解4個(gè)屬性:

transform-style:preserve-3d;  //指定嵌套元素如何在3D空間中呈現(xiàn)

rotateX()  //沿X軸旋轉(zhuǎn)

rotateY()  //沿Y軸旋轉(zhuǎn)

translateZ()  //

1.transform-style
含義:指定嵌套元素如何在3D空間中呈現(xiàn)
值:flat值為默認(rèn)值,表示所有子元素在2D平面呈現(xiàn)。preserve-3d表示所有子元素在3D空間中呈現(xiàn)。
注:一般定義在父元素中。
2.rotateX() 和rotateY()
含義:旋轉(zhuǎn)
單位:deg
3.translateZ()
含義:沿Z軸平移
注:只有在transform-style:preserve-3d情況下,才起作用。

俗話:紙上得來終覺淺,我們還是需要實(shí)踐的,下面一起來看一個(gè)實(shí)例:

上面的3D 立方體是純css3制作的。
代碼如下:
css:

.cude {   

  width:300px;   

  height:300px;   

  position: relative;   

  margin: 100px auto;   

  transform-style: preserve-3d;   

  -webkit-transform-style: preserve-3d;   

  transform: rotateX(-30deg) rotateY(-80deg);   

  -webkit-animation: rotate 20s infinite;   

  animation-timing-function: linear;   

  transform-origin: 50% 50% 0;   

  -webkit-transform-origin: 50% 50% 0;   

}       

.surface {   

  position: absolute;   

  top: 0;   

  left: 0;   

  width: 300px;   

  height: 300px;   

  background:#666;   

  opacity: 0.8;   

  font-size:100px;   

  text-align: center;   

  line-height:300px;   

  font-weight: bold;   

  color:#fff;   

  border:1px solid #fff;   

}       

.surface img {   

  width: 100%;   

}       

.front {   

  transform: rotateY(0) translateZ(150px);   

}       

.back {   

  transform: translateZ(-150px) rotateY(180deg);   

}       

.left {   

  transform: rotateY(-90deg) translateZ(150px);   

}       

.right {   

  transform: rotateY(90deg) translateZ(150px);   

}       

.top {   

  transform: rotateX(90deg) translateZ(150px);   

}       

.bottom {   

  transform: rotateX(90deg) translateZ(-150px);   

}       

@-webkit-keyframes rotate {   

  from {   

    transform: rotateX(0deg) rotateY(0deg);   

  }   

  to {   

    transform: rotateX(360deg) rotateY(360deg);   

  }   

}       

.surface-in{   

  width:150px;   

  height:150px;   

  position:absolute;   

  top:50%;   

  left:50%;   

  margin-top:-75px;   

  margin-left:-75px;   

}   

.surface-in img{   

  width:150px;   

  height:150px;   

}   

.front-in{   

  transform:rotateY(0deg) translateZ(75px);   

}   

.back-in{   

  transform:rotateY(180deg) translateZ(75px);   

}   

.left-in{   

  transform:rotateY(-90deg) translateZ(75px);   

}   

.right-in{   

  transform:rotateY(90deg) translateZ(75px);   

}   

.top-in{   

  transform:rotateX(90deg) translateZ(-75px);   

}   

.bottom-in{   

  transform:rotateX(-90deg) translateZ(-75px);   

}

HTML:

<div class="box">   

  <div class="cude">   

    //外3D立方體

    <div class="front surface">1</div>   

    <div class="surface left">2</div>   

    <div class="surface right">3</div>   

    <div class="surface bottom">4</div>

    <div class="surface top">5</div>   

    <div class="surface back">6</div>     //內(nèi)3D立方體

    <div class="surface-in front-in"><img src="bgimg/a.jpg" alt="" /></div>   

    <div class="surface-in back-in"><img src="bgimg/b.jpg" alt="" /></div>   

    <div class="surface-in left-in"><img src="bgimg/c.jpg" alt="" /></div>   

    <div class="surface-in right-in"><img src="bgimg/d.jpg" alt="" /></div>   

    <div class="surface-in top-in"><img src="bgimg/e.jpg" alt="" /></div>   

    <div class="surface-in bottom-in"><img src="bgimg/f.jpg" alt="" /></div>   

  </div>   

</div>



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)