gpt4 book ai didi

html - 如何使用 CSS 网格对齐嵌套 HTML 中的列

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:54 25 4
gpt4 key购买 nike

我需要使用网格,但我的列不是网格的直接子项。网格有两列:

  1. 第 1 列包含标签。
  2. 第 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 网格更适合表格布局:

* {
box-sizing:border-box;
}
.container {
display: table;
width: 550px;
border:1px solid;
}

.container>div {
display: table-row;
}

label,
input {
display: table-cell;
border:1px solid green;
}
label {
width:5%; /*a small value*/
white-space:nowrap;
}
input {
width:100%;
}
<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>

关于html - 如何使用 CSS 网格对齐嵌套 HTML 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54137335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com