0

我正在使用网站上的导航设计 - CSSDECK

我做了一些修改,是我的代码。

疑问:

  1. 为什么#siteNav#siteNav ul不是环绕lis。我height:auto#siteNav和中使用过#siteNav ul。我所知道的是auto意味着浏览器会相应地决定高度。但这并没有发生。为什么?
  2. 如果我overflow:auto or hidden在任何一个#siteNav#siteNav ul. 然后该块将自身包裹在lis 周围。为什么overflow要这样做?
4

3 回答 3

2

这是因为你li的 s 是浮动的。如果没有s overflow: hidden;,则lis 与 s 处于不同的上下文中ul,因此sul不会环绕它们。

overflow: hidden;是一种通用的、已知的容器调整大小以适应其floated 内容的修复方法,但还有其他方法 - 如需广泛参考,请参阅此.

于 2012-09-28T16:23:10.647 回答
0

只适用overflow: hidden;于你的 #siteNav ul

 #siteNav ul {
overflow: hidden;
}

因为您在使用溢出时建立了一个新的块格式化上下文,然后可见(链接到w3.org 规范)。作者:ChristopheD

读这个

于 2012-09-28T16:24:42.363 回答
0

这是因为 lis 是浮动的。任何包含浮动元素的包装器都不会包装内容,除非溢出:隐藏应用于包装器。这是浮动元素的常见浏览器问题。此外,overflow:hidden 并不能在所有浏览器中解决此问题。搜索“clearfix”以查看针对此问题的跨浏览器修复。

顺便说一句,您不需要 height:auto ,块元素默认具有宽度和高度自动。如果里面没有浮动元素,那么您会看到预期的行为。

于 2012-09-28T16:32:53.060 回答