前端技巧集:菜单栏全解析

菜单栏.jpg

前文导航栏全解析中我们做了水平和垂直的导航栏,现在我们做一下水平和垂直的菜单栏。菜单栏与导航栏区别不大,只要在导航栏的条目上加上菜单即可。
我们先上垂直导航栏的代码,在上面加菜单。不会做垂直导航栏,点这里

HTML

 <ul>
        <li>精选</li>
        <li>女装</li>
        <li>鞋包</li>
        <li>男士</li>
        <li>运动</li>
        <li>饰品</li>
        <li>美妆</li>
        <li>母婴</li>
        <li>居家</li>
        <li>国际</li>
        <li>生活</li>
        <li>预告</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;
        }

效果如下图:

我们在【精品】中加上三个菜单


        <li>精选
            <ul class="menu">
                <li>精选男装</li>
                <li>精选女装</li>
                <li>精选童装</li>
            </ul>
        </li>

效果如下:

新加的菜单把原来的导航栏撑开,我们在菜单上加上绝对定位。

.menu {
    position: absolute;
}

为了使菜单参照导航栏的条目定位,我们在导航栏的li上加上相对定位。

 position : relative;

效果如下:


菜单的宽度有些不够,我们来设置一下,给.menu加个宽度。

 width: 90px;

看上去宽度差不多吧,位置菜单有些问题,默认菜单在li的左下角,我们要把它移动到右上角。需要距离top 0;距离left 100%。

 top: 0;
 left: 100%;

导航栏的线在菜单中显示,我们给菜单加上个白色背景色。

background: #fff;

样子差不多了。但是鼠标放到菜单上,菜单上的字没了。

原因是我们在li:hover上把字体颜色设置成了白色。我们只要给.menu加个颜色,就可以解决这个问题。

  color: #000;

这里的字体变粗也是导航栏li:hover既存特效。可以不改变,如果想改变,加个font-weight:normal即可。

菜单基本上成型,最后我们只需要加上显示控制即可。默认菜单隐藏。

  display: none;

鼠标放到导航栏的li上显示。

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

OK,我们的垂直菜单栏好了。

如果想给【女装】加上菜单怎么做呢?

这个更简单,只要给【女装】的li嵌套一个无序列表即可。

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


简单把后面的菜单只需要加上menu这个类,一切都是菜单了。

代码总结
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>运动</li>
        <li>饰品</li>
        <li>美妆</li>
        <li>母婴</li>
        <li>居家</li>
        <li>国际</li>
        <li>生活</li>
        <li>预告</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把垂直导航栏改成水平导航栏

    display: inline-block;

导航栏变成水平的了,但是菜单显示在右上角,有些合适了。改到左下角显示比较好。

  left: 0;
  top: 100%;

两步完成了“华丽转身”,帅吧。

童鞋们多加练习体会当中的每一步,实际使用中可能不需要一些步骤(如设置字体或者背景颜色)。但是,基本流程很清晰的。大家试一下吧。


如有问题请留言,如有帮助请点赞。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容