返回顶部
首页 > 资讯 > 前端开发 > html >Javascript中怎么实现一个高亮菜单效果
  • 292
分享到

Javascript中怎么实现一个高亮菜单效果

2024-04-02 19:04:59 292人浏览 泡泡鱼
摘要

javascript中怎么实现一个高亮菜单效果,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。【结构层】一级菜单结构层:<

javascript中怎么实现一个高亮菜单效果,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

【结构层】

一级菜单结构层:

<ul id="menu">   <li><a href="default.html">首页a>li>                    <li><a href="clothing.html">服装用品a>li>   <li><a href="house.html">家居用品a>li>                <li><a href="cosmetic.html">化妆用品a>li>      ul>

可以看到在这个一级菜单中,其链接地址一般是没有参数值的。 二级菜单的结构层:

 #menu li a.nORMal{background:#fff;}//普通样式  #menu li a.over{background:#00ff00;} //翻滚样式  #menu li a.cur{background:#ff0000;color:#fff;} //高亮样式   #othermenu li a.normal{background:#fff;} //普通样式  #othermenu li a.over{background:#AA7F00;color:#fff;} //翻滚样式  #othermenu li a.cur{background:#7F0000;color:#fff;} //高亮样式

与一级菜单不同的是,我们将二级菜单中的链接地址加入两个参数值,pId参数指向的是顶部一级菜单的的序号,而sId则是菜单自己的顺序号。我们将这两个菜单的总容器ul都设置了两个不同中的ID,它们需要在js中调用,所以千万不能少。

【样式层】

关于样式,其实都没有什么特别的地方,你可以随心所意地设置成你想要的样式,只是需要注意的地方是,我们需要单独设置高亮Javascript菜单效果的三种状态样式,以供JS动态调用。

 #menu li a.normal{background:#fff;}//普通样式  #menu li a.over{background:#00ff00;} //翻滚样式  #menu li a.cur{background:#ff0000;color:#fff;} //高亮样式   #othermenu li a.normal{background:#fff;} //普通样式  #othermenu li a.over{background:#AA7F00;color:#fff;} //翻滚样式  #othermenu li a.cur{background:#7F0000;color:#fff;} //高亮样式

【行为层】

因为要在行为层中控制菜单的三种状态,所以对于A链接标签,我们就不使用hover伪类来达到菜单的三种动态行为了,我们可以用onmouseover、onmouseout和onclick来模仿伪类的三种行为,这样好便于js的动态调整。并且为了达到行为、样式和结构的三层分离,我们也不用在A标签的html中去加上动态的行为控制代码,这不是一种良好的制作习惯。因此我们需要在页面的加载函数上做点文章,这就需要使用到onload函数,当页面一加载完后就动态绑定a标签的三种行为状态。

在页面一加载完成后,我们首先获取当前的页面url字符串,再根据这个字符串和一二级菜单中的A标签的href地址进行对比,如果存在相同项,则高亮此菜单项的样式。

详细的注释说明我都在下面的函数中一一标注出来,在此就不一一细述了。关键函数代码如下

//根据URL地址的参数或字符串高亮当前菜单。  function hightLightMenu(firstMenuID,twoMenuID){      var strUrl,strHref,subNavs,strLast,strParentID,strSelfID,parentID,selfID,strID;              var Navs=document.getElementById(firstMenuID).getElementsByTagName("a");                         // 如果链接没有参数,或者URL链接中不存在我们要获取的参数,则返回数组中的序号      if(location.href.indexOf("?")==-1){      strUrl=location.href.substring(location.href.lastIndexOf("/")+1);//取得URL页面名称                 //一级菜单高亮                         for (var i = 0; i < Navs.length; i++) {                      //在IE6,IE7中strHref获得的是全路径,而在IE8和ff中获得的是页面名称,为了兼容,需要将它的字符串进行拆分             strHref=Navs[i].getAttribute("href").substring(Navs[i].getAttribute("href").lastIndexOf('/')+1);                            if(strUrl==strHref){                //高亮当前菜单项                                  addClass(Navs[i],"cur");                     }             else{//如果是其它项,则绑定鼠标两态事件                                       (function(i){                    var obj=Navs[i];                               addEventHandler(obj,"mouseover",function(){overMe(obj)});                    addEventHandler(obj,"mouseout",function(){outme(obj)});                })(i)                                    }                          }               //二级菜单高亮         if (document.getElementById(twoMenuID) != null) {//判断是否存在二级菜单                //有可能二级菜单不存在,如首页只有一级菜单,所以当菜单id存在时,则                      subNavs = document.getElementById("othermenu").getElementsByTagName('a');             for (var n = 0; n < subNavs.length; n++) {               hightlight(subNavs,n,0);//默认高亮***个菜单项                           }         }      }      else{         //如果url中带有参数的页面,则                 strLast = location.href.substring(location.href.indexOf("?")+1);            strParentID=strLast.substring(0,strLast.indexOf("&"));         strSelfID=strLast.substring(strLast.indexOf("&")+1);          parentID=strParentID.substring(strParentID.indexOf("=")+1);//获得***个参数,这是一级菜单的id         selfID=strSelfID.substring(strSelfID.indexOf("=")+1);//获得第二个参数,这是二级菜单的id            //一级菜单高亮           for (var i = 0; i < Navs.length; i++) {             hightlight(Navs,i,parentID);                                                                   }         //二级菜单高亮         if (document.getElementById(twoMenuID) != null) {//判断是否存在二级菜单                       subNavs = document.getElementById(twoMenuID).getElementsByTagName('a');             for (var n = 0; n < subNavs.length; n++) {                strID=selfID - 1;                          hightlight(subNavs,n,strID);                           }        }      }        }  //高亮函数  function hightlight(elementArray,inumber,curMenuIndex){      if (inumber == curMenuIndex) {              addClass(elementArray[inumber],"cur");//高亮当前菜单样式      }      else {         (function(inumber){             var obj = elementArray[inumber];             addEventHandler(obj, "mouseover", function(){overMe(obj)});//增加鼠标移上去时的事件             addEventHandler(obj, "mouseout", function(){outme(obj)});//增加鼠标移走时的事件         })(inumber)      }     }

经过如上一番设置,一个通用、兼容的高亮函数就诞生了,我们看看高亮Javascript菜单效果截图:

Javascript中怎么实现一个高亮菜单效果

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网html频道,感谢您对编程网的支持。

--结束END--

本文标题: Javascript中怎么实现一个高亮菜单效果

本文链接: https://lsjlt.com/news/69748.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Javascript中怎么实现一个高亮菜单效果
    Javascript中怎么实现一个高亮菜单效果,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。【结构层】一级菜单结构层:<...
    99+
    2024-04-02
  • css3中怎么实现一个下拉菜单效果
    css3中怎么实现一个下拉菜单效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先来看核心的HTML片断代码:<nav> &...
    99+
    2024-04-02
  • 怎么在vue中利用monaco实现一个代码高亮效果
    怎么在vue中利用monaco实现一个代码高亮效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。为什么要使用VueVue是一款友好的、多用途且高性能的JavaS...
    99+
    2023-06-06
  • javascript实现简单下拉菜单效果
    本文实例为大家分享了 javascript实现简单下拉菜单的具体代码,供大家参考,具体内容如下 效果: 思路:比较复杂的是样式的编写,首先是ul里面含有3个li,每个li...
    99+
    2022-11-13
    js 下拉菜单
  • 微信小程序中怎么实现一个下拉菜单效果
    这篇文章将为大家详细讲解有关微信小程序中怎么实现一个下拉菜单效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。//wcss     ...
    99+
    2024-04-02
  • CSS3中怎么创建一个动态菜单效果
    本篇文章为大家展示了CSS3中怎么创建一个动态菜单效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。第一步:编辑菜单的HTML代码  菜单包含三个列表项,分别取名为...
    99+
    2024-04-02
  • HTML+CSS+JavaScript实现下拉菜单效果
    本文实例为大家分享了HTML+CSS+JavaScript实现下拉菜单效果的具体代码,供大家参考,具体内容如下 实现思路: HTML 方面,导航栏的每个 <li> 元素里...
    99+
    2024-04-02
  • CSS3实现的漂亮Menu菜单效果代码分享
    这篇文章主要讲解了“CSS3实现的漂亮Menu菜单效果代码分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3实现的漂亮Menu菜单效果代码分享”吧!...
    99+
    2024-04-02
  • 怎么使用HTML+CSS+JavaScript实现下拉菜单效果
    今天小编给大家分享一下怎么使用HTML+CSS+JavaScript实现下拉菜单效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-07-02
  • 如何在Android中实现一个圆盘旋转菜单效果
    本文章向大家介绍如何在Android中实现一个圆盘旋转菜单效果的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Android是什么Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动...
    99+
    2023-05-30
    android
  • html5怎么实现菜单折纸效果
    本篇内容主要讲解“html5怎么实现菜单折纸效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么实现菜单折纸效果”吧!类似猎豹浏览器安装时的用户须知...
    99+
    2024-04-02
  • CSS3怎么实现菜单悬停效果
    这篇文章主要讲解了“CSS3怎么实现菜单悬停效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3怎么实现菜单悬停效果”吧!实现效果:html<nav id="...
    99+
    2023-06-08
  • jquery怎么实现简单下拉菜单效果
    本文小编为大家详细介绍“jquery怎么实现简单下拉菜单效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“jquery怎么实现简单下拉菜单效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。看效果html<...
    99+
    2023-06-30
  • VB.NET中怎么实现一个菜单组件
    VB.NET中怎么实现一个菜单组件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Windows应用程序中往往离不开菜单,菜单的应用是十分普遍了,并且菜单的设计是十分简单的,这主...
    99+
    2023-06-17
  • JavaScript模拟实现新浪下拉菜单效果
    思考:首先在CSS布局上就出错了,导致后面设置JS时就有很大的问题 <!DOCTYPE html> <html lang="en"> <head&...
    99+
    2024-04-02
  • CSS中怎么实现二级弹出菜单效果
    这篇文章将为大家详细讲解有关CSS中怎么实现二级弹出菜单效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体代码如下:<!DOCTYPE ...
    99+
    2024-04-02
  • CSS怎么实现一个简单的Loading效果
    在前端开发中,Loading是一个非常常见的功能。当网页数据加载时,我们希望能够在用户等待的同时,给其一个视觉上的反馈,来增强用户体验。在这篇文章中,我们将通过CSS来实现一个简单的Loading效果。1.使用Animation动画实现Lo...
    99+
    2023-05-14
  • 使用JavaScript怎么实现一个弹框效果
    本篇文章为大家展示了使用JavaScript怎么实现一个弹框效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。利用display来控制弹窗的现实和隐藏<!-- 弹出层 --...
    99+
    2023-06-14
  • 使用JavaScript怎么实现一个日历效果
    这篇文章给大家介绍使用JavaScript怎么实现一个日历效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用...
    99+
    2023-06-07
  • 怎么用CSS实现中英文双语菜单效果
    这篇文章主要讲解了“怎么用CSS实现中英文双语菜单效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用CSS实现中英文双语菜单效果”吧!这是一款你一定喜...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作