1. 程式人生 > 其它 >CSS--3d導航條

CSS--3d導航條

前言

這個是過渡transition應用的一個例子,前面講的是動畫的例子!

程式碼與講解

  1. 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) ;
        }

效果圖:
23
31