下拉菜单制作——利用CSS实现的一个实例
本文实现了一个经典的下拉菜单的制作。
首先,写出Html部分:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<ul class="top-nav">
<li><a href="#">慕课网</a></li>
<li><a href="#">课程大厅</a></li>
<li><a href="#">学习中心</a>
<ul>
<li><a href="#">前端课程</a>
<ul>
<li><a href="#">html</a></li>
<li><a href="#">javascript</a></li>
<li><a href="#">css</a></li>
</ul>
</li>
<li><a href="#">手机开发</a></li>
<li><a href="#">后台编程</a></li>
</ul>
</li>
<li><a href="#">关于我们</a></li>
</ul>
</body>
该代码实现的效果图如下:

可以看到,这是一个三级菜单。
现在,我们开始给一级菜单外部加入样式:
.top-nav
{
width: 960px;/**宽度*/
margin: 60px auto;
border: 1px solid #222;/**边框*/
background-color: #111;
background-image: linear-gradient(#444, #111);/**背景图*/
border-radius: 6px;/**圆角*/
box-shadow: 0 1px 1px #777;/**阴影:水平 垂直 模糊距离 模糊颜色*/
padding:;/**内边距*/
list-style: none;/**去掉小圆点*/
}
可以得到如下效果:

处理一级菜单,从左至右显示,清除下划线以及小圆点:
.top-nav li
{
float: left;/**从左向右显示*/
border-right: 1px solid #222;/**间隔线*/
box-shadow: 1px 0 0 #444;
position: relative;/**相对定位*/
}
.top-nav li a
{
float: left;
padding: 12px 30px;
color: #999;
text-decoration: none;/**去掉下划线*/
text-shadow: 0 1px 0 #000;/**文本阴影*/
}
.top-nav li a:hover
{
color: #fafafa; /**鼠标移入颜色*/
}
.top-nav li ul
{
visibility: hidden;/**二级菜单隐藏显示*/
position: absolute;/**绝对定位*/
list-style: none;
top: 38px;
left:;
z-index:;
padding:;
background-color: #444;
background-image: linear-gradient(#444, #111);
box-shadow: 0 -1 0 rgba(255, 255, 255, 3);
border-radius: 3px;
opacity:;/**刚开始设为透明*/
margin: 20px 0 0 0;
transition: all .2s ease-in-out;/**二级菜单动画效果*/
}
.top-nav li:hover > ul
{
opacity:;
visibility: visible;
margin:;
}
得到下图效果:

可以发现一级菜单的背景被遮盖了,这是由于没有清除浮动引起的。在样式中加入如下代码,清除浮动:
/**清除浮动*/
.top-nav:before, .top-nav:after
{
content: " ";
display: table;
}
.top-nav:after
{
clear: both;
}
背景出现:

下来定义子菜单的超链接和二级菜单的圆角样式:
/**二级菜单*/
.top-nav ul li
{
float: none;
display: block;
border:;
box-shadow: 0 1px 0 #111, 0 2px 0 #666;/**间隔线效果*/
}
.top-nav ul a
{
padding: 10px;
width: 130px;
display: block;
float: none;
}
.top-nav ul a:hover
{
background-color: #0186ba;
background-image: linear-gradient(#04accc, #0186ba);
}
.top-nav ul li:first-child > a
{
border-radius: 3px 3px 0 0;
}
.top-nav ul li:last-child > a
{
border-radius: 0 0 3px 3px;
}
接下来添加三级菜单样式:
/**三级菜单*/
.top-nav ul li ul
{
float: none;
left: 125px;
top:;
display: block;
}
如此,我们的效果图就做好了:

是不是很酷?接下来为下拉菜单实现尖角。尖角位于二级菜单上面,是一个向上的箭头:
.top-nav ul li:first-child > a:before
{
content: " ";
position: absolute;
left: 40px;/**显示位置*/
top: -6px;
border-left: 6px solid transparent; /**左右透明,只留下方*/
border-right: 6px solid transparent;
border-bottom: 6px solid #444;
}
.top-nav ul li:first-child > a:hover:before
{
border-bottom-color: #04acec;
}
尖角的实现原理:border上下左右四个方向,控制是否显示,则可以出现三角的效果。
同样,三级菜单尖角与二级类似,不过变成了向右的箭头:
.top-nav ul ul li:first-child > a:before
{
content: " ";
position: absolute;
left: -6px;
top: 50%;
border-left:;
border-right: 6px solid #3b3b3b;
border-bottom: 6px solid transparent;
border-top: 6px solid transparent;
}
.top-nav ul ul li:first-child > a:hover:before
{ border-right-color: #0299d3;
border-bottom-color: transparent;/**取消二级菜单的颜色*/
}
在这里要注意去掉从二级菜单继承的颜色。
于是,一个下拉菜单就做好了:

下拉菜单制作——利用CSS实现的一个实例的更多相关文章
- 10个优秀的 HTML5 & CSS3 下拉菜单制作教程
下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...
- 下拉菜单;手风琴;九宫格的Jquery的使用实例
下拉菜单;手风琴;九宫格的Jquery的使用实例 1.下拉菜单 效果如图: 代码如下: <!DOCTYPE html> <html lang="en"> & ...
- html5 css练习 下拉菜单制作
*{ margin: 0; padding: 0;}li{ list-style-type: none;}a{ text-decoration: none;}.ul1{marg ...
- 11个优秀的HTML5 & CSS3下拉菜单制作教程
下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用HTML5和CSS3可以更容易创造视觉 ...
- 10个优秀的 HTML5 & CSS3 下拉菜单制作教程
下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...
- 形行色色的下拉菜单(HTML/CSS JS方法 jQuery方法实现)
HTML/CSS方法实现下拉菜单来源:慕课网<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- CSS+JS下拉菜单和纯CSS下拉菜单
下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...
- 下拉菜单旋转出现css
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Excel 下拉菜单制作
废话少说吧,以图明示: 图1 操作步骤(环境为Office 2013) 备注,第四步,可以选择页面中的数据源,也可以以“,”分割的方式输入字符串 图2 制作效果
随机推荐
- iOS开发之@Selector参数的传递
比如: NSMutableDictionary *dic = [[NUMutableDictionary alloc]init]; [dic setValue:@”haha” forKey:@”tes ...
- linux系统使用python监测网络接口获取网络的输入输出
#!/usr/bin/env Pythonimport timeimport sys if len(sys.argv) > 1: INTERFACE = sys.argv[1]else: INT ...
- STM32GPIO口8种模式细致分析(类比51单片机)
关于STM32GPIO口的8种工作模式,我们先引出一些问题? STM32GPIO口如果既要输入又要输出怎么办? 1.浮空输入模式 上图红色的表示便是浮空输入的过程,外部输入时0读出的就是0,外部输入时 ...
- piwik安装部署最佳实践
1.piwik介绍 Piwik是一个PHP和MySQL的开放源代码的Web统计软件,它给你一些关于你的网站的实用统计报告,比如网页浏览人数,访问最多的页面,搜索引擎关键词等等. Piwik拥有众多不同 ...
- Codeforces 765E. Tree Folding [dfs][树形dp]
题解:先从节点1开始dfs.对于每一个节点,用一个set记录:以该点为根的子树的深度. a) 如果此节点的某个子节点打出了GG,则此节点直接打出GG. b) 若set的元素个数<=1,那么,以该 ...
- XJOIWinterCampPrecontest1-P2队列
2 排队2.1 题目有n 个人打水,第i 个人打水需要ai 的时间.有K 个水龙头,你可以随意安排他们打水的顺序以及使用哪一个水龙头,但是每一时刻每一个水龙头只能有一个人使用且一个人一旦开始打水就不能 ...
- js的搜索遍历精讲
搜索算法应该算是每种算法的重点与难点了,本文将讲解JavaScript中的各种常用的遍历算法:希望对大家有所帮助. 深度优先遍历顺序:1245367 广度优先遍历:1234567 1.深度优 ...
- JS弹出框
一.JS三种最常见的对话框 1.alert()警告框 alert是警告框,只有一个按钮"确定"无返回值,警告框经常用于确保用户可以得到某些信息.当警告框出现后,用户需要点 ...
- JavaScript高级程序设计---学习笔记(三)
函数表达式 定义函数的方式有两种:一种是函数声明,另一种是函数表达式. 关于函数声明,它的一个重要特征就是函数声明提升,意思是在执行代码之前会先读取函数声明所以可以把函数声明放在调用它的语句后面. 而 ...
- 鼠标滚动:mousewheel事件在Firefox采用DOMMouseScroll事件的统一处理
这是一个小事件,但当下的WEB应用交互非常丰富,判断鼠标的滚动来执行相应的操作是比较常见的.我用Chrome/IE/Firefox/Opera 4种浏览器做测试,发现只有firefox的处理方法有很大 ...