下拉菜單制作——利用CSS實現的一個實例


本文實現了一個經典的下拉菜單的制作。

首先,寫出Html部分:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <ul class="top-nav">
            <li><a href="#">慕課網</a></li>
            <li><a href="#">課程大廳</a></li>
            <li><a href="#">學習中心</a>
                <ul>
                    <li><a href="#">前端課程</a>
                        <ul>
                            <li><a href="#">html</a></li>
                            <li><a href="#">javascript</a></li>
                            <li><a href="#">css</a></li>
                        </ul>
                    </li>
                    <li><a href="#">手機開發</a></li>
                    <li><a href="#">后台編程</a></li>
                </ul>
            </li>
            <li><a href="#">關於我們</a></li>
        </ul>
    </body>
該代碼實現的效果圖如下:

可以看到,這是一個三級菜單。

現在,我們開始給一級菜單外部加入樣式:

            .top-nav
            {
                width: 960px;/**寬度*/
                margin: 60px auto;
                border: 1px solid #222;/**邊框*/
                background-color: #111;
                background-image: linear-gradient(#444, #111);/**背景圖*/
                border-radius: 6px;/**圓角*/
                box-shadow: 0 1px 1px #777;/**陰影:水平 垂直 模糊距離 模糊顏色*/
                padding: 0;/**內邊距*/
                list-style: none;/**去掉小圓點*/
}

可以得到如下效果:

處理一級菜單,從左至右顯示,清除下划線以及小圓點:

            
            .top-nav li
            {
                float: left;/**從左向右顯示*/
                border-right: 1px solid #222;/**間隔線*/
                box-shadow: 1px 0 0 #444;
                position: relative;/**相對定位*/
            }
            .top-nav li a
            {
                float: left;
                padding: 12px 30px;
                color: #999;
                text-decoration: none;/**去掉下划線*/
                text-shadow: 0 1px 0 #000;/**文本陰影*/
            }
            .top-nav li a:hover
            {
                color: #fafafa;    /**鼠標移入顏色*/
            }
            .top-nav li ul
            {
                visibility: hidden;/**二級菜單隱藏顯示*/
                position: absolute;/**絕對定位*/
                list-style: none;
                top: 38px;
                left: 0;
                z-index: 1;
                padding: 0;
                background-color: #444;
                background-image: linear-gradient(#444, #111);
                box-shadow: 0 -1 0 rgba(255, 255, 255, 3);
                border-radius: 3px;
                opacity: 0;/**剛開始設為透明*/
                margin: 20px 0 0 0;
                transition: all .2s ease-in-out;/**二級菜單動畫效果*/
            }
            .top-nav li:hover > ul
            {
                opacity: 1;
                visibility: visible;
                margin: 0;
            }

得到下圖效果:

 

可以發現一級菜單的背景被遮蓋了,這是由於沒有清除浮動引起的。在樣式中加入如下代碼,清除浮動:

            /**清除浮動*/
            .top-nav:before, .top-nav:after
            {
                content: " ";
                display: table;
            }
            .top-nav:after
            {
                clear: both;
            }

背景出現:

下來定義子菜單的超鏈接和二級菜單的圓角樣式:

            /**二級菜單*/
            .top-nav ul li
            {
                float: none;
                display: block;
                border: 0;
                box-shadow: 0 1px 0 #111, 0 2px 0 #666;/**間隔線效果*/
            }
            .top-nav ul a
            {
                padding: 10px;
                width: 130px;
                display: block;
                float: none;
            }
            .top-nav ul a:hover
            {
                background-color: #0186ba;
                background-image: linear-gradient(#04accc, #0186ba);
            }
            .top-nav ul li:first-child > a
            {
                border-radius: 3px 3px 0 0;
            }
            .top-nav ul li:last-child > a
            {
                border-radius: 0 0 3px 3px;
            }

接下來添加三級菜單樣式:

            /**三級菜單*/
            .top-nav ul li ul
            {
                float: none;
                left: 125px;
                top: 0;
                display: block;
            }

如此,我們的效果圖就做好了:

是不是很酷?接下來為下拉菜單實現尖角。尖角位於二級菜單上面,是一個向上的箭頭:

.top-nav ul li:first-child > a:before
            {
                 content: " ";
                 position: absolute;
                 left: 40px;/**顯示位置*/
                 top: -6px;
                border-left: 6px solid transparent;    /**左右透明,只留下方*/    
                border-right: 6px solid transparent; 
                border-bottom: 6px solid #444;    
            }
            .top-nav ul li:first-child > a:hover:before
            {
                border-bottom-color: #04acec;
            }

尖角的實現原理:border上下左右四個方向,控制是否顯示,則可以出現三角的效果。

同樣,三級菜單尖角與二級類似,不過變成了向右的箭頭:

            .top-nav ul ul li:first-child > a:before
            {
                 content: " ";
                 position: absolute;
                 left: -6px;
                 top: 50%;
                border-left: 0;        
                border-right: 6px solid #3b3b3b; 
                border-bottom: 6px solid transparent;
                border-top: 6px solid transparent;    
            }
            .top-nav ul ul li:first-child > a:hover:before
            {
                
                border-right-color: #0299d3;
                border-bottom-color: transparent;/**取消二級菜單的顏色*/
            }

在這里要注意去掉從二級菜單繼承的顏色。

於是,一個下拉菜單就做好了:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM