我问这个是为了学习;这种行为没有任何负面的方面,但我只是想知道这是否会在未来产生任何负面影响。
所以我有一个容器div:content_wrap,它有另外两个div:side_bar和main_content。容器div是980px width,用于使用margin-left和margin-right对其内容进行中心设置。
但是,当我调试页面(在Firefox中)时,我注意到浏览器将div呈现为0x0px,并将父div呈现在屏幕外。然而,它确实正确地定位了孩子的div。有关示例,请参见此JSFiddle:http://jsfiddle.net/7fsXp/7/
我在谷歌上搜索了这个答案,大多数答案都与floats有关,并通过clear:both解决,但我不使用任何浮点数。我确实注意到,如果我将main_content div从position:absolute;更改为position:relative;,则会正确显示content_wrap。或者我可以通过为height设置content_wrap来修复它。
我实际上不需要能够看到content_wrap,所以没有真正的问题,因为它正在以子div为中心来完成它的工作。我只是想知道这样做会不会是个不好的做法?这是一件坏事,还是有关系?
发布于 2014-02-11 20:05:20
尝试将其他元素添加到这个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/添加其他内容时会发生什么情况。
因此,长话短说-你不应该形成你的布局绝对或固定的元素,如果你可以做到没有他们。
发布于 2014-02-11 20:04:41
position: fixed和position: absolute将元素从流中提取出来,因此在所有子div上使用这些位置都将完全折叠父div。
如果您的内容在折叠的div下面,它将在该内容(如这 )下上下流动。
您不需要绝对地定位main_content div,但是您需要更改一些东西以使侧边栏和main_content对齐。
演示
由于侧栏是固定的,所以它使用的是文档,而不是容器div作为top的引用,而main_content则使用主体(除非将position: relative添加到容器中)。摆脱身体的默认填充/边距将修复微小的对齐差异。
body {
padding: 0;
margin: 0;
}
#main_content {
//remove position: absolute;
margin-top:70px; //top: 70px won't work unless you specify position
}发布于 2014-02-11 20:14:44
这取决于您愿意做什么,但是由于div的默认div是position: static;,所以更改position: relative;将避免父div的崩溃。
https://stackoverflow.com/questions/21711442
复制相似问题