本文实现了一个经典的下拉菜单的制作。

首先,写出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实现的一个实例的更多相关文章

  1. 10个优秀的 HTML5 & CSS3 下拉菜单制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...

  2. 下拉菜单;手风琴;九宫格的Jquery的使用实例

    下拉菜单;手风琴;九宫格的Jquery的使用实例 1.下拉菜单 效果如图: 代码如下: <!DOCTYPE html> <html lang="en"> & ...

  3. html5 css练习 下拉菜单制作

    *{    margin: 0;    padding: 0;}li{    list-style-type: none;}a{    text-decoration: none;}.ul1{marg ...

  4. 11个优秀的HTML5 & CSS3下拉菜单制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用HTML5和CSS3可以更容易创造视觉 ...

  5. 10个优秀的 HTML5 &amp; CSS3 下拉菜单制作教程

    下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...

  6. 形行色色的下拉菜单(HTML/CSS JS方法 jQuery方法实现)

    HTML/CSS方法实现下拉菜单来源:慕课网<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  7. CSS+JS下拉菜单和纯CSS下拉菜单

    下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...

  8. 下拉菜单旋转出现css

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. Excel 下拉菜单制作

    废话少说吧,以图明示: 图1 操作步骤(环境为Office 2013) 备注,第四步,可以选择页面中的数据源,也可以以“,”分割的方式输入字符串 图2 制作效果

随机推荐

  1. javascript中常用的

    1.javascript中构造equals().trim()方法并应用 String.prototype.Trim = function() { return this.replace(/(^\s*) ...

  2. 从Properties得到数据到gson转换为json

    从上一篇得到properties里的数据 Map<String,String> map = new HashMap<String,String>(); Enumeration& ...

  3. C++ 网络爬虫实现

    最近有个概念吵得很火,网络爬虫,但是基本都是用什么python或者JAVA写,貌似很少看到用c++写的,我在网上找了一个,看到其实还是很简单的算法 算法讲解:1.遍历资源网站 2.获取html信息   ...

  4. Java版权信息之Jautodoc

    Java项目开发中,常常需要在编码文件上面加上一些版权声明或者类注释,如果文件很多,手工去添加或者修改,会很麻烦.可以利用工具满足我们的要求.一.版权声明可以使用Jautodoc.将jautodoc的 ...

  5. redux计算器

    //简单运用redux写了一个加减乘除功能 <!DOCTYPE html><html lang="en"><head> <meta cha ...

  6. Mybatis基础学习(四)—关系映射

    一.模型分析 user和orders user---->orders 一个用户可以创建多个订单,一对多. orders--->user 一个订单只由一个用户创建,一对一.   orders ...

  7. BS结构中,web如何将数据进行DES加密并写道IC卡中

    在IC卡应用系统中,一般都要对IC卡数据进行DES加密,以保证数据的安全.友我科技RFID读写器云服务2.0充分考虑了这个需求,只需要软件工程师简单的配置即可实现数据的加解密并且写到数据块中.如下图所 ...

  8. leetcode中Database题(一)

    Combine Two Tables Table: Person +-------------+---------+ | Column Name | Type | +-------------+--- ...

  9. .Net MVC4笔记之js css引用与压缩

    1.引用时,可以用即可以直接使用“~”来表示根目录. 引入js 引入js 引入css <link href="~/Content/uploadify/uploadify.css&quo ...

  10. Node.js系列:Buffer类的使用

    客户端JavaScript中没有对二进制数据提供很好的支持.但是在处理TCP流或文件流时,必须要处理二进制数据.Node.js定义了一个Buffer类,用来创建一个专门存放二进制数据的缓存区. Buf ...