【发布时间】:2015-03-11 12:57:14
【问题描述】:
我有一个主 DIV 容器(橙色)和几个浮动 DIV 容器(灰色和红色)。这些内部 DIV 有一些内容,主 DIV 必须适合具有更高高度的 DIV 的高度。我面临的问题与第一个 DIV(灰色一个)有关。根据该 DIV 中的内容,我必须将其保持在最大高度,因此,如果它比任何其他 DIV 短,则需要将其调整为最大高度,如果它较大的主 DIV 适合其大小。
该 DIV 还包含我试图定位的两个 DIV,一个在顶部,另一个在 DIV 底部。到目前为止,无论我尝试什么,都失败了。
我确信 CSS 属性 position 和 bottom(或 top)可以解决这个问题,但到目前为止我尝试的任何组合都没有帮助。
<!-- MAIN CONTAINER: Orange -->
<div style="overflow:hidden; width:550px; background-color:#ffcc00">
<!-- INNER CONTAINER #1: Gray -->
<div style="overflow:hidden; float:left; width:180px; margin:5px 5px; background-color:#eeeeee">
<!-- TOP BLOCK -->
<div style="">This block goes top!</div>
<!-- BOTTOM BLOCK -->
<div style="">This block goes bottom!</div>
</div>
<!-- INNER CONTAINER #2: Red -->
<div style="overflow:hidden; float:left; width:250px; margin:5px 5px; background-color:#ff0000">Not that important block<br />with some content<br />...</div>
</div>
为了保持我的代码清晰,我只发布了简单的结构,并且需要 CSS 解决方案才能使其正常工作。我也可以发布完整的代码,但请尊重您的时间,可能没有人会疯狂到阅读不相关行的语气。
当然,margin 和 background-color 属性在这里只是为了提供视觉帮助。
所以基本上我的问题是:与所有其他内部 DIV 相比,如何将 Inner DIV #1 保持在最大高度,以及如何使顶部和底部 DIV 在父元素内工作。当然,如果它们很大,我不需要顶部和底部块相互混合,而不是它们必须增加父 DIV(和主容器)的大小。
当然,我可以使用 JavaScript 变通方法轻松做到这一点,处理元素的 offsetHeight 属性,但这不是解决方案(仅限 CSS)。另外,我不要求提供完整的跨浏览器解决方案,任何适用于 IE8+ 和更新的 Chrome、Firefox 和 Opera 浏览器的东西对我来说都是完全可以接受的。
我已经搜索 SO 和其他相关资源好几天了,但找不到任何可用的东西。现在甚至不确定这是否可能。因此,如果有什么我可以做的事情,请告诉我,任何评论、建议、提示或技巧都受到热烈欢迎。
我的目标示例:
最后,我想(以某种方式)仅使用 DIV 和 CSS 来模拟这种效果。
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="200" valign="top">Top</td>
<td width="350" rowspan="2" valign="top">Side</td>
</tr>
<tr>
<td valign="bottom">Bottom</td>
</tr>
</table>
【问题讨论】:
-
你能在 js fiddle 上发帖并在你的问题中链接吗
-
您是否考虑过使用表格来代替?
-
@Gerwin,所有相关代码都已经在问题中了。
-
@Kenyanke 不,由于许多不同的原因,使用表格不能成为解决方案。我知道桌子是可能的,并且知道该怎么做。无论如何,谢谢你的建议。
-
我相信您需要为此使用 javascript。您是否考虑过使用同位素?检查一下,它可能会派上用场。 isotope.metafizzy.co
标签: html css position css-position