【发布时间】:2012-09-17 12:11:44
【问题描述】:
我正在开发一种响应式布局,它将一些 <div> 框显示为矩形网格的一部分:
您在此页面上可以看到的六个框在 HTML 源代码中均未分组,全部排成一行:
<div class="control">
<div class="controlContent">
<a>SOME VARIABLE-HEIGHT CONTENT including an image which might float</a>
</div>
</div>
control div 首先将框的百分比宽度分配给整体,然后是屏幕宽度的 1/2 或 1/3,因此随着屏幕尺寸的增加,它们会加倍或加倍成行。 controlContent div 分配诸如填充、边距、背景、border-radius 等属性。
我把它想象成一组线性的框,符合标准且对屏幕阅读器友好,可以像表格一样通过 CSS 显示。我知道 CSS2.1 允许为元素分配如下属性:
display: table;
display: table-row;
display: table-cell;
我的主要问题:我已将 display: table-cell 分配给这些元素(通过 controlContent div),这可以防止内容内的边距折叠,但不提供单元格状 div 的统一高度。 我需要一种方法让同一行上的所有兄弟姐妹的高度匹配。
较小的单元格下方通常有间隙,渐变背景仅覆盖单元格的框高。 (更糟糕的是,这个单元格数组之后的文本有时会填补这些空白:另一个可以通过演示标记修复的问题,尽管当第一个问题解决后可能会消失。)
我想我了解问题的基本原理:我告诉过要表现得像表格单元格的每个 <div> 没有任何东西可以匹配它的高度,因为我无法将元素分组到包含 <div> 到我可以分配 display: table-row 属性,因为这个分组会根据 CSS 媒体查询而改变。
在阅读有关该问题的信息时,我听说过创建了 匿名表格框 和 匿名表格行,但不知道在这种情况下如何使用它们。由于我使用 CSS :nth-child() 选择器来清除每个新行开头的浮动框,我希望我也可以使用这些选择器在每个这样的点建立一个新的表格行......但是如何?
我不接受任何特定的解决方案。我只是想知道这样做的最佳实践方式。我希望找到一个不涉及演示标记的解决方案,特别是因为通用解决方案应该为任意数量的单元格提供响应式可变维度表,而不仅仅是像 6 这样的小而容易分解的数字。
【问题讨论】:
标签: html css responsive-design css-float css-tables