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

来源:http://www.chinese-glasses.com 作者:Web前端 人气:156 发布时间:2020-04-15
摘要:ul lia href=""二级菜单_11/a/li lia href=""二级菜单_12/a/li/ul 在有二级菜单时是一个嵌套的UL结构,无二级菜单时则是如下: 复制代码 代码如下: 我们在各游览器看一下,感觉非常乏力。IE6与
ul lia href=""二级菜单_11/a/li lia href=""二级菜单_12/a/li/ul

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

我们在各游览器看一下,感觉非常乏力。IE6与Opera10的二级菜单项是垂直的,但我们并没有清除浮动啊?firefox3.5与chrome与safari4的二级菜单项是水平分布了,但上面好像多出一个菜单项……IE8同学这次反而是表现得最好的。我没有装IE7,所以一向忽略它。

div  ul li a href=""菜单一 /a ul lia href=""二级菜单_11/a/li lia href=""二级菜单_12/a/li /ul /li li a href=""菜单二/a ul lia href=""二级菜单_21/a/li lia href=""二级菜单_22/a/li /ul /li li //***************略************ /li li //***************略************ /li /ul/div
.menu li span { display:none; position:absolute; left:0; top:40px;/*修改这里*/ width:200px; height:150px; background:#B9D6FF;}

一级菜单项

发现二级菜单在firefox与safari与chrome中没有反应,弹不出来(这三个浏览器的CSS部分互相抄袭严重啊)。opera10表现得最好,IE8其次。不过,标准浏览器的所有元素都支持hover伪类,不像IE6,非带href的a元素不可。我们改写部分CSS代码:

在后台或OA系统中最常用到的布局往往是一个全屏布局,一般都是上中下三行两列布局,页头、页脚、左侧菜单加一个右侧ifame框架页。所以那种带折叠的二级菜单是会经常使用到的,本例便是实现这样一种比较通用的全兼容可高亮二级缓冲折叠菜单。 特点: 全兼容,浏览器测试:IE5.5、IE6、IE7、IE8、FF3.0、谷歌、Safari 4.0、Opera9.0。 Html结构优雅简洁,无多余标签,利于程序循环输出。 样式与结构分离,你可以在样式表中修改不同的风格。 当前选中项高亮状态,一级菜单和二级菜单都可以高亮显示。 折叠层优雅缓冲动画。 最适用于后台和一些OA系统界面。 缺点: 不支持防刷新,这个功能在后台应用系统中应该用途不大,没有加入这个功能。 在IE6中缓冲效果没有出来,对于IE6,就弱化一下效果。 还是先看看效果截图: 简单说一下制作这样的菜单的一些简单的思路和会遇到的问题。 一般制作一个效果,我的制作流程一般是先画出HTML结构层内容,再写样式,之后是搞一些锦上添花的效果,如JS特效等等。不知各位大牛们是怎样一个流程模式。 结构层: 结构层的构思一般是建立在一个感性认识上的,一般是有一个效果图,根据这个效果图构建最简洁的HTML结构。如上图所示,映入眼帘的第一印象,首先是想到用一个UL的无序列表,但是…这是一个二级嵌套的列表,这是我们首先需要考虑的问题。 因此结构应该是下面这样子: 复制代码 代码如下:

ul  li a href="" 菜单一!--小图--span!--大图--/span /a /li li a href="" 菜单二!--小图--span!--大图--/span /a /li li a href="" 菜单三!--小图--span!--大图--/span /a /li li  a href="" 菜单四!--小图--span!--大图--/span /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:#10bet,fff;background:url 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 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中注释得非常清楚,请下载到本机浏览。 有什么问题请在本博客中跟贴讨论,祝你用得开心! 在线演示地址 http://demo.jb51.net/js/caidan_js/demo.html打包下载地址 //www.jb51.net/jiaoben/27308.html

这是一个相当炫的功能,让网页看起来像桌面程序,如window的开始菜单。实现原理基本和纯CSS相册差不多,但要注意的事项比较多,让我们一步步来吧。

好了,现在我们真正做二级菜单,把有关span的CSS全删掉,并在结构层原span的位置改为如下代码:

二级菜单能弹出来了,但那个神秘的li元素也现形了。我用双重浮动的收缩包围(shrink-wrapping)现象都无法消除这个神秘的li元素。参考外国的代码,方法是,把整个子菜单放到a元素的外面,然后用li:hover控制样式的切换。于是结构层改写如下:

本文由10bet发布于Web前端,转载请注明出处:js 全兼容可高亮二级缓冲折叠菜单_导航菜单_脚本

关键词:

上一篇:HTML 全局属性,html全局属性

下一篇:没有了

最火资讯