前端技巧集:菜單欄全解析

菜單欄.jpg

前文導(dǎo)航欄全解析中我們做了水平和垂直的導(dǎo)航欄,現(xiàn)在我們做一下水平和垂直的菜單欄。菜單欄與導(dǎo)航欄區(qū)別不大,只要在導(dǎo)航欄的條目上加上菜單即可。
我們先上垂直導(dǎo)航欄的代碼,在上面加菜單。不會(huì)做垂直導(dǎo)航欄,點(diǎn)這里。

HTML

 <ul>
        <li>精選</li>
        <li>女裝</li>
        <li>鞋包</li>
        <li>男士</li>
        <li>運(yùn)動(dòng)</li>
        <li>飾品</li>
        <li>美妝</li>
        <li>母嬰</li>
        <li>居家</li>
        <li>國(guó)際</li>
        <li>生活</li>
        <li>預(yù)告</li>
 </ul>

CSS

        ul {
            border: 1px solid gray;
            list-style: none;
            padding-left: 0;
            display: inline-block;
            padding: 10px;
            border-radius: 5px;
        }
        
        li {
            padding: 10px;
        }
        
        li:hover {
            background-color: #999;
            cursor: pointer;
            border-radius: 5px;
            color: #fff;
            font-weight: bold;
        }

效果如下圖:

我們?cè)凇揪贰恐屑由先齻€(gè)菜單


        <li>精選
            <ul class="menu">
                <li>精選男裝</li>
                <li>精選女裝</li>
                <li>精選童裝</li>
            </ul>
        </li>

效果如下:

新加的菜單把原來(lái)的導(dǎo)航欄撐開,我們?cè)诓藛紊霞由辖^對(duì)定位。

.menu {
    position: absolute;
}

為了使菜單參照導(dǎo)航欄的條目定位,我們?cè)趯?dǎo)航欄的li上加上相對(duì)定位。

 position : relative;

效果如下:


菜單的寬度有些不夠,我們來(lái)設(shè)置一下,給.menu加個(gè)寬度。

 width: 90px;

看上去寬度差不多吧,位置菜單有些問題,默認(rèn)菜單在li的左下角,我們要把它移動(dòng)到右上角。需要距離top 0;距離left 100%。

 top: 0;
 left: 100%;

導(dǎo)航欄的線在菜單中顯示,我們給菜單加上個(gè)白色背景色。

background: #fff;

樣子差不多了。但是鼠標(biāo)放到菜單上,菜單上的字沒了。

原因是我們?cè)?code>li:hover上把字體顏色設(shè)置成了白色。我們只要給.menu加個(gè)顏色,就可以解決這個(gè)問題。

  color: #000;

這里的字體變粗也是導(dǎo)航欄li:hover既存特效??梢圆桓淖儯绻敫淖?,加個(gè)font-weight:normal即可。

菜單基本上成型,最后我們只需要加上顯示控制即可。默認(rèn)菜單隱藏。

  display: none;

鼠標(biāo)放到導(dǎo)航欄的li上顯示。

li:hover .menu {
            display: inline-block;
}

OK,我們的垂直菜單欄好了。

如果想給【女裝】加上菜單怎么做呢?

這個(gè)更簡(jiǎn)單,只要給【女裝】的li嵌套一個(gè)無(wú)序列表即可。

        <li>女裝
            <ul class="menu">
                <li>春季女裝</li>
                <li>夏季女裝</li>
                <li>秋季女裝</li>
                <li>冬季女裝</li>
            </ul>
        </li>


簡(jiǎn)單把后面的菜單只需要加上menu這個(gè)類,一切都是菜單了。

代碼總結(jié)
HTML

<ul>
        <li>精選
            <ul class="menu">
                <li>精選男裝</li>
                <li>精選女裝</li>
                <li>精選童裝</li>
            </ul>
        </li>
        <li>女裝
            <ul class="menu">
                <li>春季女裝</li>
                <li>夏季女裝</li>
                <li>秋季女裝</li>
                <li>冬季女裝</li>
            </ul>
        </li>
        <li>鞋包</li>
        <li>男士</li>
        <li>運(yùn)動(dòng)</li>
        <li>飾品</li>
        <li>美妝</li>
        <li>母嬰</li>
        <li>居家</li>
        <li>國(guó)際</li>
        <li>生活</li>
        <li>預(yù)告</li>
    </ul>

CSS

        ul {
            border: 1px solid gray;
            list-style: none;
            padding-left: 0;
            display: inline-block;
            padding: 10px;
            border-radius: 5px;
        }
        
        li {
            padding: 10px;
            position: relative;
        }
        
        li:hover {
            background-color: #999;
            cursor: pointer;
            border-radius: 5px;
            color: #fff;
            font-weight: bold;
        }
        
        .menu {
            position: absolute;
            width: 90px;
            top: 0;
            left: 100%;
            background: #fff;
            color: #000;
            display: none;
        }
        
        li:hover .menu {
            display: inline-block;
        }

如果我們要做成水平菜單欄,怎么做了?
修改lidisplay把垂直導(dǎo)航欄改成水平導(dǎo)航欄

    display: inline-block;

導(dǎo)航欄變成水平的了,但是菜單顯示在右上角,有些合適了。改到左下角顯示比較好。

  left: 0;
  top: 100%;

兩步完成了“華麗轉(zhuǎn)身”,帥吧。

童鞋們多加練習(xí)體會(huì)當(dāng)中的每一步,實(shí)際使用中可能不需要一些步驟(如設(shè)置字體或者背景顏色)。但是,基本流程很清晰的。大家試一下吧。


如有問題請(qǐng)留言,如有幫助請(qǐng)點(diǎn)贊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容