关于相对定位position:relative 定位存在浏览器兼容性问题,IE6是否存在该问题的bug呢?请教高手!谢谢!

asimplefire 2009-05-11 12:47:41
想做一个主菜单导航,当鼠标放上去时,可以出现下级菜单,部分代码如下:

<ul>
<li class="licell" id="menu2" onmouseover="changeMenubg(this);" onmouseout="backMenubg(this);">首页
</li>
<li class="liline"></li>
<li class="licell" id="menu1" onmouseover="changeMenubg(this);showSubmenu(this)" onmouseout="backMenubg(this);hiddenSubmenu(this)">关于非点
<ul class="submenu_ul" id="submenu1" style="position:relative;top:4px;left:0px;visibility:hidden;";onmouseover="this.style.visibility='visible'" >
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">非点简介</li>
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">非点特色</li>
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">非点精英</li>
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">核心目标</li>
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">设计观点</li>
</ul>
</li>
<li class="liline"></li>
<li class="licell" id="menu3" onmouseover="changeMenubg(this);showSubmenu(this)" onmouseout="backMenubg(this);hiddenSubmenu(this)">创意设计

<ul class="submenu_ul" id="submenu3" style="position:relative;top:4px;left:0px;visibility:hidden;";onmouseover="this.style.visibility='visible'" >
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">LOGO设计</li>
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">广告设计</li>
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">POP设计 </li>
<li class="submenu_li" onmousemove="this.className='on_submenu_li'" onmouseout="this.className='submenu_li'">海报设计 </li>
</ul>
</li>
<li class="liline"></li>
......

</ul>

思路很简单,下一级菜单用<ul>装好,然后做一下css修饰.默认该ul标签是隐藏的,当鼠标入上去的时候,再通过onmouseover事件让它再显示,离开则再隐藏.
现在碰到了一个浏览器的兼容性的问题,在IE7与FF下都通过了测试,显示正常,只是有在IE6的就会撑开下面的div块.如下图所示:
导航为:
在IE6下显示下一级菜单(撑开了下面元素位置):
在IE7与FF下显示下一级菜单:
针对于这一个问题,我对ul的定位采用position:absolute的定位,这种定位是可以解决,但是不太好,还是存在其它问题的.
现在只是想用position:relative相对定位,不知道如何解决!我也尝试用z-index来解决,但学是解决不了.
在此请教各们html+css高手,谢谢!
...全文
2838 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
snow__ice 2009-05-12
  • 打赏
  • 举报
回复
二级菜单用absolute试试看。

将一级菜单的<li>设成relative。他的下一级设为absolute。应该是可以的。。。。

mike_24 2009-05-12
  • 打赏
  • 举报
回复
参考下面的,或者只是做修改成你需要的效果:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript下拉菜单</title>
<style type="text/css">
* {
padding:0;
margin:0;
}
body {
font-family:verdana, sans-serif;
font-size:small;
}
#navigation, #navigation li ul {
list-style-type:none;
}
#navigation {
margin:20px;
}
#navigation li {
float:left;
text-align:center;
position:relative;
}
#navigation li a:link, #navigation li a:visited {
display:block;
text-decoration:none;
color:#000;
width:120px;
height:40px;
line-height:40px;
border:1px solid #fff;
border-width:1px 1px 0 0;
background:#c5dbf2;
padding-left:10px;
}
#navigation li a:hover {
color:#fff;
background:#2687eb;
}
#navigation li ul li a:hover {
color:#fff;
background:#6b839c;
}
#navigation li ul {
display:none;
position:absolute;
top:40px;
left:0;
margin-top:1px;
width:120px;
}
#navigation li ul li ul {
display:none;
position:absolute;
top:0px;
left:130px;
margin-top:0;
margin-left:1px;
width:120px;
}
</style>
<!--兼容IE6、IE7和FF-->
<script type="text/javascript">
function displaySubMenu(li) {
var subMenu = li.getElementsByTagName("ul")[0];
subMenu.style.display = "block";
}
function hideSubMenu(li) {
var subMenu = li.getElementsByTagName("ul")[0];
subMenu.style.display = "none";
}
</script>
</head>
<body>
<ul id="navigation">
<li onmouseover="displaySubMenu(this)" onmouseout="hideSubMenu(this)">
<a href="#">栏目1</a>
<ul>
<li><a href="#">栏目1->菜单1</a></li>
<li><a href="#">栏目1->菜单2</a></li>
<li><a href="#">栏目1->菜单3</a></li>
<li><a href="#">栏目1->菜单4</a></li>
</ul>
</li>
<li onmouseover="displaySubMenu(this)" onmouseout="hideSubMenu(this)">
<a href="#">栏目2</a>
<ul>
<li><a href="#">栏目2->菜单1</a></li>
<li><a href="#">栏目2->菜单2</a></li>
<li><a href="#">栏目2->菜单3</a></li>
<li><a href="#">栏目2->菜单4</a></li>
<li><a href="#">栏目2->菜单5</a></li>
</ul>
</li>
<li onmouseover="displaySubMenu(this)" onmouseout="hideSubMenu(this)">
<a href="#">栏目3</a>
<ul>
<li onmouseover="displaySubMenu(this)" onmouseout="hideSubMenu(this)">
<a href="#">栏目3->菜单1</a>
<ul>
<li><a href="#">菜单1->子菜单1</a></li>
<li><a href="#">菜单1->子菜单2</a></li>
<li><a href="#">菜单1->子菜单3</a></li>
<li><a href="#">菜单1->子菜单4</a></li>
</ul>
</li>
<li><a href="#">栏目3->菜单2</a></li>
<li onmouseover="displaySubMenu(this)" onmouseout="hideSubMenu(this)">
<a href="#">栏目3->菜单3</a>
<ul>
<li><a href="#">菜单3->子菜单1</a></li>
<li><a href="#">菜单3->子菜单2</a></li>
<li><a href="#">菜单3->子菜单3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>
飘零雾雨 2009-05-11
  • 打赏
  • 举报
回复
asimplefire 2009-05-11
  • 打赏
  • 举报
回复
不好意思,贴错了点,IE7与FF正常!

在IE7与FF下显示下一级菜单:
asimplefire 2009-05-11
  • 打赏
  • 举报
回复
我没有设z-index,因为好象没有用似的.IE6还是不行呀
tobeno2 2009-05-11
  • 打赏
  • 举报
回复
试试 _position:fixed
z-index设了?
也有可能你的相对定位所相对元素设置得不太好,把距离最近的那个元素先设置为绝对定位,然后再设置相对定位。
xiaojing7 2009-05-11
  • 打赏
  • 举报
回复
div 层

z-index

61,112

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧