【发布时间】:2019-01-10 21:44:22
【问题描述】:
我需要使用网格,但我的列不是网格的直接子级。网格有两列:
- 第 1 列包含标签。
- 第 2 列包含输入框。
标签列应与最大列一样大(但不大于)。输入列应使用所有剩余空间。我尝试了以下 CSS/HTML 组合。
* {
border: 1px solid black;
background: #2222;
}
.container {
display: grid;
width: 550px;
grid-gap: 10px;
grid-template-rows: [a] auto [b] auto [c] auto;
grid-template-columns: [label] auto [input] 1fr;
align-items: stretch;
}
label { grid-column-start: label; }
input { grid-column-start: input; }
.a { grid-row-start: a; }
.b { grid-row-start: b; }
.c { grid-row-start: c; }
<div class="container">
<div class="a">
<label>A</label>
<input>
</div>
<div class="b">
<label>Label B</label>
<input>
</div>
<div class="c">
<label>Longest C label</label>
<input>
</div>
</div>
我知道grid-column-start 没有被使用,因为元素不是网格的直接子元素。但是如何在不硬编码标签宽度或使用 Javascript 的情况下完成此功能?
使用多个网格(每行一个)会很好,但我需要同步第一列的宽度。我已经阅读了subgrids,但它还没有被任何主流浏览器实现。我还有其他方法可以解决这个问题吗?
【问题讨论】:
-
为什么需要使用css-grid?这是一个清晰的表格布局