css 实现三级联动菜单
昨天因为项目中想要把二级联动菜单改成三级联动菜单,所以我就单独写了一个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 实现三级联动菜单的更多相关文章
- 基于jQuery的AJAX实现三级联动菜单
最近学习jQuery,所以就写了一个关于中国省市县/区的三级联动菜单,权当相互学习,相互促进,特此记录. 下面是嵌套js的html文件: <!DOCTYPE html> <html ...
- js封装的三级联动菜单(使用时只需要一行js代码)
前言 在实际的项目开发中,我们经常需要三级联动,比如省市区的选择,商品的三级分类的选择等等. 而网上却找不到一个代码完整.功能强大.使用简单的三级联动菜单,大都只是简单的讲了一下实现思路. 下面就给大 ...
- 转: javascript实现全国城市三级联动菜单代码
<html> <head> <title>js全国城市三级联动菜单代码_B5教程网</title> <meta http-equiv=" ...
- JS+CSS打造三级折叠菜单,自动收缩其它级 js
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...
- 基于JQ的三级联动菜单选择
<!-- author:青芒 --> <!DOCTYPE html> <html lang="en"> <head> <met ...
- jQuery实现三级联动菜单(鼠标悬停联动)
效果图: 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> < ...
- 用css实现三级导航菜单
主要使用css的hover伪类来实现该功能. 主要思路:先搭出三级菜单的框架,然后使用css的:hover来实现! 对li添加类selected,对该类添加position:relative属性,然后 ...
- Js三级联动菜单
效果演示: <SCRIPT LANGUAGE="JavaScript"> <!-- function CreateSelect(_FormName,_SName, ...
- 30行代码实现js原生三级联动菜单
var oneArr=[['00','成都'],['01','绵阳'],['02','南充']] var towArr={ '00':[['000','武侯区'],['002','锦江区']], '0 ...
随机推荐
- windows 批处理ping ip
//pingSingleIp ;;@Echo off @for /f "tokens=1-4 delims=." %%i in (ip.txt) do (@ping -w 600 ...
- 如何使 vlc 支持 fdk-aac 编码(windows平台
可能是由于fdk-aac开源协议的原因,VLC默认是不支持fdk-aac编码的,fdk-aac 是非常优秀的AAC编码库,并且支持AAC-LD AAC-ELD, 对于要求低延迟的场景下很有用. 可以通 ...
- bzoj 1312: Hard Life 01分数规划+网络流
题目: Description 在一家公司中,人事部经理与业务部经理不和.一次,总经理要求人事部从公司的职员中挑选出一些来帮助业务部经理完成一项任务.人事部经理发现,在公司的所有职员中,有一些人相处得 ...
- 命令行启动nodejs方式 小总结
之前启动nodejs都是写一个命令行文件,如nodejs.cmd,内容为:start node E:\node\app.js. 今天突然想到之前也用过另外一种方式启动,就是在命令行通过cd命令先找到n ...
- javascript自我测试题
javascript自我测试题--14道题而已! 地址:http://perfectionkills.com/javascript-quiz/ 司徒正美的答案解析:http://www.cnblogs ...
- 照片Urls
http://img.my.csdn.net/uploads/201402/16/1392530364_7835.jpg http://img.my.csdn.net/uploads/201402/1 ...
- POJ3468(树状数组区间维护)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 89818 ...
- 杂项:Webpack
ylbtech-杂项:Webpack 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地 ...
- 一. kafka 入门
一.基本概念 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据.这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素. K ...
- 继承自DynamicObject的对象的Xml序列化
默认情况下,对继承自DynamicObject的对象进行序列化操作是不会报错的,但是并没有实际序列化出任何东西来 为了让它进行序列化,我们改造一下实现类,实现IXmlSerializable接口 代码 ...