开发者社区> rollenholt> 正文

CSS创建下拉菜单

简介:
+关注继续查看

How to Create a CSS3 Dropdown Menu [Tutorial]

Topic: CSS3
Difficulty: Beginner
Estimated Completion Time: 20 mins

In this tutorial we will code in pure CSS3 the Navigation Menu that you can find in Impressionist UI by Vladimir Kudinov.

Step 1 – HTML Markup

We will create an unordered list with a list item and an anchor tag for each menu link. To create the sub menu add another unordered list inside of the list.

1 <ul class="menu">
2  
3     <li><a href="#">My dashboard</a></li>
4     <li><a href="#">Likes</a></li>
5     <li><a href="#">Views</a>
6  
7         <ul>
8             <li><a href="#" class="documents">Documents</a></li>
9             <li><a href="#" class="messages">Messages</a></li>
10             <li><a href="#" class="signout">Sign Out</a></li>
11         </ul>
12  
13     </li>
14     <li><a href="#">Uploads</a></li>
15     <li><a href="#">Videos</a></li>
16     <li><a href="#">Documents</a></li>
17  
18 </ul>



Step 2 – Menu Layout

We will start to remove the margin, padding, border and outline from all the elements of the menu. Then we will add a fixed width and height to the menu, rounded corners and the CSS3 gradients. To align the links horizontally we will float the lists to left. We also need to set the position to relative because we will need that to align the sub menus.

1 .menu,
2 .menu ul,
3 .menu li,
4 .menu a {
5     margin0;
6     padding0;
7     bordernone;
8     outlinenone;
9 }
10  
11 .menu {
12     height40px;
13     width505px;
14  
15     background#4c4e5a;
16     background: -webkit-linear-gradient(top#4c4e5a 0%,#2c2d33 100%);
17     background: -moz-linear-gradient(top#4c4e5a 0%,#2c2d33 100%);
18     background: -o-linear-gradient(top#4c4e5a 0%,#2c2d33 100%);
19     background: -ms-linear-gradient(top#4c4e5a 0%,#2c2d33 100%);
20     background: linear-gradient(top#4c4e5a 0%,#2c2d33 100%);
21  
22     -webkit-border-radius: 5px;
23     -moz-border-radius: 5px;
24     border-radius: 5px;
25 }
26  
27 .menu li {
28     positionrelative;
29     list-stylenone;
30     floatleft;
31     displayblock;
32     height40px;
33 }

We will hide the sub menu temporarily to be easier to style the first level.

1 .menu ul { displaynone; }


Step 3 – Menu Links

To style the menu links we will add some basic CSS properties like font, color, padding, etc. Then we will add a dark text shadow and a color transition to create a smooth effect when the color changes on hover state. To create the links separator add a border to the left and right and then we will remove the left border from the first link and the right border from the last link. For the hover state we will only change the text color.

1 .menu li a {
2     displayblock;
3     padding0 14px;
4     margin6px 0;
5     line-height28px;
6     text-decorationnone;
7  
8     border-left1px solid #393942;
9     border-right1px solid #4f5058;
10  
11     font-familyHelveticaArialsans-serif;
12     font-weightbold;
13     font-size13px;
14  
15     color#f3f3f3;
16     text-shadow1px 1px 1px rgba(0,0,0,.6);
17  
18     -webkit-transition: color .2s ease-in-out;
19     -moz-transition: color .2s ease-in-out;
20     -o-transition: color .2s ease-in-out;
21     -ms-transition: color .2s ease-in-out;
22     transition: color .2s ease-in-out;
23 }
24  
25 .menu li:first-child a { border-leftnone; }
26 .menu li:last-child a{ border-rightnone; }
27  
28 .menu li:hover > a { color#8fde62; }


Step 4 – Sub Menu

First let’s remove this line of code that we have added on the second step.

1 .menu ul { displaynone; }

Now we will style the sub menu. We will start to position the sub menu 40px from the top and 0px from the left of the menu item and add bottom rounded corners. We will set the opacity to 0 and on hover state to 1 to create the fade in/out effect. For the slide down/up effect we need to set the list height to 0px when is hidden and to 36px on hover state.

1 .menu ul {
2     positionabsolute;
3     top40px;
4     left0;
5  
6     opacity: 0;
7     background#1f2024;
8  
9     -webkit-border-radius: 0 0 5px 5px;
10     -moz-border-radius: 0 0 5px 5px;
11     border-radius: 0 0 5px 5px;
12  
13     -webkit-transition: opacity .25s ease .1s;
14     -moz-transition: opacity .25s ease .1s;
15     -o-transition: opacity .25s ease .1s;
16     -ms-transition: opacity .25s ease .1s;
17     transition: opacity .25s ease .1s;
18 }
19  
20 .menu li:hover > ul { opacity: 1; }
21  
22 .menu ul li {
23     height0;
24     overflowhidden;
25     padding0;
26  
27     -webkit-transition: height .25s ease .1s;
28     -moz-transition: height .25s ease .1s;
29     -o-transition: height .25s ease .1s;
30     -ms-transition: height .25s ease .1s;
31     transition: height .25s ease .1s;
32 }
33  
34 .menu li:hover > ul li {
35     height36px;
36     overflowvisible;
37     padding0;
38 }

We will set the width of the sub menu links to 100px. Instead of left and right borders we will add a bottom one and remove it from the last link.

1 .menu ul li a {
2     width100px;
3     padding4px 0 4px 40px;
4     margin0;
5  
6     bordernone;
7     border-bottom1px solid #353539;
8 }
9  
10 .menu ul li:last-child a { bordernone; }

To finish it we only need to add an icon to each sub menu link. To do it we will create a custom class for each one and add a background image.

1 .menu a.documents { backgroundurl(../img/docs.png) no-repeat 6px center; }
2 .menu a.messages { backgroundurl(../img/bubble.png) no-repeat 6px center; }
3 .menu a.signout { backgroundurl(../img/arrow.png) no-repeat 6px center; }


Conclusion

We’ve successfully created this pure CSS3 dropdown menu. If you have any question let me know in the comments. Also don’t forget to leave some feedback and share it with your friends. Follow us if you want to be the first to know about the latest tutorials and articles.


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
css实现一级下拉菜单
css实现一级下拉菜单
22 0
纯CSS设计按钮
不需要图片和js技术。能够兼容各种浏览器,不兼容opera.
35 0
css3实现摇动效果的下拉菜单
使用css3的动画效果,实现下来菜单的摇动效果。
39 0
H5+css——JavaScript之隐藏式侧边栏菜单的实现
H5+css——JavaScript之隐藏式侧边栏菜单的实现
158 0
css如何设置不可点击?
css如何设置不可点击?
43 0
一篇文章带你了解CSS3按钮知识
一篇文章带你了解CSS3按钮知识
159 0
CSS3自定义下拉框菜单
在线演示 本地下载
646 0
CSS3手风琴下拉菜单
在线演示 本地下载
787 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
零基础CSS入门教程
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载