2011-11-29 102 views
1

我有一个网站,其导航栏由div元素制成。HTML 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(); 
    }); 

(Cre DIT指出:我发现了jQuery here

我试图玩弄的CSS的headerdiv #nav元素position性能,但它并没有多大帮助。

问题发生在Firefox,Chrome和IE浏览器中。

任何好点子?

+0

http://jsfiddle.net/4fND9/ –

+0

你使用DOCTYPE和验证你的HTML? –

回答

2

#nav删除position: absolute并添加overflow: hidden。如果我正确理解你的问题,它应该解决它。

http://jsfiddle.net/Pcth2/

1

你的形象标签错误

变化<img src="imgs\coolPic.jpg />" to <img src="imgs\coolPic.jpg" />

看看这个http://jsfiddle.net/4fND9/1/

+0

+1整洁的网站!但是,唉,似乎没有解决问题... –