`
vvggsky
  • 浏览: 66929 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JS菜单

    博客分类:
  • WEB
阅读更多
<!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" lang="zh-cn">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
<meta http-equiv="Content-Language" content="gb2312" />  
<meta name="author" content="RainoXu" />    
<title></title>  
</head>  
<body>  
<style  type ="text/css">     
/*  <![CDATA[  */   
body{  
      padding:0;  
      margin:0;  
      text-align:center;  
}  
#nav{  
      padding:0;  
      margin:0 auto;  
      width:900px;  
      height:29px;  
      list-style:none;  
      position:relative;  
}  
#nav li{  
      float:left;  
      text-align:center;  
      padding-left:4px;  
      /*IE6中讨厌的bug,在IE7和FireFox中不设宽度能自动适应内部元素的宽度,IE6不行=.=!!*/  
      +width:72px;   
}  
#nav li.highlight{  
      background:url("http://www.rainoina.com/raino/UserFiles/image/douban_nav/nav_bg_l.jpg") no-repeat left top;  
}  
#nav span a{  
      text-decoration:none;  
      font:14px tahoma;  
      display:block;  
      padding-right:9px;  
      padding-left:5px;  
      height:29px;  
      line-height:29px;  
}  
#nav li.highlight a{   
      background:url("http://www.rainoina.com/raino/UserFiles/image/douban_nav/nav_bg_r.jpg") no-repeat right top;  
}  
.subNav{  
      padding:0;  
      list-style:none;  
      width:900px;  
      height:30px;  
      background:#EEF9EB;  
      border-top:#DCF5D5;  
      display:none;  
      position:absolute;  
      left:0;  
      +left:-40px;  
}  
.highlight .subNav{  
      display:block;  
}  
.subNav li{  
      height:30px;  
      line-height:30px;  
}  
.subNav a{  
      text-decoration:none;  
      font:12px tahoma;  
}  
/*  ]]>  */    
</style>    
<ul id="nav">  
      <li>  
            <span><a href="###">菜单一</a></span>  
            <ul class="subNav">  
                  <li><a href="###">1子菜单一</a></li>  
                  <li><a href="###">子菜单二</a></li>  
                  <li><a href="###">子菜单三</a></li>  
                  <li><a href="###">子菜单四</a></li>  
            </ul>  
      </li>  
      <li>  
            <span><a href="###">菜单二</a></span>  
            <ul class="subNav">  
                  <li><a href="###">2子菜单一</a></li>  
                  <li><a href="###">子菜单二</a></li>  
                  <li><a href="###">子菜单三</a></li>  
                  <li><a href="###">子菜单四</a></li>  
            </ul>    
      </li>  
      <li>  
            <span><a href="###">菜单三</a></span>  
            <ul class="subNav">  
                  <li><a href="###">3子菜单一</a></li>  
                  <li><a href="###">子菜单二</a></li>  
                  <li><a href="###">子菜单三</a></li>  
                  <li><a href="###">子菜单四</a></li>  
            </ul>  
      </li>  
      <li>  
            <span><a href="###">菜单四</a></span>  
            <ul class="subNav">  
                  <li><a href="###">4子菜单一</a></li>  
                  <li><a href="###">子菜单二</a></li>  
                  <li><a href="###">子菜单三</a></li>  
                  <li><a href="###">子菜单四</a></li>  
            </ul>    
      </li>  
</ul>  
<script type="text/javascript">  
//<![CDATA[  
//定义一个控制NAV的类  
function navSwap(navId){  
      this.obj=document.getElementById(navId);  
      this.subElement=[];  
      //把#navId的LI子节点(仅仅是子节点,不包括孙子节点)推入栈中  
      for (var i=0;i<this.obj.childNodes.length;i++){  
            if (this.obj.childNodes[i].nodeType==1){  
                  this.subElement.push(this.obj.childNodes[i]);  
            }  
      }        
        
      if (this.subElement.length>0){  
            //首先将第一个标签选项高亮  
            this.subElement[0].className="highlight";  
            for (var i=0;i<this.subElement.length;i++){  
                  //得到各个<span/>中的<a/>节点  
                  var tagNode=this.subElement[i].getElementsByTagName("span")[0].getElementsByTagName("a")[0];  
                    
                  //绑定事件  
                  tagNode.onmouseover=function(){  
                        //得到#navId下的所有li,这里得到的也有来自subNav下的li,但这不影响后面的操作  
                        var allSubTag=document.getElementById(navId).getElementsByTagName("li");  
                        //找到class="highlight"的li,取消它的高亮,一旦找到就跳出循环  
                        for (var j=0;j<allSubTag.length ;j++){  
                              if (allSubTag[j].className=="highlight"){  
                                    allSubTag[j].className="";  
                                    break;  
                              }  
                        }  
                        //这里的this指向的是onmouseover时触发者<span/>中的<a/>标签,而不是类的内部成员。  
                        this.parentNode.parentNode.className="highlight";  
                  }  
            }  
      }        
}  
//生成一个控制的对象  
new navSwap("nav");  
//]]>  
</script>  
</body>  
</html>  
分享到:
评论

相关推荐

    s数型菜单,js+xml菜单,js+table菜单,js+div菜单,js菜单

    总的来说,选择哪种JavaScript菜单技术取决于项目需求、性能考虑以及开发者的熟练程度。在实际应用中,开发者可能会根据具体情况组合使用这些技术,以达到最佳的用户体验和性能效果。在学习和实践中,理解每种技术的...

    35个javascript菜单菜单样式

    "35个JavaScript菜单菜单样式"是一个资源包,提供了多种设计独特的菜单样式,旨在帮助开发者提升网站或应用的用户体验。 在网页设计中,菜单是一个重要的导航元素,它允许用户轻松地浏览网站的不同部分。JavaScript...

    js 菜单大全,包含了各种漂亮的菜单

    总的来说,这个“js 菜单大全”集合是一个宝贵的资源,无论你是初学者还是经验丰富的开发者,都可以从中学习到JavaScript菜单设计的各种技巧和最佳实践。通过深入理解和实践这些示例,你可以提升自己的前端开发技能...

    js 菜单js 菜单js 菜单js 菜单js 菜单

    js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js ...

    javascript 菜单

    "Basic"可能是一个基础的JavaScript菜单,展示了最简单的下拉或弹出菜单的基本结构。这包括如何使用JavaScript操作DOM元素(如添加和删除class,显示和隐藏元素)以及响应用户事件。 4. **Drop Shadow** "Drop ...

    仿淘宝商城左侧JS菜单

    总的来说,"仿淘宝商城左侧JS菜单"项目是学习和实践前端开发技能的好案例,涵盖了CSS布局、JavaScript交互以及现代WEB开发中的诸多技巧。通过这样的实践,开发者可以提高自己在网站设计和用户体验方面的专业能力。

    Js右键菜单,js菜单,漂亮的Js右键导航,好用的Js右键菜单

    本文将深入探讨"Js右键菜单,js菜单,漂亮的Js右键导航,好用的Js右键菜单"这一主题,帮助开发者了解如何利用JavaScript实现高效、美观的右键菜单功能。 一、JavaScript右键菜单的基本原理 在网页上,右键点击事件...

    div+css+js菜单

    div+css+js菜单 div+css+js菜单 div+css+js菜单 div+css+js菜单 div+css+js菜单 div+css+js菜单 div+css+js菜单 div+css+js菜单 div+css+js菜单

    jsp的仿outlook的js菜单

    通过分析和调试这个文件,我们可以更深入地了解如何在JSP中构建仿Outlook的JavaScript菜单。 总的来说,"jsp的仿outlook的js菜单"是一个结合了JavaScript、JSP和CSS技术的项目,它展示了如何通过这些技术来创建交互...

    css+javascript 菜单

    "CSS+JavaScript 菜单"就是这样一个技术组合,用于构建动态、响应式且功能丰富的导航元素。下面将详细讲解CSS和JavaScript在创建这种菜单中的作用,以及如何将两者结合使用。 首先,CSS(Cascading Style Sheets)...

    一个很不错的Js菜单生成工具

    JavaScript(Js)是一种广泛应用于网页和网络应用的脚本语言,它主要负责处理客户端的交互逻辑,让网页更具动态性和用户友好性。在网页设计中,菜单是必不可少的一部分,它帮助用户快速导航到不同的页面或功能。而...

    13个漂亮的JS导航菜单

    首先,我们关注的是JS(JavaScript)在创建动态导航菜单中的作用。JavaScript是一种强大的客户端脚本语言,它允许开发者为网页添加交互性,使得导航菜单不仅美观,而且具有响应性和自定义功能。JS菜单通常包括下拉...

    提供一个好用的js菜单树

    JavaScript菜单树是一种基于JavaScript编程语言构建的动态导航菜单,它以树形结构展示数据,用户可以通过展开和折叠节点来查看或隐藏子级菜单。这样的设计使得大量层级关系的数据变得易于理解和操作,尤其适用于网站...

    js菜单模板

    该压缩包文件提供的“菜单js模板”包含样式代码和示例,意味着它不仅包含了JavaScript逻辑,还可能包括CSS样式,用于控制菜单的外观。通过引入这个模板,开发者无需从零开始编写菜单代码,可以节省大量时间和精力,...

    js菜单 鼠标经过折叠/滑动菜单

    在JavaScript的世界里,创建动态和交互式的用户界面是常见的需求,而“js菜单 鼠标经过折叠/滑动菜单”就是这样的一个功能。这种菜单设计可以极大地提升网站的用户体验,因为它允许用户通过简单地将鼠标悬停在菜单项...

    js菜单.rar

    总的来说,"js菜单.rar"提供的资源是一个实用的JavaScript菜单解决方案,涵盖了事件处理、DOM操作、数据持久化和动态效果等多个JavaScript核心概念。无论是初学者还是经验丰富的开发者,都能从中学习到关于...

    js菜单(sd-menu)

    JavaScript(简称JS)是一种轻量级的解释型编程...以上就是关于"js菜单(sd-menu)"的一些关键知识点,涵盖了JavaScript菜单实现的基本原理和常见实践。掌握这些技能,开发者可以创建出符合各种需求的交互式菜单系统。

    asp.net动态js菜单程序源码(动态菜单+静态菜单+数据库文件)

    资源名:asp.net动态js菜单源码(动态菜单+静态菜单+数据库文件) 资源类型:程序源代码 源码说明: 1.Default.aspx页面是框架,需要静态菜单显示或是动态菜单显示,设置起始页。Login页面或LoginStatic页面。 2.运行 ...

    js菜单[简单实用]

    在这个"js菜单[简单实用]"的项目中,我们可以看到一个基本的JavaScript菜单实现,适用于那些希望用JS来控制动态菜单的开发者。 首先,"index.html"是网页的主文件,通常包含HTML结构以及内联或外部引用的CSS和JS...

    JS菜单-横|纵向菜单

    JavaScript(简称JS)和jQuery是Web开发中用于创建交互式用户界面的重要工具,尤其是在构建菜单系统时。在本文中,我们将深入探讨如何使用这两种技术来创建高效、灵活且跨浏览器的横纵向菜单。 首先,JavaScript是...

Global site tag (gtag.js) - Google Analytics