下拉菜单制作——利用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 制作效果
随机推荐
- 线程同步synchronized,Class与Object
synchronized (class):class类的同步,同步的时候会同步整个class 与 synchronized (Object):Object的同步,只对其中的对象同步 如下:对类B中的同 ...
- jsp页面中从forEach里向action里面传递其中的一个对象
<c:forEach var="user" items="${users }"> <form action="user_update ...
- Spring定时任务解决博客缓存数据更新问题
最近在做博客系统的时候,由于很多页面都有右边侧边栏,内容包括博客分类信息,归档日志,热门文章,标签列表等,为了不想每次访问页面都去查询数据库,因为本身这些东西相对来说是比较固定的,但是也有可能在网站后 ...
- OpenStack_Glance
什么是Glace Glance即image service(镜像服务),就是为创建虚拟机提供镜像的地方 为什么要有Glance 这个问题问的好,openstack就是构建Iaas平台对外提供虚拟机的啊 ...
- 常见【十种】WEB攻击及防御技术总结
最近参加了一个WEB安全培训,感觉WEB攻击跟防御都是挺有意思的.以下总结比较简短,仅供观赏哈. 一.XSS攻击 [介绍] xss攻击是跨站脚本攻击,例如在表单中提交含有可执行的javascript的 ...
- (删)Java线程同步实现二:Lock锁和Condition
在上篇文章(3.Java多线程总结系列:Java的线程同步实现)中,我们介绍了用synchronized关键字实现线程同步.但在Java中还有一种方式可以实现线程同步,那就是Lock锁. 一.同步锁 ...
- smartgit试用到期不用序列号怎么继续使用
方法1 1:进入C盘,搜索SmartGit,出现\AppData\Roaming\syntevo: 2:进入文件7.1和8,这个有不同的版本可以使用,上次里面的setting.xml文件 3:重新打开 ...
- 打印pid,写着玩。
#include <stdio.h> #include <string.h> #include <dirent.h> #include <limits.h&g ...
- grep的用法笔记
1.grep搜索不保护字符串的命令格式如下: #带-v参数 jevan@df ~ grep "agc" -vRn ./
- user-modify属性,让html标签可以编辑
其实这只是一个很小的需求,但是写着写着发现干货越来越多,所以特意给大家分享一下. 项目需要做一个类似QQ聊天输入的效果 有的同学说,这不是很简单吗?一开始我也这么感觉 :) 观察需求 1.整体固定在底 ...