我问这个是为了学习目的;这种行为没有任何负面影响,但我只是想知道这是否会在未来产生任何负面影响。
所以我有一个容器 div:content_wrap
,它还有另外两个 div:side_bar
和 main_content
。容器 div 的宽度为 980px
,用于使用 margin-left
和 margin-right
将其内容居中。
它正确地执行了此操作,但是,当我调试页面(在 Firefox 中)时,我注意到浏览器将 div 呈现为 0x0px
并将父 div 呈现在屏幕外。但是,它确实正确定位了子 div。有关示例,请参阅此 JSFiddle:http://jsfiddle.net/7fsXp/7/
我用 Google 搜索了这个,大部分答案都与 floats
有关,并通过使用 clear:both
解决,但我没有使用任何 float 。我确实注意到,如果我将 main_content
div 从 position:absolute;
更改为 position:relative;
,content_wrap
正确显示。或者我可以通过为 content_wrap
设置一个 height
来修复它。
我实际上不需要能够看到 content_wrap,所以这并不是真正的问题,因为它正在以将子 div 居中的方式完成它的工作。我只是想知道这样离开它是否是一种不好的做法?这是一件坏事,还是重要?
最佳答案
尝试向此 HTML 中添加其他元素并享受恐怖 :D
您的代码中实际上有很多我不会做的事情。首先,当一个元素具有 position: absolute
或 position: fixed
时,它的布局被其他元素“忽略”,换句话说不能“推”任何元素并且这就是为什么您的容器高度为 0 的原因。就像它们是空灵的(我知道这是有史以来最好的解释)。
您应该查看这篇关于定位的文章 -- http://css-tricks.com/absolute-relative-fixed-positioining-how-do-they-differ/
事实上,它们位于您期望的位置是因为 HTML 中实际上没有其他元素,并且 absolute
元素相对于 body
也是 fixed
之一(但这是带有 position: fixed
的元素总是做的)。看看当我向父 div 添加一些其他内容时会发生什么 -- http://jsfiddle.net/7fsXp/13/
长话短说 - 如果可以不用绝对元素或固定元素,则不应使用绝对元素或固定元素来构建布局。
关于css - 奇怪的容器 div 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21711442/