全兼容可高亮二级缓冲折叠菜单

最近在项目中制作的一个菜单实例整理出来,和大家共享一下。

在后台或OA系统中最常用到的布局往往是一个全屏布局,一般都是上中下三行两列布局,页头、页脚、左侧菜单加一个右侧ifame框架页。所以那种带折叠的二级菜单是会经常使用到的,本例便是实现这样一种比较通用的全兼容可高亮二级缓冲折叠菜单。

特点:

1、全兼容,浏览器测试:IE5.5、IE6、IE7、IE8、FF3.0、谷歌、Safari 4.0、Opera9.0。

2、Html结构优雅简洁,无多余标签,利于程序循环输出。

3、样式与结构分离,你可以在样式表中修改不同的风格。

4、当前选中项高亮状态,一级菜单和二级菜单都可以高亮显示。

5、折叠层优雅缓冲动画。

6、最适用于后台和一些OA系统界面。

缺点:

1、不支持防刷新,这个功能在后台应用系统中应该用途不大,没有加入这个功能。

2、在IE6中缓冲效果没有出来,对于IE6,就弱化一下效果。

还是先看看效果截图:

图一

简单说一下制作这样的菜单的一些简单的思路和会遇到的问题。

一般制作一个效果,我的制作流程一般是先画出HTML结构层内容,再写样式,之后是搞一些锦上添花的效果,如JS特效等等。不知各位大牛们是怎样一个流程模式。

结构层:

结构层的构思一般是建立在一个感性认识上的,一般是有一个效果图,根据这个效果图构建最简洁的HTML结构。如上图所示,映入眼帘的第一印象,首先是想到用一个UL的无序列表,但是…这是一个二级嵌套的列表,这是我们首先需要考虑的问题。

因此结构应该是下面这样子:


以下为引用的内容:

<li><a href="#none">一级菜单项</a>
 <ul>
  <li><a href="#none">二级菜单项</a></li>         
 </ul>
</li>

在有二级菜单时是一个嵌套的UL结构,无二级菜单时则是如下:


以下为引用的内容:

<ul class="menu">
 <li><a href="#none">一级菜单项</a></li>
</ul>

当然,你也可以采用dl-dt-dd有序列表的方式来创建这种嵌套的结构,视你的实际情况而定。

有了最原始的结构层,你就需要添加一些必要的钩子,用于CSS和JS控制样式和效果,我一直反对那种添加很多类名的写法,这会增加页面的体积,所以最精简的作法是应用一两个必要的类名给父容器即可,然后在样式表中用子(群)选择符设置各种个性的设置。在上面的结构,你会想到用几个类名来定义所有的样式呢?

我的做法是只用三个类名即可以控制全部的样式显示了。一个是最顶级UL,定义为class=”menu”,一个是二级菜单的容器,也就是嵌套的UL定义一个class=”level2”,最后是一级菜单项li定义一个class=”level1”,有了这三个钩子,你就可以操纵整个结构的样式了。

表现层:

样式表的设置都很简单,唯一要注意的是,为了便于JS控制二级菜单的显隐和记录当前选中项的高亮状态,所以我不用hover伪类来实现鼠标的滑入滑出效果,而采用JS来模拟它。用JS控制样式的关键代码如下:

一级菜单样式


以下为引用的内容:

 /*一级菜单三态样式,供JS调用*/
 .menu li.level1 a{display:block;line-height:31px;height:31px;padding-left:50px; font-size:12px;color:#fff;background:url(../images/menubg.gif) no-repeat left top;}
 .menu li.level1 a.hove{background-position:left -31px;}
 .menu li.level1 a.cur{background-position:left -62px;}

二级菜单样式


以下为引用的内容:

 /*二级菜单三态样式,供JS调用*/
 .menu li.level1 a{display:block;line-height:31px;height:31px;padding-left:50px; font-size:12px;color:#fff;background:url(../images/menubg.gif) no-repeat left top;}
 .menu li.level1 a.hove{background-position:left -31px;}
 .menu li.level1 a.cur{background-position:left -62px;}

行为层:

因为前面已经提到,我们在样式表并没有定义菜单的三态效果,所以我们需要给每个菜单项绑定onmouseover、onmouseout和onclick事件模拟出这种效果来。在结构层中我们并没有定义这个总容器的ID,而只定义了一个class类名,所以在JS添加了一个扩展的getElementsByClassName()方法(感谢好友司徒正美),根据类名来获得这个对象。用循环闭包来绑定这三个事件。

详细代码就不一一解说了,Demo中注释得非常清楚,请下载到本机浏览。

有什么问题请在本博客中跟贴讨论,祝你用得开心!

最后附上全部源码:demo下载

时间: 2024-10-30 21:32:00

全兼容可高亮二级缓冲折叠菜单的相关文章

js 全兼容可高亮二级缓冲折叠菜单_导航菜单

在后台或OA系统中最常用到的布局往往是一个全屏布局,一般都是上中下三行两列布局,页头.页脚.左侧菜单加一个右侧ifame框架页.所以那种带折叠的二级菜单是会经常使用到的,本例便是实现这样一种比较通用的全兼容可高亮二级缓冲折叠菜单. 特点: 全兼容,浏览器测试:IE5.5.IE6.IE7.IE8.FF3.0.谷歌.Safari 4.0.Opera9.0. Html结构优雅简洁,无多余标签,利于程序循环输出. 样式与结构分离,你可以在样式表中修改不同的风格. 当前选中项高亮状态,一级菜单和二级菜单都

兼容多浏览器 高亮带缓冲的二级折叠菜单效果

全兼容可高亮带缓冲的二级折叠菜单 管理首页 用户管理 用户列表 用户购卡申请 用户课程变更情况 课程管理 课程列表 添加课程 添加模块或单元 修改模块或单元 基础数据管理 学科管理 系列管理 学段管理 年份管理 课程评论管理 信息管理 同步动态 常见问题 站内消息管理 数据统计 总体统计 课程销售统计 课程学习统计 课程按日期等统计 课程按小时统计

js二级折叠菜单能够兼容多款浏览器

<!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> <title>兼容可高亮带缓冲的二级折叠菜单</t

js实现带缓冲效果的仿QQ面板折叠菜单代码_javascript技巧

本文实例讲述了js实现带缓冲效果的仿QQ面板折叠菜单代码.分享给大家供大家参考.具体如下: 带缓冲效果的仿QQ面板折叠菜单代码,使用方法:调用效果: Effect(1,2); 其中1为: 被改变对象的id 其中2为: 控制容器的id 可在使用: this.parentNode.id 取得(父标签的id) 注意给对象ID的时候一定不要重复. 运行效果如下图所示: 在线演示地址如下: http://demo.jb51.net/js/2015/js-buffer-style-qq-menu-codes

jQuery实现有动画淡出效果的二级折叠菜单代码_jquery

本文实例讲述了jQuery实现有动画淡出效果的二级折叠菜单代码.分享给大家供大家参考,具体如下: 这里介绍jQuery实现有动画淡出效果的二级折叠菜单代码,相当不错,因考虑功能的实现,所以没有怎么美化,不过这样也好,可以给大家更多的空间来修饰美化,想怎么弄就怎么弄了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-dh-flash-fade-in-out-2-menu-demo/ 具体代码如下: <!DOCTYPE html PU

JSON无限折叠菜单编写

   最近看了一篇关于JSON无限折叠菜单的文章 感觉写的不错,也研究了下代码,所以用自己编码方式也做了个demo 其实这样的菜单项在我们网站上或者项目导航菜单项很常见的一种效果,特别是在一些电子商务网上上左侧有分类是很常见的 或者说导航菜单有下拉效果也是很常见的,但是他们都是做死的 也就是页面上代码直接写死的 然后实现那种下拉效果 而今天我们是通过JSON格式来自动生成的,或者可以说 要做这种折叠菜单效果 只需要开发人员提供我们前端开发这种JSON格式或者我们前端可以定这样的格式也就ok了 其

JSON无限折叠菜单编写实例

 这篇文章主要介绍了JSON无限折叠菜单编写实例,有需要的朋友可以参考一下 最近看了一篇关于JSON无限折叠菜单的文章 感觉写的不错,也研究了下代码,所以用自己编码方式也做了个demo 其实这样的菜单项在我们网站上或者项目导航菜单项很常见的一种效果,特别是在一些电子商务网上上左侧有分类是很常见的 或者说导航菜单有下拉效果也是很常见的,但是他们都是做死的 也就是页面上代码直接写死的 然后实现那种下拉效果 而今天我们是通过JSON格式来自动生成的,或者可以说 要做这种折叠菜单效果 只需要开发人员提供

bootstrap-关于jquery制作折叠菜单的问题

问题描述 关于jquery制作折叠菜单的问题 highcharts的官网的折叠菜单模块,打开关闭列表影响底部模块,好像使用了bootstrap,请教其中原理! http://www.highcharts.com 解决方案 这是我项目中控制菜单: html: 系统管理 菜单管理查询 权限管理 角色管理 角色配置权限管理 用户及权限配置新增 用户及权限配置查看 解决方案二: 楼上 肯定不是用css控制 css做出来的没有动画效果 体验很差 我来说说我的思路 如果不借助任何插件的话 我会选用jquer

jquery实现向下滑出的二级导航下滑菜单效果_jquery

本文实例讲述了jquery实现向下滑出的二级导航下滑菜单效果.分享给大家供大家参考.具体如下: 这是一款由jQuery配合JavaScript来共同实现的网页上的下滑菜单特效,带颜色的是一级主菜单,点击后会展开向上滑出二级的子菜单,再次点击主菜单,会合拢子菜单,就菜单所能展现的功能来说,适用于企业网站产品分类.新闻类文章栏目导航等,目前本款菜单支持两级,有兴趣的可自己扩展更多级的菜单. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery