我有一个main
我设置为的元素position: relative
。这包含两个div
我然后应用的 s position: absolute
。然后,这会导致将main
元素夹在中间的页眉和页脚然后相互碰撞。我怎样才能阻止这个?
使用浮动和清除页脚似乎给出了我想要的两列布局。但我不确定这个解决方案有多“坚固”,以及在 IE6/7 上会发生什么。
codepen上的代码。
你所有的元素main
都是绝对定位main
的,所以高度计算为零,所以页眉的底边紧挨着页脚的顶边。如果您添加高度,main
您将在页眉和页脚之间打开空间。
给定以下 HTML:
<header>Header</header>
<main>
<div id="text">
<p>Some text</p>
</div>
<div id="links">
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
</ul>
</div>
</main>
<footer>
<p>Footer</p>
</footer>
您可以使用浮动实现两列布局,如以下 CSS 所示:
main {
position: relative;
height: auto;
overflow: auto;
border: 1px solid blue;
}
#text {
float: left;
width: 500px
}
#links {
float: left;
width: 400px;
}
您需要overflow: auto
在main
容器上设置以包含浮动(相当于清除它们)。
另外,请确保浮动元素的宽度不要太宽,否则如果屏幕尺寸太窄,它们将换行到第二行。
请参阅http://codepen.io/anon/pen/gGsjd上的演示
脚注:使用溢出:自动与清除:两者
我倾向于使用overflow: auto
,但在某些情况下,该clear
属性是需要的。在某个时候,请在http://www.w3.org/TR/CSS2/visuren.html#block-formatting阅读有关“块格式设置上下文”的信息选择一种方法而不是另一种方法的原因有点微妙,而且选择取决于您尝试实现的布局的细节,它如何以响应方式表现等等。