# 菜单高亮显示
我们在实际项目中,经常使用到“菜单高亮”这个功能,这个看似简单的功能,却难倒了绝大多数的前端,有的人用前端实现,有的人用后端实现,甚至有时候用很多方法都不奏效!
> 我认为:用jquery下面的这种方法,我认为是最好的!
## 一、原理
1、在菜单层的链接加上一个 `rel` 属性,保存 `href` 属性即可,
2、然后利用浏览器地址栏中的 `URL` 和 `rel` 对比,
3、如果相等就在当前的 `<a>`标签加上 `class` ,同时移除其它 `<a>` 标签的 `class`。
## 二、代码段
```
<script type="text/javascript">
var urlstr = location.href; //获取浏览器的url
var urlstatus = false; //标记
//遍历导航div
$(".dropdown a").each(function() {
//判断导航里面的rel和url地址是否相等
if((urlstr + '/').indexOf($(this).attr('rel')) > -1 && $(this).attr('rel') != '') {
$(this).addClass('cur');
urlstatus = true;
} else {
$(this).removeClass('cur');
}
});
//当前样式保持
if(!urlstatus) {
$(".dropdown a").eq(0).addClass('cur');
}
</script>
```
## 三、示例
具体代码,如图所示:
![](image/57c926a9d2b59.png)
1、index.html 和 index_b.html 的代码相同,如下:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="style.css" />
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script src="script.js"></script>
<style>
.cur{background: #EF9B11;color:#FF0000;}
</style>
</head>
<body>
<ul>
<li class="dropdown">
<a id="a" href="index.html" class="dropbtn" onclick="showList(this)" rel="index.html">标题 A</a>
<div class="dropdown-content" id="dropdown-a">
<a href="#">下拉 1</a>
<a href="#">下拉 2</a>
<a href="#">下拉 3</a>
</div>
</li>
<li class="dropdown">
<a id="b" href="index_b.html" class="dropbtn" onclick="showList(this)" rel="index_b.html">标题 B</a>
<div class="dropdown-content" id="dropdown-b">
<a href="#">下拉 1</a>
<a href="#">下拉 2</a>
<a href="#">下拉 3</a>
</div>
</li>
</ul>
<script type="text/javascript">
var urlstr = location.href; //获取浏览器的url
var urlstatus = false; //标记
//遍历导航div
$(".dropdown a").each(function() {
//判断导航里面的rel和url地址是否相等
if((urlstr + '/').indexOf($(this).attr('rel')) > -1 && $(this).attr('rel') != '') {
$(this).addClass('cur');
urlstatus = true;
} else {
$(this).removeClass('cur');
}
});
//当前样式保持
if(!urlstatus) {
$(".dropdown a").eq(0).addClass('cur');
}
</script>
</body>
</html>
```
2、css代码
```
body {
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
float: left;
}
li a, .dropbtn {
display: inline-block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover, .dropdown:hover .dropbtn {
background-color: #1f75cf;
}
li.dropdown {
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #fafafa;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.dropdown-content a:hover {
color: white;
background-color: #1f75cf;
}
.show {
display: block;
}
```
3、JS代码
```
function showList(o) {
hideList("dropdown-content" + o.id);
document.getElementById("dropdown-" + o.id).classList.toggle("show");
}
function hideList(option) {
var dropdowns = document.getElementsByClassName("dropdown-content");
for (var i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.id != option) {
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
window.onclick = function(e) {
if (!e.target.matches('.dropbtn')) {
hideList("");
}
}
```
- 前言
- 第一章 基础知识
- 图片上传
- 第二章 功能模块数据字典
- 1.1门户管理
- 门户管理模块
- term_relationships 文章分类对应表
- terms 文章分类表
- posts 文章表
- 1.2课程系统
- 课程系统模块
- card 点卡管理
- cardtype 点卡类型
- application 申请教师
- course 课程管理
- coursetype 课程分类
- label 标签管理
- material 资料列表
- order 订单管理
- section 课时管理
- teacher_order 教师审核
- tixian 提现
- usercourse 用户课程
- users 用户表
- 1.3家庭档案(健康家)
- 家庭档案模块
- family_files 家庭档案表
- file_classify 家庭档案分类表
- users_health 健康家用户
- 1.4商城系统
- 商城系统模块
- 商城配置
- 商品-订单模块
- 2.1系统设置
- 系统设置模块
- option 全站配置表
- 3.1用户管理
- 用户管理模块
- users 用户表
- oauth_user 第三方用户表
- user_favorites 用户收藏表
- common_action_log 点赞记录表
- 3.2RBAC管理
- RBAC管理模块
- role 角色表
- role_user 用户角色对应表
- auth_access 权限授权表
- auth_rules 权限规则表
- 3.3菜单管理
- 菜单模块
- menu 后台菜单表
- nav 前台导航表
- nav_cate 前台导航分类表
- route URL路由表
- 4.1评论管理
- 评论管理模块
- comments 评论表
- 4.2幻灯管理
- 幻灯管理模块
- slide 幻灯片表
- slide_cat 幻灯片分类表
- 4.3友情链接模块
- links 友情链接表
- 4.4广告管理模块
- ad 广告表
- 4.5留言管理
- guestbook 留言表
- 4.6 微信管理模块
- wx_user 微信用户
- wx_keyword 关键词
- wx_menu 微信菜单
- wx_text 文本回复
- wx_img 微信图文
- wx_news 图文消息?
- 5.1插件管理模块
- 插件模块
- plugins 插件表
- district 中国省市区乡镇数据表
- 5.2扩展工具
- asset 资源表
- famous 名人名言表
- 区域管理
- region 区域管理
- 第三章 系统模块
- 门户系统
- 教学系统
- 博客系统
- 医疗系统
- 商城系统
- 一站式检测系统
- 第四章 视频教程
- 4.1 NewThink视频教程
- 4.2 ApiCloud视频教程
- 4.3 ThinkPHP视频教程
- 4.4 JQuery视频教程
- 4.5 PHP视频教程
- 4.6 IOS视频教程
- 第五章 PHP加解密
- 5.1 PHP解密
- 5.2 PHP加密
- 第六章 后台菜单
- 第七章 前端模块
- 下拉刷新
- 轮播特效
- 获得焦点时-加黑色蒙版动画
- 获得焦点时-图片抖动动画
- 导航下拉隐藏上拉显示
- 菜单高亮显示
- 商品大菜单
- 六宫格
- 第八章 工具类
- 相关知识
- 附件一:nav.php
- git冲突的解决办法