原生JS实现仿爱微网两级Tab导航菜单
作者:木棉时间:2026-10-29 14:30:06浏览:385
本文提供一段使用原生JavaScript编写的两级导航菜单代码,采用Tab选项卡交互形式。该菜单默认隐藏二级内容,需点击触发显示,也可调整为鼠标悬停切换。代码包含HTML结构、CSS样式及JS逻辑,适合需要轻量级无依赖导航组件的Web开发场景。
原生JS两级Tab导航菜单实现
本文分享一个使用JavaScript实现的仿爱微网风格的两级导航菜单示例。
该导航菜单采用Tab选项卡的设计模式,完全基于原生JavaScript开发。其交互逻辑为点击主菜单项后展开对应的二级子菜单,开发者可根据需求将其修改为鼠标悬停即切换内容的形式。
实际运行效果如下所示:

如需在线查看演示,请访问以下地址:
http://demo.jb51.net/js/2015/js-fawei-web-nav-menu-style-codes/
完整的实现代码如下:
<html>
<head>
<title>一个两级的网页菜单</title>
<style>
*{margin:0;padding:0;}
.subnav {
background-color: #3188DA;
color: #C0DEF9;
height: 20px;
}
.subnav a {
color: #FFFFFF;
margin-bottom: 0;
margin-left: 5px;
margin-right: 5px;
margin-top: 0;
}
.subnav a.cur {
color: #FAEC04;
}
.aa {
background-image: url("images/ui1.png");
background-origin: padding-box;
background-position: left -92px;
background-repeat: no-repeat;
}
.bb {
background-color: #75BAFB;
background-image: url("images/ui1.png");
background-position: left -183px;
background-repeat: no-repeat;
}
.cc{color:#ffffff;}
.dd{color:#000}
ul,li{list-style-type:none}
#navbox {
margin-bottom: 15px;
position: relative;
width:960px;
}
.mainnav {
border-bottom-color: #3188DA;
border-bottom-style: solid;
border-bottom-width: 5px;
height: 31px;
}
.mainnav li {
color: #FFFFFF;
float: left;
font-size: 14px;
font-weight: bold;
line-height: 31px;
margin-right: 5px;
text-align: center;
width: 90px;
}
.mainnav li a {
display: block;
font-weight: normal;
height: 31px;
}
.uhide{display:none;}
.ushow{display:block;}
</style>
</head>
<body>
<div id="navbox">
<ul class="mainnav">
<li class='bb' onclick='qh(0);' id='ta_0'><a href="#" class='cc' id='a0'>首页</a></li>
<li class='aa' onclick='qh(1);' id='ta_1'><a href="#" class='dd' id='a1'>PHP教程</a></li>
<li class='aa' onclick='qh(2);' id='ta_2'><a href="#" class='dd' id='a2'>网页前端</a></li>
<li class='aa' onclick='qh(3);' id='ta_3'><a href="#" class='dd' id='a3'>网页特效</a></li>
<li class='aa' onclick='qh(4);' id='ta_4'><a href="#" class='dd' id='a4'>脚本下载</a></li>
</ul>
<div style="padding-left:20px;" class="uhide" id='tab_0'>
</div>
<div style="padding-left:20px;" class="subnav uhide" id='tab_1'>
<a >PHP基础</a> |
<a href="#">mysql教程</a> |
<a href="#">smarty教程</a> |
<a href="#">PHP框架</a> |
<a href="#">PHP开源</a> |
<a href="#">Linux教程</a>
</div>
<div style="padding-left:20px;" class="subnav uhide" id='tab_2'>
<a >DIV+CSS布局</a> |
<a href="#">javascript教程</a> |
<a href="#">jquery教程</a> |
<a href="#">ajax教程</a> |
<a href="#">flash开源</a> |
<a href="#">photoshop教程</a>
</div>
<div style="padding-left:20px;" class="subnav uhide" id='tab_3'>
<a >js导航菜单</a> |
<a href="#">js表单特效</a> |
<a >js幻灯片</a> |
<a href="#">js文本特效</a> |
<a href="#">js弹出层</a> |
<a href="#">js网页特效</a>
</div>
<div style="padding-left:20px;" class="uhide" id='tab_4'>
</div>
</div>
<script>
function g(o){return document.getElementById(o);}
function qh(n){
for(var i=0;i<=6;i++){
g('ta_'+i).className='aa';
g('ta_'+n).className='bb';
g('a'+i).className='dd';
g('a'+n).className='cc';
g('tab_'+i).className='uhide subnav';
g('tab_'+n).className='ushow subnav';
g('tab_0').className='uhide';
g('tab_0').className='uhide';
g('tab_4').className='uhide';
g('tab_4').className='uhide';
}
}
</script>
</body>
</html>
希望这段代码能为您的JavaScript编程提供有益的参考。
作者最新文章
JavaScript怎么准确判断数据类型:typeof、instanceof与Object.prototype.toString
2026-11-05 17:09:21
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
D3.js 与 ECharts 选型对比:灵活性 vs 开发效率
2026-11-05 09:45:01
