在我正在玩的这个JSfiddle中,我做了div#footer {
width: calc(100% + 100px);
margin-left: -50px;
text-align: center;
padding: 10px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
background-color: rgba(255, 255, 255, 0.8);
}
,开始表现得非常奇怪。
目前,它的CSS设置为:
<div>
静态定位并且应该位于其他div#header
下方,div#body
和div#body
。但出于某种原因,似乎也会占用 box-shadow
。请参阅此图片,例如:
注意div#body
效果如何应用于整个div#footer
元素。底部两条居中的行应该是div#body
的全部。
position:static
也设置为{{1}}(默认)。我没有添加任何特定的样式(但我对它的一些子元素做了)。
我不知道发生了什么 - 这在我以前从未发生过。完整的代码在JSfiddle上,但是我在这里发帖太多了。关于正在发生的事情和解决方案的任何想法?感谢。
答案 0 :(得分:2)
这是因为div#body
元素正在崩溃。
当元素绝对定位或浮动(如您的情况)时,它们将从文档的正常流程中删除。以下是相关文件确认:
9 Visual formatting model - 9.5 Floats
由于浮动不在流中,因此在浮动框之前和之后创建的非定位块框垂直流动,就像浮动不存在一样。但是,根据需要缩短浮动旁边创建的当前和后续行框,以便为浮动的边距框留出空间。
在您的情况下,div#body
元素的所有直接子元素都会浮动。因此,div#body
元素基本上会自行折叠,因为它没有任何尺寸。
您需要将a clearfix应用于div#body
元素,例如:
#body {
overflow: auto;
}
或:
#body:after {
content: '';
clear: both;
display: table;
}
或者,您也可以将clear: both
添加到#footer
元素:
#footer {
clear: both;
}
答案 1 :(得分:1)