JS实现无限级网页折叠菜单,用户代理字符串userAgent可实现的四个识别

本文实例讲述了JS实现同一个网页布局滑动门和TAB选项卡。分享给大家供大家参考。具体如下:

定义

本文实例讲述了JS实现无限级网页折叠菜单(类似树形菜单)效果代码。分享给大家供大家参考。具体如下:

这里演示同一个网页布局滑动门和TAB选项卡效果,其实滑动门和选项卡没有太大的区别,无非是鼠标动作的不同而已,但是有时候在同一个网页中布局两个以上的选项卡,总容易产生混乱,导致JS出错,如果你需要这样做,那么就请参考本实例,帮你解决这个问题。

  用户代理字符串:navigator.userAgent

这是一款超不错的网页折叠菜单,采用JavaScript实现。折叠菜单是大家比较常见到的一种菜单形式,可广泛应用于管理系统、后台左侧、产品列表中,本折叠菜单有点树形菜单的味道,相信“无限级”会满足你的要求。

运行效果截图如下:

  HTTP规范明确规定,浏览器应该发送简短的用户代理字符串,指明浏览器的名称和版本号。但现实中却没有这么简单。

运行效果截图如下:

图片 1

发展历史

图片 2

在线演示地址如下:

【1】1993年美国NCSA国家超级计算机中心发布了世界上第一款web浏览器Mosaic,该浏览器的用户代理字符串为Mosaic/0.9

在线演示地址如下:

【2】Netscape公司进入浏览器开发领域,将自己产品的代号定名了Mozilla(Mosaic
Killer)的简写,用户代理字符串格式为Mozilla/版本号 [语言]
(平台;加密类型)

具体代码如下:

【3】IE发布的第一款赢得用户广泛认可的web浏览器IE3,当时Netscap已经占据了绝对市场份额,为了让服务器能够检测到IE,IE将用户代理字符串修改成兼容Netscape的形式:Mozilla/2.0(compatible;MSIE版本号;操作系统)

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>修正版的网页Tab滑动门</title>
<style>
*{margin:0;padding:0;}
body{margin:50px;font-size:12px;color:#666;}
li{list-style:none;}
.list{width:378px;height:100px;padding:10px;font-size:14px;line-height:24px;border:1px #cfedff solid;border-top:0;}
.tab{width:398px;height:34px;border:1px #cfedff solid;border-bottom:0;background:url(images/title.gif) repeat-x;}
.tab ul{margin:0;padding:0;}
.tab li{float:left;padding:0 30px;height:34px;line-height:34px;text-align:center;border-right:1px #ebf7ff solid;cursor:pointer;}
.tab li.now{color:#5299c4;background:#fff;font-weight:bold;}
.block{display:block;}
</style>
<script type="text/javascript">
function setTab(name,num,n){
  for(i=1;i<=n;i++){
    var menu=document.getElementById(name+i);
    var con=document.getElementById(name+"_"+"con"+i);
    menu.className=i==num?"now":"";
     con.style.display=i==num?"block":"none"; 
  }
}
</script>
</head>
<body>
<h1>TAB切换onMouse</h1>
 <div class="tab">
  <ul>
   <li id="one1" onmouseover="setTab('one',1,4)" class="now">儒家</li>
   <li id="one2" onmouseover="setTab('one',2,4)">法家</li>
   <li id="one3" onmouseover="setTab('one',3,4)">墨家</li>
   <li id="one4" onmouseover="setTab('one',4,4)">道家</li>
  </ul>
 </div>
 <div class="list">
  <div id="one_con1">
    <div style="background:#333;">儒家,代表人物为孔丘、孟轲,代表作《春秋》、《论语》、《孟子》。 </div>
  </div>
  <div id="one_con2" style="display:none;">
    <div style="background:#ff0;">法家,代表人物韩非、李斯、管仲、商鞅,代表作《韩非子》、《管子》。 </div>
  </div>
  <div id="one_con3" style="display:none;">
   <div style="background:#f00;">墨家,代表人物墨翟,代表作《墨子》。 </div>
  </div>
  <div id="one_con4" style="display:none;">
   <div style="background:#e45;">道家,代表人物李耳、庄周,代表作《老子》、《庄子》。 </div>
  </div>
 </div>
 <br /><br /><br />
<h1>TAB切换onClick</h1>
 <div class="tab">
  <ul>
   <li id="two1" onclick="setTab('two',1,4)" class="now">儒家</li>
   <li id="two2" onclick="setTab('two',2,4)">法家</li>
   <li id="two3" onclick="setTab('two',3,4)">墨家</li>
   <li id="two4" onclick="setTab('two',4,4)">道家</li>
  </ul>
 </div>
 <div class="list">
  <div id="two_con1">
    <div style="background:#333;">儒家,代表人物为孔丘、孟轲,代表作《春秋》、《论语》、《孟子》。 </div>
  </div>
  <div id="two_con2" style="display:none;">
    <div style="background:#ff0;">法家,代表人物韩非、李斯、管仲、商鞅,代表作《韩非子》、《管子》。 </div>
  </div>
  <div id="two_con3" style="display:none;">
   <div style="background:#f00;">墨家,代表人物墨翟,代表作《墨子》。 </div>
  </div>
  <div id="two_con4" style="display:none;">
   <div style="background:#e45;">道家,代表人物李耳、庄周,代表作《老子》、《庄子》。 </div>
  </div>
 </div>
</body>
</html>

【4】各浏览器陆续出现,用户代理字符串的显示格式也越来越类似…… 

<html>
<head>
<title>无限级折叠菜单JS版</title>
<style> 
<!--
body,ul,h3 {margin:0px; padding:0px;}
li {list-style-type:none;}
body{
 font-size:12px;
 color:#333; 
 font-family: Simsun;
 line-height:15px;
 }
a{text-decoration:none;color:#004285;border:none;}
a:hover{text-decoration:none;color:#C33;}
#menu {
 width:260px;
 margin:50px auto; 
 padding:10px; 
 border:#EEE 1px solid;
 }
 #menu h3 {
 font-size:12px;
 }
 #menu ul { 
 background:url("images/ul-bg.gif") repeat-y 5px 0px; overflow:hidden;
 }
 #menu ul li {
 padding:5px 0 2px 15px; 
 background:url("images/tree-ul-li.gif") no-repeat 5px -32px; 
 }
 #menu ul li ul {display:none;}
 #menu ul li em {
 cursor:pointer;
 display:inline-block;
 width:15px;
 float:left;
 height:15px;
 margin-left:-14px;
 background:url("images/tree-ul-li.gif") no-repeat -32px 2px;
 }
 #menu ul li em.off {
 background-position: -17px -18px;
 }
 #menu ul li#end {
 background-color:#FFF;
 }
 #menu ul.off { 
 display:block;
 }
-->
</style>
</head>
<body>
<div id="menu">
 <h3>无限级折叠菜单JavaScript版</h3>
 <ul>
 <li><em></em><a href='javascript:void(0);'>菜单_1_1</a>
 <ul>
  <li><em></em><a href='javascript:void(0);'>菜单_2_1</a>
  <ul>
  <li><em></em><a href='javascript:void(0);'>菜单_3_1</a>
  <ul>
   <li><em></em><a href='javascript:void(0);'>菜单_4_1</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
   <li id='end'><em></em><a href='javascript:void(0);'>菜单_4_2</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
  </ul>
  </li>
  <li id='end'><em></em><a href='javascript:void(0);'>菜单_3_2</a>
  <ul>
   <li><em></em><a href='javascript:void(0);'>菜单_4_1</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
   <li id='end'><em></em><a href='javascript:void(0);'>菜单_4_2</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
  </ul>
  </li>
  </ul>
  </li>
  <li id='end'><em></em><a href='javascript:void(0);'>菜单_2_2</a>
  <ul>
  <li><em></em><a href='javascript:void(0);'>菜单_3_1</a>
  <ul>
   <li><em></em><a href='javascript:void(0);'>菜单_4_1</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
   <li id='end'><em></em><a href='javascript:void(0);'>菜单_4_2</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
  </ul>
  </li>
  <li id='end'><em></em><a href='javascript:void(0);'>菜单_3_2</a>
  <ul>
   <li><em></em><a href='javascript:void(0);'>菜单_4_1</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
   <li id='end'><em></em><a href='javascript:void(0);'>菜单_4_2</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
  </ul>
  </li>
  </ul>
  </li>
 </ul>
 </li>
 <li id='end'><em></em><a href='javascript:void(0);'>菜单_1_2</a>
 <ul>
  <li><em></em><a href='javascript:void(0);'>菜单_2_1</a>
  <ul>
  <li><em></em><a href='javascript:void(0);'>菜单_3_1</a>
  <ul>
   <li><em></em><a href='javascript:void(0);'>菜单_4_1</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
   <li id='end'><em></em><a href='javascript:void(0);'>菜单_4_2</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
  </ul>
  </li>
  <li id='end'><em></em><a href='javascript:void(0);'>菜单_3_2</a>
  <ul>
   <li><em></em><a href='javascript:void(0);'>菜单_4_1</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
   <li id='end'><em></em><a href='javascript:void(0);'>菜单_4_2</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
  </ul>
  </li>
  </ul>
  </li>
  <li id='end'><em></em><a href='javascript:void(0);'>菜单_2_2</a>
  <ul>
  <li><em></em><a href='javascript:void(0);'>菜单_3_1</a>
  <ul>
   <li><em></em><a href='javascript:void(0);'>菜单_4_1</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
   <li id='end'><em></em><a href='javascript:void(0);'>菜单_4_2</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
  </ul>
  </li>
  <li id='end'><em></em><a href='javascript:void(0);'>菜单_3_2</a>
  <ul>
   <li><em></em><a href='javascript:void(0);'>菜单_4_1</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
   <li id='end'><em></em><a href='javascript:void(0);'>菜单_4_2</a>
   <ul>
   <li><a href='javascript:void(0);'>菜单_5_1</a></li>
   <li id='end'><a href='javascript:void(0);'>菜单_5_2</a></li>
   </ul>
   </li>
  </ul>
  </li>
  </ul>
  </li>
 </ul>
 </li>
 </ul>
</div>
<script type="text/javascript"> 
(function(e){
 for(var _obj=document.getElementById(e.id).getElementsByTagName(e.tag),i=-1,em;em=_obj[++i];){
 em.onclick = function(){ //onmouseover
  var ul = this.nextSibling;
  if(!ul){return false;}
  ul = ul.nextSibling; if(!ul){return false;} 
  if(e.tag != 'a'){ ul = ul.nextSibling; if(!ul){return false;} } //a 标签控制 隐藏或删除该行
  for(var _li=this.parentNode.parentNode.childNodes,n=-1,li;li=_li[++n];){
  if(li.tagName=="LI"){
   for(var _ul=li.childNodes,t=-1,$ul;$ul=_ul[++t];){
   switch($ul.tagName){
   case "UL":
    $ul.className = $ul!=ul?"" : ul.className?"":"off";
   break;
   case "EM":
    $ul.className = $ul!=this?"" : this.className?"":"off";
   break;
   }
   }
  }
  }
 }
 }
})({id:'menu',tag:'em'});
</script>
</body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

测试工具

希望本文所述对大家的JavaScript程序设计有所帮助。

您可能感兴趣的文章:

  • js基于面向对象实现网页TAB选项卡菜单效果代码
  • js简单实现竖向tab选项卡的方法
  • JS+CSS实现的经典tab选项卡效果代码
  • 原生js实现tab选项卡切换
  • 原生javascript实现Tab选项卡切换功能
  • js实现类似菜单风格的TAB选项卡效果代码
  • jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
  • JS实现不规则TAB选项卡效果代码
  • JS基于面向对象实现的多个倒计时器功能示例
  • JS基于面向对象实现的选项卡效果示例
  • 学习javascript面向对象
    实例讲解面向对象选项卡
  • JS使用面向对象技术实现的tab选项卡效果示例

 利用各桌面浏览器调试工具,主要是IE调试工具及chrome的emulation手机调试工具

您可能感兴趣的文章:

  • 一个简单的js树形菜单
  • JS无限极树形菜单,json格式、数组格式通用示例
  • Bootstrap树形菜单插件TreeView.js使用方法详解
  • json+jQuery实现的无限级树形菜单效果代码
  • Vue.js组件tree实现无限级树形菜单
  • Vue.js
    递归组件实现树形菜单(实例分享)
  • JS+CSS实现TreeMenu二级树形菜单完整实例
  • JS+CSS简单树形菜单实现方法
  • javascript实现在下拉列表中显示多级树形菜单的方法
  • JavaScript递归算法生成树形菜单

 图片 3

桌面端测试结果

【1】IE

  [1.1]IE3

    Mozilla/2.0 (compatible; MSIE3.02; windows 95)

  [1.2]IE6

    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

  [1.3]IE7

    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)

  [1.4]IE8

    Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1;
Trident/4.0)

  [1.5]IE9

    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;
Trident/5.0)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图