CSS--3d導航條
阿新 • • 發佈:2021-05-25
前言
這個是過渡transition應用的一個例子,前面講的是動畫的例子!
程式碼與講解
- html部分,這裡都是按照正常的ul來建立導航條
<ul>
<li>
<div class="box">
<div class="front">1</div>
<div class="bottom">2</div>
</div>
</ li>
<li>
<div class="box">
<div class="front">1</div>
<div class="bottom">2</div>
</div>
</li>
<li>
<div class="box" >
<div class="front">1</div>
<div class="bottom">2</div>
</div>
</li>
<li>
<div class="box">
<div class="front">1</div >
<div class="bottom">2</div>
</div>
</li>
<li>
<div class="box">
<div class="front">1</div>
<div class="bottom">2</div>
</div>
</li>
</ul>
ul{
display: flex;
//這裡是為了讓li水平排列,即flex佈局
margin: 100px;
justify-content: space-between;
}
ul li{
width: 120px;
height: 35px;
margin: 0 10px;
/* 因為需要讓box旋轉,也需要透視,直接給li加視距,裡面的子盒子都有透視效果 */
perspective: 500px;
}
.box{
position: relative;
width: 100%;
height: 100%;
text-align: center;
line-height: 35px;
transform-style: preserve-3d;
transition: all .4s;
}
//這裡是為了實現翻轉的效果
.box:hover{
/*這裡直接給父元素設定翻轉90度就不用分別給兩個盒子設定*/
transform: rotateX(90deg);
}
.front,
.bottom{
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
.front{
background-color: pink;
z-index: 1;
/*這裡是為了讓front盒子來蓋住那條線*/
transform: translateZ(17.5px);
}
.bottom{
background-color: purple;
/* 我們如果有移動或者其他樣式,必須先寫移動 */
/*其次這裡Y軸的平移量是設定盒子高度的一半,移動後的X軸翻轉成一條線段*/
transform:translateY(17.5px) rotateX(-90deg) ;
}
效果圖: