Html5+Css3制作下拉菜单的三种方式

时间:2022-10-23 20:24:57

一、渐变式改变ol的高度

1.外部为ul标签,在每个li里嵌套一个ol列表
2.设置外部li左浮动,内部ol标签绝对定位,外部li标签相对定位
3.设置ol的高为0,溢出隐藏
4.外部li标签:hover 时,设置ol的高度,transition渐变

 1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 <style>
7 /*一、下拉菜单ol折叠*/
8 *{margin: 0;padding: 0px}
9 ul{
10 width: 200px;
11 height: 50px;
12 outline: 1px solid black;
13 }
14 ul li{
15 width: 50%;
16 height: 100%;
17 outline: 1px solid black;
18 text-align: center;
19 float: left;
20 line-height: 50px;
21 list-style: none;
22 background: green;
23 }
24 ul ol{
25 width: 100%;
26 height: 0;
27 transition: all linear 0.5s;
28 overflow: hidden;
29 outline: 1px solid black;
30 }
31 ul ol li{
32 width: 100%;
33 height: 50px;
34 text-align: left;
35 background: pink;
36 outline: 1px solid black;
37 }
38 ul ol li a{
39 color: black;
40 text-decoration: none;
41 }
42 ul li:hover ol{
43 height: 150px;
44 transition: all linear 1s;
45 }
46 ul ol li:hover{
47 background: yellow;
48 }
49
50 </style>
51 </head>
52 <body>
53 <ul>
54 <li>帅哥
55 <ol>
56 <li><a href="#">罗晋</a></li>
57 <li><a href="#">刘志鹏</a></li>
58 <li><a href="#">周乐</a></li>
59 </ol>
60 </li>
61 <li>美女
62 <ol>
63 <li><a href="#">刘涛</a></li>
64 <li><a href="#">范冰冰</a></li>
65 <li><a href="#">刘诗诗</a></li>
66 </ol>
67 </li>
68 </ul>
69 </body>
70 </html>

 

二、渐变式改变ol 下li标签的高度,同第一种方法,设置li标签的高度为0,hover的时候设置一个高度  

 1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 <style>
7 /*二、下拉菜单li折叠*/
8 *{margin: 0;padding: 0px}
9 ul{
10 width: 200px;
11 height: 50px;
12 outline: 1px solid black;
13 }
14 ul li{
15 width: 50%;
16 height: 100%;
17 outline: 1px solid black;
18 text-align: center;
19 float: left;
20 line-height: 50px;
21 list-style: none;
22 background: green;
23 }
24 ul ol li{
25 width: 100%;
26 /*变化*/
27 height: 0;
28 text-align: left;
29 background: pink;
30 outline: 1px solid black;
31 transition: all linear 1s;
32 overflow:hidden;
33 }
34 ul ol li a{
35 color: black;
36 text-decoration: none;
37 }
38 ul li:hover ol li{
39 height: 50px; /*变化*/
40 transition: all linear 1s;
41 }
42 ul ol li:hover{
43 background: yellow;
44 }
45 </style>
46 </head>
47 <body>
48 <ul>
49 <li>帅哥
50 <ol>
51 <li><a href="#">罗晋</a></li>
52 <li><a href="#">刘志鹏</a></li>
53 <li><a href="#">周乐</a></li>
54 </ol>
55 </li>
56 <li>美女
57 <ol>
58 <li><a href="#">刘涛</a></li>
59 <li><a href="#">范冰冰</a></li>
60 <li><a href="#">刘诗诗</a></li>
61 </ol>
62 </li>
63 </ul>
64 </body>
65 </html>

 

三、挂面式下拉菜单  用display隐藏,设置block显示二级菜单

 1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 <style>
7 /*三、挂面式二级菜单*/
8 *{margin: 0;padding: 0px}
9 ul{
10 width: 200px;
11 height: 50px;
12 outline: 1px solid black;
13 }
14 ul li{
15 width: 50%;
16 height: 100%;
17 outline: 1px solid black;
18 text-align: center;
19 float: left;
20 line-height: 50px;
21 list-style: none;
22 background: green;
23 }
24 ul ol{
25 width: 100%;
26 height: 150px;
27 overflow: hidden;
28 outline: 1px solid black;
29 display: none;
30 }
31 ul ol li{
32 width: 100%;
33 height: 50px;
34 text-align: left;
35 background: pink;
36 outline: 1px solid black;
37 }
38 ul ol li a{
39 color: black;
40 text-decoration: none;
41 }
42 ul li:hover ol{
43 display: block;
44 }
45 ul ol li:hover{
46 background: yellow;
47 }
48
49
50 </style>
51 </head>
52 <body>
53 <ul>
54 <li>帅哥
55 <ol>
56 <li><a href="#">罗晋</a></li>
57 <li><a href="#">刘志鹏</a></li>
58 <li><a href="#">周乐</a></li>
59 </ol>
60 </li>
61 <li>美女
62 <ol>
63 <li><a href="#">刘涛</a></li>
64 <li><a href="#">范冰冰</a></li>
65 <li><a href="#">刘诗诗</a></li>
66 </ol>
67 </li>
68 </ul>
69 </body>
70 </html>