嗨专家,
我有一个要求,我必须创建一个悬停菜单,该菜单最多扩展为3 个级别,因为IE8,
我的意思是,当您将鼠标悬停在第一级时,第一级是顶层,您将看到第二级,再次悬停在第二级时,您会看到第 3 级。
因为我以前没有做过这样的事情,而且我对 CSS 也不是很好,所以我编写了一个非常基本的代码,其中有 2 个主要问题,我希望各位专家研究一下。
1.在顶层导航中,当我将鼠标悬停在最后一个选项卡上时,第二级悬停菜单的某些部分会浮出窗口,在页面上创建水平滚动。更进一步,当我将鼠标悬停在第 2 层上时,我看不到第 3 层,因为它太向前浮动,从而产生更大的水平滚动。请参考图片 1.jpg。
2.我在 2 级和 3 级菜单中的一些链接浮动在 UL 标记的边框之外。请参考图片2.jpg
这是我的JSP :--
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" >
<%@ taglib uri="NavigationTagLibrary" prefix="nav"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script type="text/javascript">
TLNHover = function(){
alert('inside TLNHover 2 nowrap style added');
if (!document.all) return; // continue only for IE
var cssRule;
var newSelector;
for (var i = 0; i < document.styleSheets.length; i++){
for (var j = 0; j < document.styleSheets[i].rules.length ; j++){
cssRule = document.styleSheets[i].rules[j];
if (cssRule.selectorText.indexOf("LI:hover") >= 0){
newSelector = cssRule.selectorText.replace(/LI:hover/gi, "LI.iehover");
document.styleSheets[i].addRule(newSelector , cssRule.style.cssText);
}
}
}
var getElm = document.getElementById("navigation").getElementsByTagName("LI");
for (var i=0; i<getElm.length; i++) {
getElm[i].onmouseover=function() { this.className+=" iehover"; }
getElm[i].onmouseout=function() { this.className=this.className.replace(new RegExp(" iehover\\b"), ""); }
}// end of for
}// end of functionn TLNHover
if(window.attachEvent) window.attachEvent("onload", TLNHover);
</script>
</head>
<body>
<%-- this is the main navigation section --%>
<div id="hoverNav" style="background-color:#ffffff;height:30px;">
<ul id="navigation">
<%-- iterate level 1 navigation nodes --%>
<nav:iterateInitialNavNodes>
<li class="header"><a class="headanchor">
<nav:navNodeAnchor navigationMethod="byURL" anchorAttributes="style='text-decoration: none;color:#000;font-weight: bold;'" />
</a>
<%-- check child nodes --%>
<nav:ifNavNodeHasChildren>
<ul class="sub">
<%-- iterate level 2 --%>
<nav:iterateNavNodeChildren>
<%-- check child nodes level 3--%>
<nav:ifNavNodeHasChildren>
<li >
<a class="fly" ><nav:navNodeAnchor navigationMethod="byURL"/>
</a>
<ul >
<%-- iterate child nodes level 3--%>
<nav:iterateNavNodeChildren>
<li>
<a>
<nav:navNodeAnchor navigationMethod="byURL" />
</a>
</li>
</nav:iterateNavNodeChildren>
</ul>
</li>
</nav:ifNavNodeHasChildren>
<nav:ifNotNavNodeHasChildren>
<li >
<a>
<nav:navNodeAnchor navigationMethod="byURL"/>
</a>
</li>
</nav:ifNotNavNodeHasChildren>
</nav:iterateNavNodeChildren>
</ul>
</nav:ifNavNodeHasChildren>
</li>
<b> </b>
</nav:iterateInitialNavNodes>
</ul>
</div>
</body>
<script type="text/javascript"> TLNHover; </script>
</html>
这是我的CSS :--
/* “导航”是id
第一级 UL
标签 */
#navigation {z-index:100;background-color:#ffffff;position: absolute; list-style:none;margin-left:5px;-moz-margin-start:0px;padding-left=2px;margin-top:5px;}
#navigation li.header{width:5em;padding-left: 10px;padding-right: 10px;margin-right:2px;white-space: nowrap; border:1px solid #ffffff; background-color:#E0E0E0;display: -moz-inline-stack; display: inline-block; float:left;height:25px;text-decoration:none;font-family:Arial;font-style:normal;font-size:13px;font-color:#000000;}
#navigation li.header a.headanchor{text-decoration: none; height: 20px;position: absolute;font-color:#000000; }
#navigation li:hover a.headanchor{text-decoration:none;position: absolute;font-color:#ffffff;}
#navigation li:hover {position:relative;z-index:100;font-weight: bold;font-color:#ffffff;}
#navigation li:hover ul.sub {width: 15em;}
#navigation li:hover ul.sub {left:0px; right:1px; top:23px; background: #E0E0E0; z-index:300;border:1px solid #5c731e;height:auto;}
#navigation li:hover ul.sub li:hover {padding: 0;}
#navigation li:hover ul.sub li {left:10px;right:5px;background: #E0E0E0;font: 0.5em Arial; color:#000000; font-size: 1em; position:relative;width:10em;height: 25px;}
#navigation li:hover ul.sub li a{position: absolute;z-index:200; font: 0.4em Arial; text-decoration:none;color:#000000; font-size: 1em;width: 15em;}
#navigation li:hover ul.sub li a:hover {width:15em}
#navigation li:hover ul.sub li a:hover {position:relative;height:auto;}
#navigation li:hover ul.sub li a.fly:hover {width:15em}
#navigation li:hover ul.sub li a.fly:hover{position:relative;z-index:300;color:#ffffff;height:auto;}
#navigation li:hover li:hover ul {left:100 px; top:12px;bottom: 2px; background: #E0E0E0; border:1px solid #5c731e;display: block; width:15em;position:absolute; z-index:400; text-decoration:none;height:auto;}
#navigation li:hover li:hover ul li {padding: 0;}
#navigation li:hover li:hover ul li a {display: inline-block; padding: 0; }
#navigation ul {position:absolute; left:-9999px; top:-9999px; width:0; height:0; margin:0; padding:0; list-style:none;text-decoration:none;height:auto;display: block;border:1px solid #5c731e;}
在此先感谢, 最好的问候, Abhijt