如何在带有CSS网格的表单中使用字段集?

如何在带有CSS网格的表单中使用字段集?,css,html,css-grid,Css,Html,Css Grid,我想对语义HTML使用。 我正在使用CSS网格使我的表单看起来很漂亮 表单{ 显示:网格; 网格模板列:minmax(100px,最大内容)minmax(200px,最大内容)minmax(200px,1fr); 栅隙:10px; } .field\u标签{ 文本对齐:右对齐; } 名字 只能使用字母、空格、连字符和撇号 我看到两个选项: 如果您严格地想要使用CSS网格布局,您需要使用这个 fieldset { display: contents; } 字段集{ 显示:内容; } 但是,

我想对语义HTML使用
。 我正在使用CSS网格使我的表单看起来很漂亮

表单{
显示:网格;
网格模板列:minmax(100px,最大内容)minmax(200px,最大内容)minmax(200px,1fr);
栅隙:10px;
}
.field\u标签{
文本对齐:右对齐;
}

名字
只能使用字母、空格、连字符和撇号
我看到两个选项:

  • 如果您严格地想要使用CSS网格布局,您需要使用这个

    fieldset { display: contents; } 字段集{ 显示:内容; } 但是,这将从视图中消除边界集,因此无法获得边界等。您仍然可以设置图例的样式

  • 如果您想让字段集正常显示并带有边框等,则需要更改布局。以下是一个可以作为起点的示例:

    fieldset > label, form > label { clear: both; float: left; width: 18%; text-align: right; font-weight: bold; white-space: nowrap; } fieldset>label { margin-right: 0.5em; padding-top: 0.1em; } form>label { margin-left: 0.75em; margin-right: 0.5em; padding-top: 0.1em; } fieldset>:not(label):not(legend) { min-width: 72%; width: 72%; margin-bottom: 0.5em; display: block; } form>:not(label):not(fieldset) { min-width: 70%; width: 70%; margin-bottom: 0.5em; display: block; } 字段集>标签,表单>标签{ 明确:两者皆有; 浮动:左; 宽度:18%; 文本对齐:右对齐; 字体大小:粗体; 空白:nowrap; } 字段集>标签{ 右边距:0.5em; 填料顶部:0.1米; } 表格>标签{ 左边距:0.75em; 右边距:0.5em; 填料顶部:0.1米; } 字段集>:非(标签):非(图例){ 最小宽度:72%; 宽度:72%; 边缘底部:0.5em; 显示:块; } 表单>:非(标签):非(字段集){ 最小宽度:70%; 宽度:70%; 边缘底部:0.5em; 显示:块; }

  • 阅读以下内容:@Temaniaff如果这真的很有用,并且起到了一定的作用-有一个小问题,那就是如果我想在字段集的开头添加一个
    ,它会再次扰乱网格。有没有办法让一个“假”项目可以放在那一行的第2列和第3列?你可以尝试使用pseudo元素来创建这些假元素。我做了两个空的
    ,它可以工作,但感觉不是很语义化!如果我们能想出一个合法的方法让它发挥作用,我很乐意接受你的答案,如果你把它写成一个。你需要提供更多关于第二部分的细节;)如何添加图例等,以便编辑问题