菜单高亮显示的几种情况及实现

前段时间遇到了一个需求:访问页面时,跟该页面相关的Menu要求保持高亮。
因为是第一次遇到这个问题,在处理的时候走了不少弯路,后来在网络上搜索了一下,发现菜单高亮显示有几种不同层次的需求。
在下不才,在此将这几种需求以及各自的解决方案列出来,以作抛砖引玉之用,也希望后来遇到这种问题、并且看到我的帖子的朋友能从中获益。
代码是从项目中抽出来稍加修改而来,也许有的地方不够完善,大家一起探讨!

1、当鼠标移入后,菜单显示成高亮;移出后恢复
2、在1的基础上,单击某个菜单项,该项保持高亮(页面不刷新)
3、在1的基础上,单击某个菜单项,该项保持高亮(页面刷新)
4、当鼠标移入后,改变菜单的背景图片,与1效果类似

1、这是最基本的一步,基本上要求菜单高亮显示的,这个需求会同时存在;这里我们用CSS来解决这个需求;

    提示:您可以先修改部分代码再运行
2、好,现在可以看到,第一点需求所要求的效果已经达到了,下面我们来实现第二个需求;这个就需要JS来实现了,简单一点,加入一段JavaScript
  【注:这是引用的会员yangedie回答会员copier的方法,地址 http://bbs.blueidea.com/thread-2863419-1-1.html 】

    提示:您可以先修改部分代码再运行
3、OK,上面的页面不刷新的情况,一旦页面刷新,效果就没有了,这时候怎么办呢?没关系,我们尝试另外一段JS代码来达到这个效果,虽然代码有点长:
  【这段代码也是我在网上搜索而来,但是对其中一些代码片段不敢苟同,因此做了修改;而且这段JS的扩展性不够好,每次使用都必须根据实际情况进行修改】
  【这段代码只是做个示范,运行的话应该不会出现效果,实际的网站例子在5那边有链接】

    提示:您可以先修改部分代码再运行
上面新添加的JS,会根据你访问的不一样的URL,分别使对应的菜单获得style修饰,因此必须根据你的实际情况进行修改

4、鼠标移入更改背景图片,其实跟上面的都不太一样,只不过有一些相似之处,也放到这里吧

    提示:您可以先修改部分代码再运行
5、最后,如果你需要使菜单横向排列的话,在CSS里加入这一行
  li {float:left;list-style-type: none;padding:0px;}
posted @ 2008-12-09 10:58  zzh  阅读(736)  评论(0编辑  收藏  举报