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

首先,写出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. ios微信自动播放音乐

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

  2. js中实现继承的几种方式

    首先我们了解,js中的继承是主要是由原型链实现的.那么什么是原型链呢? 由于每个实例中都有一个指向原型对象的指针,如果一个对象的原型对象,是另一个构造函数的实例,这个对象的原型对象就会指向另一个对象的 ...

  3. JavaScript如何一次性展示几万条数据

    有一位同事跟大家说他在网上看到一道面试题:“如果后台传给前端几万条数据,前端怎么渲染到页面上?”,如何回答? 于是办公室沸腾了, 同事们讨论开了, 你一言我一语说出自己的方案. 有的说直接循环遍历生成 ...

  4. selenide小白教程

    目的: 趁着清明假期临近把手头工作整理了一下,前段时间老大给了一个selenide研究的任务,虽然对selenium的应用比较熟悉,但是以前一直没怎么研究过其他衍生的技术,在研究过程中发现国内好的帖子 ...

  5. Android 开发之错误整理 [2014-04-28 09:22:28 - XXXX] Unable to resolve target 'android-18'

    在开发的时候难免会导入项目,那么怎么经常会遇到这个错误: [2014-04-28 09:22:28 - XXXX] Unable to resolve target 'android-18' targ ...

  6. [讨论] Window XP 安装msxml6后,load xml时提示schema验证失败

    现象:在windows XP x64下,使用用户安装的msxml6库加载xml文件时失败. 进一步说明: 该xml文档使用了W3C的名称空间 xmlns:xsi= "http://www.w ...

  7. Entity Framework快速入门--ModelFirst

    Entity Framework带给我们的不仅仅是操作上的方便,而且使用上也很是考虑了用户的友好交互,EF4.0与vs2010的完美融合也是我们选择它的一个理由吧.相比Nhibernate微软这方面做 ...

  8. Azure Messaging-ServiceBus Messaging消息队列技术系列8-服务总线配额

    上篇博文中我们介绍了Azure ServiceBus Messaging的消息事务机制: Azure Messaging-ServiceBus Messaging消息队列技术系列7-消息事务(2017 ...

  9. python_Tornado_web_框架_分页

    如何实现web_框架_分页? -- 思考什么是xss跨站攻击? --别人把js代码提交到后台,然后从后台返回数据的时候,别人上传的js变成html中的代码, 就会插入别人的代码,带来极大的信息泄露的风 ...

  10. JS为网页添加文字水印【原创】

    最近需要实现为网页添加水印的功能,由于水印的信息是动态生成的,而百度谷歌上的方法往往都是为网页添加图片水印或为图片添加水印,而为网页添加文字水印相关资料较少,于是就自己动手写了这个代码. 通常加动态水 ...