昨天因为项目中想要把二级联动菜单改成三级联动菜单,所以我就单独写了一个tab导航栏,用纯css的方式实现的三级联动。一开始我想着可以用js实现,但是js的hover事件和mouseenter,mouseover,mouseleave,mouseout事件都会有一个问题,就是当鼠标移出区域块儿的时候,我们希望弹出来的二级菜单和三级菜单可能不会像我们希望的显示隐藏。所以,我们可以用css3的伪类元素实现。

大家可以去我的gitHub上去看demo,我把网址贴一下:https://github.com/dreamITGirl/projectStudy/blob/master/html/%E5%88%86%E7%BA%A7%E8%81%94%E5%8A%A8%E8%8F%9C%E5%8D%95%E6%A0%8F.html

顺便再把效果图贴一下:

代码如下

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0"/>
<title>菜单栏</title>
<style>
html, body, ul, li {
margin: 0;
padding: 0;
font-family: "微软雅黑", Helvetica, Arial, sans-serif;
} ul, li {
list-style: none;
} .top {
background: #4db3a4;
height: 34px;
width: 100%;
padding: 0 10%;
box-sizing: border-box;
} .main-nav {
display: flex;
line-height: 34px;
} .two-nav {
background: #4db3a4;
position: relative;
display: none;
} .three-nav {
background: #4db3a4;
position: absolute;
top: 0;
right: -116px;
display: none;
} .item-nav, .two-item, .three-item {
width: 126px;
text-align: center;
} .item-nav > a, .two-item > a, .three-item > a {
text-decoration: none;
color: #fff;
} .none {
display: none;
}
.item-nav:hover > .two-nav {
display: block;
} .two-item:hover > .three-nav {
display: block;
} .item-nav:hover, .two-item:hover, .three-item:hover {
background: #44a597;
}
</style>
</head>
<body>
<div class="top">
<ul class="main-nav">
<li class="item-nav">
<a href="javascript:;">我的行程</a>
</li>
<li class="item-nav">
<a href="javascript:;">ES管理员</a>
<ul class="two-nav none">
<li class="two-item">
<a href="javascript:;">ES差旅预订</a>
<ul class="three-nav none">
<li class="three-item">
<a href="javascript:;">ES差旅1</a>
</li>
<li class="three-item">
<a href="javascript:;">2</a>
</li>
<li class="three-item">
<a href="javascript:;">3</a>
</li>
<li class="three-item">
<a href="javascript:;">4</a>
</li>
</ul>
</li>
<li class="two-item">
<a href="javascript:;">ES差旅</a>
<ul class="three-nav none">
<li class="three-item">
<a href="javascript:;">酒店账单</a>
</li>
<li class="three-item">
<a href="javascript:;">飞机账单</a>
</li>
<li class="three-item">
<a href="javascript:;">火车账单</a>
</li>
<li class="three-item">
<a href="javascript:;">全部账单</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="item-nav">
<a href="javascript:;">差旅报表</a> </li>
<li class="item-nav">
<a href="javascript:;">差旅审批</a>
<ul class="two-nav none">
<li class="two-item">
<a href="javascript:;">酒店账单</a>
<ul class="three-nav none">
<li class="three-item">
<a href="javascript:;">酒店账单</a>
</li>
<li class="three-item">
<a href="javascript:;">飞机账单</a>
</li>
<li class="three-item">
<a href="javascript:;">火车账单</a>
</li>
<li class="three-item">
<a href="javascript:;">全部账单</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

css 实现三级联动菜单的更多相关文章

  1. 基于jQuery的AJAX实现三级联动菜单

    最近学习jQuery,所以就写了一个关于中国省市县/区的三级联动菜单,权当相互学习,相互促进,特此记录. 下面是嵌套js的html文件: <!DOCTYPE html> <html ...

  2. js封装的三级联动菜单(使用时只需要一行js代码)

    前言 在实际的项目开发中,我们经常需要三级联动,比如省市区的选择,商品的三级分类的选择等等. 而网上却找不到一个代码完整.功能强大.使用简单的三级联动菜单,大都只是简单的讲了一下实现思路. 下面就给大 ...

  3. 转: javascript实现全国城市三级联动菜单代码

    <html> <head> <title>js全国城市三级联动菜单代码_B5教程网</title> <meta http-equiv=" ...

  4. JS+CSS打造三级折叠菜单,自动收缩其它级 js

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  5. 基于JQ的三级联动菜单选择

    <!-- author:青芒 --> <!DOCTYPE html> <html lang="en"> <head> <met ...

  6. jQuery实现三级联动菜单(鼠标悬停联动)

    效果图: 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> < ...

  7. 用css实现三级导航菜单

    主要使用css的hover伪类来实现该功能. 主要思路:先搭出三级菜单的框架,然后使用css的:hover来实现! 对li添加类selected,对该类添加position:relative属性,然后 ...

  8. Js三级联动菜单

    效果演示: <SCRIPT LANGUAGE="JavaScript"> <!-- function CreateSelect(_FormName,_SName, ...

  9. 30行代码实现js原生三级联动菜单

    var oneArr=[['00','成都'],['01','绵阳'],['02','南充']] var towArr={ '00':[['000','武侯区'],['002','锦江区']], '0 ...

随机推荐

  1. POJ 2421 Constructing Roads(Kruskal算法)

    题意:给出n个村庄之间的距离,再给出已经连通起来了的村庄.求把所有的村庄都连通要修路的长度的最小值. 思路:Kruskal算法 课本代码: //Kruskal算法 #include<iostre ...

  2. jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别

    http://www.poluoluo.com/jzxy/201312/253059.html 在这个sprint中,因为要写前端UI,所以用到了jQuery,但是jQuery在向上遍历DOM树的AP ...

  3. JavaUtil_01_MD5加密

    一.百度翻译MD5工具类 昨天做java微信开发,引用百度翻译API给公众号添加翻译功能时,需要使用MD5生成签名.注意,使用MD5生成签名后一定要转成小写,不然百度翻译后台不会认你这个签名的,会报无 ...

  4. QWidget上下文菜单处理函数

    QWidget类是Qt中所有可视化部件的基类,其很多函数都是虚函数,能被子类重写以表现不同形式和功能,今天来学习一下QWdiget的事件处理函数. 事件是鼠标.键盘或系统因其自身某些状态发生改变而引起 ...

  5. PostgreSQL物化视图(materialized view)

    1.创建视图 CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name [ (column_name [, ...] ) ] [ WITH ( sto ...

  6. tornado 获取参数

    self.get_argument('name') 没有传递name就报400错误了 tornado.web.MissingArgumentError: HTTP 400: Bad Request ( ...

  7. 关于avpicture_fill 和 sws_scale的关系

    avpicture_fill((AVPicture *) pFrameRGB, buffer, PIX_FMT_RGB565, pCodecCtx->width, pCodecCtx->h ...

  8. 装了Ironpython还需要装Python吗?

    IronPython 是一种在 NET 和 Mono 上实现的 Python 语言,由 Jim Hugunin(同时也是 Jython 创造者)所创造.IronPython是优雅的python编程语言 ...

  9. 使用Visual Studio进行单元测试-Part2

    写在开头:Coding ain't done until all the tests run. No unit test no BB. 另外有童鞋在上一篇博文留言说找不到Add Fake Assemb ...

  10. hdu 5909 Tree Cutting —— 点分治

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5909 点分治,每次的 rt 是必选的点: 考虑必须选根的一个连通块,可以DP,决策就是在每个子树中决定选不 ...