我正在尝试在我的网页中创建以下 2 列布局:
+-------+---+
| | |
| | |
| A | B |
| | |
| | |
| | |
| +---+
| | |
| | C |
| | |
+-------+---+
具有以下特点:
- 左列和右列都有固定的宽度。
- C的内容是固定的,所以C有固定的高度。
- A 和 B 中的内容量可能会有所不同(最终用户提供),因此 A 和 B 所需的最小高度可能会有所不同。
- 如果 A 需要的高度超过 B 和 C 的总和,则应拉伸 B 的高度,使其保持与 C 接触,并且 C 的底部与 A 的底部对齐。
- 如果 A 需要的高度小于 B 和 C 的总和,则应拉伸 A 以使 A 和 C 的底部对齐。
- A 和 B 具有不同的边框和/或背景颜色,因此我不能通过不拉伸其中一个来作弊(而 C 不需要拉伸)。
我尝试通过用 div 表示每个单元格并使用 jQuery 的文档就绪事件将单元格调整到适当的高度,具体取决于哪一列最高。
大多数情况下,这是有效的。但是,因为 A 包含一个嵌入的 YouTube 视频,而 C 包含一个嵌入的 Google Maps 部分,所以有很多动态内容调整正在进行,这有时会导致我的 javascript 代码使用错误的高度值并弄乱布局过程.
此外,当您看到内容单元格被拉伸到正确的高度时,它看起来相当难看,即使如果它始终如一地工作我也可以忍受。
作为替代方案,我尝试在此布局中使用表格,因为它们内置了“使所有列保持相同高度”的行为。
这种方法的问题是我必须对 A 使用“td rowspan = 2”,一旦我这样做了,IE 和 Chrome 就会忽略我在 C 上指定的任何固定高度,而是让 C 太高。
所以基本上我完全坚持如何实现这个(看似简单的)布局。谁能指出我正确的方向?
我的目标是 Chrome、FireFox 和 IE7+,但在 IE7 和 IE8 中,所需布局的合理近似值是可以接受的。