我的网站包含使用div
元素制作的导航栏。
出于某种原因,导航栏显示外部包含div。
此外,它表现为内嵌,即它不会在包含div的宽度上展开,而是在它包含的最后一个元素之后的右边结束。任何后续元素将立即显示在其右侧,在同一行。
HTML:
<body>
<header>
<img src="imgs\coolPic.jpg />"
<div id="nav">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Foobar</a>
<ul class="submenu">
<li><a href="#">Foo</a></li>
<li><a href="#">Bar</a></li>
</ul>
</li>
<li><a href="#">Lorem Ipsum</a>
<ul class="submenu">
<li><a href="#">Lorem</a></li>
<li><a href="#">Ipsum</a></li>
</ul>
</li>
<li><a href="#">FAQ</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</header>
...more body stuff...
</body>
CSS:
header {
background-color: #cccccc;
}
#nav {
background-color: #cccccc;
border-bottom: 2px solid #000000;
position: absolute;
}
#nav ul li {
float:left;
display:block;
}
#nav ul li a:link,
#nav ul li a:visited
{
display:block;
padding: 8px 12px;
background-color: #cccccc;
text-decoration: none;
color: #111111;
}
#nav ul li a:hover {
background-color: #111111;
color: #cccccc;
}
#nav ul li ul li{
float:none;
display:block;
}
#nav ul li ul li a:link,
#nav ul li ul li a:visited{
color:#444;
font-size:11px;
font-weight:bold;
text-decoration:none;
padding:0 10px;
clear:both;
border-bottom:solid 1px #DEDEDE;
}
#nav ul li ul li a:hover{
color:#3B5998;
}
.submenu {
position: absolute;
width: 160px;
padding: 10px;
border: solid 1px #2E4B88;
border-top: none;
display: none;
line-height: 26px;
z-index: 1000;
}
...如果您想知道,这是使导航栏正常工作的jquery:
function nav(){
$('div#nav ul li').mouseover(function() {
$(this).find('ul:first').show();
});
$('div#nav ul li').mouseleave(function() {
$('div#nav ul li ul').hide();
});
$('div#nav ul li ul').mouseleave(function() {
$('div#nav ul li ul').hide();;
});
};
$(document).ready(function() {
nav();
});
(信用说明:我找到了jquery here。)
我尝试使用position
和header
元素的CSS div #nav
属性,但它没有多大帮助。
问题出现在Firefox,Chrome和IE等。
有什么好主意吗?
答案 0 :(得分:2)
从position: absolute
移除#nav
并添加overflow: hidden
。如果我理解你的问题,就应该解决它。
答案 1 :(得分:1)
您的图片代码错误
更改<img src="imgs\coolPic.jpg />" to <img src="imgs\coolPic.jpg" />