前端入门教程——纯css制作二级菜单
首先,需要声明的是本教程是写给初级者参考的,如果您已经有一定的基础请直接忽略吧
二级菜单是网站开发中很常见的功能模块,但是对于初级者来说却还是有些困难,下面我就拿几个常见的案例来讲好了。
鼠标滑过显示显示二级菜单
很简单,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; }
效果如下:
接着设置二级菜单
/*设置二级样式*/ .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; }
结果边框重叠了:
我们发现,其实二级菜单把border-top去掉就可以了
.sub-nav{ border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; }
还有一个问题时,当鼠标滑动到左边第一个一级菜单的时候,右边的一级菜单出现了闪动现象,体验十分不友好,加上border-box属性就可以解决此问题
.nav-a { box-sizing: border-box; }
参考代码:http://runjs.cn/detail/ep0eq85c
关注作者吧~
相关推荐
jiedinghui 2020-10-25
Ladyseven 2020-10-22
zuncle 2020-09-28
xiaohuli 2020-09-02
葉無聞 2020-09-01
nicepainkiller 2020-08-20
AlisaClass 2020-08-09
myloveqiqi 2020-08-09
buttonChan 2020-08-02
drdrsky 2020-07-29
Ladyseven 2020-07-25
nicepainkiller 2020-07-24
AlisaClass 2020-07-19
hellowzm 2020-07-19
background-color: blue;background-color: yellow;<input type="button" value="变蓝" @click="changeColorT
昔人已老 2020-07-19
骆驼的自白 2020-07-18
lanzhusiyu 2020-07-19
hellowzm 2020-07-19
CSSEIKOCS 2020-07-18