我正在开发一个响应式布局,将一些<div>
框显示为矩形网格的一部分:
您可以在此页面上看到的六个框在 HTML 源代码中都未分组,都在一行中:
<div class="control">
<div class="controlContent">
<a>SOME VARIABLE-HEIGHT CONTENT including an image which might float</a>
</div>
</div>
div首先control
将框的百分比宽度分配给整体,然后是屏幕宽度的 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 这样的小而容易分解的数字。