找回密码
 立即注册
千家悦IoT开放平台 IoT资讯 前端开发 CSS 查看内容

一个用纯CSS实现的下拉菜单

2019-12-1 00:00| 发布者: adminiot| 查看: 661| 评论: 0

  用CSS也可以实现下拉菜单,而且代码量更少,最起码不用那一大堆的JS控制代码。代码如下:

1 <div id="menu">
2  <ul>
3  <li><a href="">菜单一</a>
4 <ul>
5 <li><a href="">子菜单1</a></li>
6 <li><a href="">子菜单2</a>
7 <ul><li><a href="">子菜单7</a></li></ul>
8 </li>
9 <li><a href="">子菜单3</a></li>
10 </ul>
11 </li>
12 <li><a href="">菜单二</a>
13 <ul>
14 <li><a href="">子菜单4</a></li>
15 <li><a href="">子菜单5</a></li>
16 <li><a href="">子菜单6</a></li>
17 </ul>
18 </li>
19 </ul>
20 </div>

  下面是CSS控制代码,相比之前的,就多了一句#menu li:hover>ul{display:block;},就是只有在鼠标悬停在<li>时才显示其子标签<ul>。这也是控制子菜单显示的关键所在。

1 ul,ol,li
2 {list-style:none;padding:0px;margin:0px;}
3 #menu *
4 {line-height:30px;z-index:10;}
5 #menu a
6 {
7 text-decoration:none;
8 display:block;
9 }
10 #menu ul
11 {
12 text-align:left;
13 background:#333;
14 }
15 #menu .arrow /* 菜单项的右侧小箭头 */
16 {
17 float:right;
18 padding-right:5px;
19 }
20 #menu li:hover>ul
21 {display:block;}
22 #menu>ul{height:30px;} /* 即使没有菜单项也能保持顶级菜单栏的高度。 */
23 /* 一级菜单 */
24 #menu>ul>li
25 {
26 text-align:center;
27 display:inline-block;
28 width:80px;
29 }
30 #menu>ul>li>a
31 {color:#fff;}
32 #menu>ul>li:hover
33 {background:#666;}
34 /* 下拉的菜单栏 */
35 #menu>ul>li ul
36 {
37 display:none;
38 width:150px;
39 position:absolute;
40 background:#c1cd94;
41 box-shadow:2px 2px 2px #000;
42 -webkit-box-shadow:2px 2px 2px #000;
43 -moz-box-shadow:2px 2px 2px #123;
44 }
45 /* 下拉菜单的菜单项 */
46 #menu>ul>li>ul li
47 {padding-left:5px; position:relative;}
48 #menu>ul>li>ul li>a
49 {color:#000;}
50 #menu>ul>li>ul li:hover
51 {background:#d3dbb3;}
52 /* 三级及以下的菜单项的定位 */
53 #menu>ul>li>ul>li ul
54 {left:150px; top:0px;}

  相比于jQuery的实现,各有优缺点。这个实现更加的精炼,不用那一大堆的JS代码以及加载那70多K的jQuery库。当然缺点也有不少:不能实现动画功能,也不能在IE(IE6下肯定不行,其它版本没试过)下运行。

有兴趣的朋友可去看一下演示程序。

鲜花
鲜花
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋

相关分类