我正在尝试完成如下所示的布局:
两个浮动:左侧div并排放置,每个都有45%的宽度。在右边,div包含两个子部分 - 一个与div的底部对齐,另一个与顶部对齐。
如果右边的部分足够长,它们当然会在中间相遇,然后开始推出包含div的高度:
我一直在玩假柱,清楚:全部,溢出:隐藏,底部:0,以及我能想到的任何其他技巧,但我不能让这种行为起作用。
真正的问题似乎源于左侧和右侧div中较小的一个没有扩展到容器的高度,它使用overflow:hidden来获取两者中较大者的高度。有什么想法吗?
到目前为止我所拥有的:
<div style="overflow:hidden; clear:both">
<div id="column1" style="float: left; width:45%">
<div id="column2" style="float: left; width:45%">
<div style="float: left; top: 0">Content Here should sit up top</div>
<div style="float: left; bottom: 0">Content Here should sit on bottom</div>
</div>
</div>
这就是它的结果,我无法在不使用固定高度的情况下将顶部和底部分开:
感谢您好好看看!
答案 0 :(得分:4)
答案 1 :(得分:1)
您可以删除浮动并尝试使用display:table-cell
(以及table
,table-row
...),但这会限制IE8及更高版本的浏览器支持。
但如果你确实让它像这样工作,你可以使用javascript让IE6 / IE7发挥得很好(如果你需要它们......)。
答案 2 :(得分:1)
你会疯狂地尝试用CSS完成这个。
如果您只需要支持现代浏览器,则可以使用display: table
,它将为您提供传统表格的垂直对齐控制。
否则,这对JS来说真的是一个工作,如果你使用像jQuery这样的东西,那么完成它是相当简单的。
答案 3 :(得分:1)
您需要在$(文档)内使用JavaScript。您可以设置3个变量,每个高度一个。在两个正确的div之间添加一个aditional div(让我们称之为扩展器),并根据其他三个的高度,更改此div(扩展器)高度。
请记住,var dos = $("#one").height();
为您提供id =“one”的div的高度
要更改div高度,只需使用$("#expansor").height(newHeight) ;
'newHeight'是第一个div高度减去2个右div的结果。
答案 4 :(得分:1)
正如之前所说,如果不使用大量的JavaScript,你就会疯狂地尝试在所有浏览器上全面开展这项工作。
我的解决方案是使用绝对和相对定位的组合与最小/最大高度场景相结合。你还将使用一些嵌套的DIV,确保使用虚拟的“clear:both”DIV来确保正确推送。
示例:
<!-- Clear CSS -->
.clear {
clear:both;
height:0;
line-height:0;
margin:0;
padding:0;
font-size:0;
border:none;
}
<!-- End CSS -->
<div id="container" style="width:400px;position:relative;">
<div id="column-right" style="height:300px;width:195px;float:right;">
<div id="block-top" style="position:absolute;top:0;height:145px;">
<div class="content">
...
</div>
<div class="clear"> </div>
</div>
<div id="block-bottom" style="position:absolute;bottom:0;height:145px;">
<div class="content">
...
</div>
<div class="clear"> </div>
</div>
<div class="clear"> </div>
</div>
<div id="column-left" style="position:relative;height:300px;width:195px;float:left;">
<div class="content">
...
</div>
<div class="clear"> </div>
</div>
<div class="clear"> </div>
</div>