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

首先,写出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. Linux下python开发环境的准备

    升级python 安装依赖: yum install lrzsz zlib zlib-devel  openssl  readline-deve gcc  ibffi-devel python-dev ...

  2. Redis应用----消息传递

    1.摘要 消息传递这一应用广泛存在于各个网站中,这个功能也是一个网站必不可少的.常见的消息传递应用有,新浪微博中的@我呀.给你评论然后的提示呀.赞赞赞提示.私信呀.甚至是发微博分享的新鲜事:知乎中的私 ...

  3. 读书笔记 effective C++ Item 40 明智而谨慎的使用多继承

    1. 多继承的两个阵营 当我们谈论到多继承(MI)的时候,C++委员会被分为两个基本阵营.一个阵营相信如果单继承是好的C++性质,那么多继承肯定会更好.另外一个阵营则争辩道单继承诚然是好的,但多继承太 ...

  4. spring学习起步

    1.搭载环境 去spring官网下载这几个包,其中commons-logging-1.2.jar是一个日志包,是spring所依赖的包,可以到apache官网上下载 也可以访问http://downl ...

  5. flask框架+pygal+sqlit3搭建图形化业务数据分析平台

    一. 前言 先说下主要的框架和主要的图形库的特点:(个人见解) Django:python开发的一个重量级的web框架,集成了MVC和ORM等技术,设计之初是为了使开发复杂的.数据库驱动的网站变得简单 ...

  6. Spark踩坑记——共享变量

    [TOC] 前言 Spark踩坑记--初试 Spark踩坑记--数据库(Hbase+Mysql) Spark踩坑记--Spark Streaming+kafka应用及调优 在前面总结的几篇spark踩 ...

  7. 浩哥解析MyBatis源码(四)——DataSource数据源模块

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6634880.html 1.回顾 上一文中解读了MyBatis中的事务模块,其实事务操作无非 ...

  8. js动弹特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. es6基础系列一:let和const

    let 声明变量,可以说是具有作用域的var,用于声明变量,主要规则如下: 1 let声明的变量拥有块级作用域 { let i = 1; console.log(i); // 1 } console. ...

  10. maven私服搭建nexus/windows/linux(一)

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,还有就是公司内部开发的一些版本的jar包,如果没有私服需要一人拷贝一份然后再自己安 ...