CSS實現左側多級菜單欄


首先看要實現的效果, 主要是關心技術實現, 所以沒怎么美化

左側多級菜單欄效果圖[3]

我也是初學html, 所以寫的比較啰嗦

1. 使用列表將內容顯示出來

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        /*寫css的地方*/
    </style>

</head>
<body>
    <div id="leftMenu">
        <ul>
            <li><a href="#">一級目錄1</a>
                <ul>
                    <li><a href="#">100001</a></li>
                    <li><a href="#">100002</a></li>
                </ul>
            </li>
            <li><a href="#">一級目錄2</a></li>
            <li><a href="#">一級目錄3</a>
                <ul>
                    <li><a href="#">300001</a></li>
                    <li><a href="#">300002</a></li>
                </ul>
            </li>
        </ul>
    </div>
</body>
</html>

這樣會顯示如下效果

QQ拼音截圖未命名

這里不好看的地方是: 

A. 二級目錄預想是排在一級目錄右邊的, 但現在卻是在下面的

B. 目錄前面的小黑點和小圓圈是不需要的

 

2. 修改css

<style>
    *{margin: 0;padding: 0;}   /*消除各種瀏覽器的邊距默認值*/
    #leftMenu ul{                     /*作用於id=leftMenu的元素所有含有的ul*/
        width: 100px;                 /*寬度設置為100*/
        background: #DADADA;     /*增加背景色方便查看*/
        list-style: none;           /*去除列表的小圓點*/
    }
   
    #leftMenu li{                  /*作用於id=leftMenu的元素所有含有的li*/
        width: 100px;             /*寬度設置為100*/
    }
</style>

嗯, 這樣好看多了, 但是二級目錄還是沒有排版到一級目錄的右邊

2

 

3. 給ul加上 position:absolute; 使ul脫離文檔流, 懸浮在原來文檔流的上面

    *{margin: 0;padding: 0;}   /*消除各種瀏覽器的邊距默認值*/
    #leftMenu ul{              /*作用於id=leftMenu的元素所有含有的ul*/
        width: 100px;            /*寬度設置為100*/
        background: #DADADA;     /*增加背景色方便查看*/
        list-style: none;        /*去除列表的小圓點*/
        position:absolute;
    }
   
    #leftMenu li{              /*作用於id=leftMenu的元素所有含有的li*/
        width: 100px;            /*寬度設置為100*/
    }
</style>

    3

 

4. 增加功能: 二級目錄默認不顯示, 鼠標懸停在一級目錄上時, 才顯示

<style>
    *{margin: 0;padding: 0;}   /*消除各種瀏覽器的邊距默認值*/
    #leftMenu ul{              /*作用於id=leftMenu的元素所有含有的ul*/
        width: 100px;            /*寬度設置為100*/
        background: #DADADA;     /*增加背景色方便查看*/
        list-style: none;        /*去除列表的小圓點*/
        position:absolute;
    }
   
    #leftMenu li{              /*作用於id=leftMenu的元素所有含有的li*/
        width: 100px;            /*寬度設置為100*/
    }
    #leftMenu li>ul{       /*作用於 li的直接子元素ul */
        left: 100px;            /*一級目錄本身寬度100px, 所以二級目錄顯示的時候要向右偏移100px, 為什么使用的是left呢? 自己學習css吧*/
        display: none;    /*二級目錄默認是不顯示的*/
    }
    #leftMenu li:hover>ul /*當鼠標懸停在li上時, li的直接子元素ul就顯示出來*/
    {display: block;}     /*顯示出來*/

</style>

5

 

5. 上面的問題是 100001 沒有與 一級目錄1 同一高度

<style>
    *{margin: 0;padding: 0;}   /*消除各種瀏覽器的邊距默認值*/
    #leftMenu ul{              /*作用於id=leftMenu的元素所有含有的ul*/
        width: 100px;            /*寬度設置為100*/
        background: #DADADA;     /*增加背景色方便查看*/
        list-style: none;        /*去除列表的小圓點*/
        position:absolute;
    }
   
    #leftMenu li{              /*作用於id=leftMenu的元素所有含有的li*/
        width: 100px;            /*寬度設置為100*/
        position: relative;      /*設置為相對位置*/
    }
    #leftMenu li>ul{       /*作用於 li的直接子元素ul */
        left: 100px;            /*一級目錄本身寬度100px, 所以二級目錄顯示的時候要向右偏移100px, 為什么要用left呢? 自己學習css吧*/
        top: 0;           /*top的偏移位置相對於父元素為0*/
        display: none;    /*二級目錄默認是不顯示的*/
    }
    #leftMenu li:hover>ul /*當鼠標懸停在li上時, li的直接子元素ul就顯示出來*/
    {display: block;}     /*顯示出來*/
</style>

 

 

6. 給一個完整界面

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <style>
        *{margin:0;padding:0;}
        #leftMenu ul{width:100px;position:absolute;background:#DADADA;list-style:none;}
        #leftMenu li{width:100px;position: relative;}
        #leftMenu li>ul{left: 100px;top: 0;display: none;}
        #leftMenu li:hover>ul{display: block;}
    </style>
</head>
<body>
    <div id="leftMenu">
        <ul>
            <li><a href="#">一級目錄1</a>
                <ul>
                    <li><a href="#">100001</a></li>
                    <li><a href="#">100002</a>
                        <ul>
                            <li><a href="#">100021</a></li>
                            <li><a href="#">100022</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li><a href="#">一級目錄2</a></li>
            <li><a href="#">一級目錄3</a>
                <ul>
                    <li><a href="#">300001</a></li>
                    <li><a href="#">300002</a></li>
                </ul>
            </li>
        </ul>
    </div>
</body>
</html>

6


免責聲明!

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



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