前端入门教程——纯css制作二级菜单

首先,需要声明的是本教程是写给初级者参考的,如果您已经有一定的基础请直接忽略吧

二级菜单是网站开发中很常见的功能模块,但是对于初级者来说却还是有些困难,下面我就拿几个常见的案例来讲好了。

鼠标滑过显示显示二级菜单

clipboard.png

很简单,li标签嵌套一层ul

<ul class="navs">
    <li class="nav">
        <a class="nav-a" href="#">一级菜单</a>
        <ul class="sub-navs">
            <li class="sub-nav"><a class="sub-nav-a" href="#">二级菜单</a></li>
            <li class="sub-nav"><a class="sub-nav-a" href="#">二级菜单</a></li>
            <li class="sub-nav"><a class="sub-nav-a" href="#">二级菜单</a></li>
        </ul>
    </li>
    <li class="nav">
        <a class="nav-a" href="#">一级菜单</a>
    </li>
</ul>
/*设置一级菜单样式*/

.navs:after{
    position: relative;
    content: '';
    width: 0;
    height: 0;
    visibility: hidden;
    clear: both;
    zoom: 1;
}

.nav {
    position: relative;
    float: left;
    height: 30px;
    line-height: 30px;
    text-align: center;
}

.nav-a {
    display: inline-block;
    width: 80px;
    font-size: 14px;
    color: #d8ac00;
}

效果如下:

clipboard.png

接着设置二级菜单

/*设置二级样式*/

.sub-navs {
    /*使用绝对定位,在文档流中不占位,免得影响后面的布局*/
    /*注意,因为这里使用了绝对定位,所以它的父元素.nav记得使用相对定位*/
    position: absolute;
    top: 100%;
    width: 100%;
    display: none;
    /*先隐藏起来*/
}

.nav:hover .sub-navs {
    /*鼠标滑过时显示二级菜单*/
    display: block;
}

.sub-nav-a {
    font-size: 12px;
    color: #000; 
}

这时候简单的二级菜单效果就出来了。如果想要划过的时候,一级菜单背景变黄,字体变白呢

.nav:hover .nav-a {
    background-color: #d8ac00;
    color: #fff;
}

添加这行就好了。
但是我们的效果图还加了边框,各位看官可能觉得很简单啊,加上border属性不就就好了

.nav:hover .nav-a,
.sub-nav{
    border: 1px solid #ccc;
}

结果边框重叠了:

clipboard.png

我们发现,其实二级菜单把border-top去掉就可以了

.sub-nav{
    border-left: 1px solid #ccc;
    border-right: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}

clipboard.png

还有一个问题时,当鼠标滑动到左边第一个一级菜单的时候,右边的一级菜单出现了闪动现象,体验十分不友好,加上border-box属性就可以解决此问题

.nav-a {
    box-sizing: border-box;
}

参考代码:http://runjs.cn/detail/ep0eq85c


关注作者吧~

clipboard.png

猜你喜欢

转载自www.cnblogs.com/homehtml/p/12522160.html