html - 为什么 CSS Grid 将所有项目的宽度设置为网格中最小项目的最小内容?
问题描述
我有一个简单的网格,它有 12 行和一列。我假设每行的宽度默认设置为最小内容(我的假设)(图 1)。但是,似乎如果我将文本添加到作为标题的第一行,所有行的宽度都会调整大小,而不仅仅是我更改的宽度(图 2)。
为了解决这个问题,我可以将网格的宽度设置为我需要的值,这将正确调整所有行的大小。但是,我想了解为什么 CSS 将所有行(标签和输入字段)定位到标题元素的最小内容,而不是将每一行单独定位到其最小内容
#checkout-form fieldset {
display: grid;
grid-template-rows: repeat(12, 25px);
align-items: start;
/* this will align properly
width: 70%; */
}
#checkout-form fieldset>h2{
grid-row: span 2;
}
解决方案
由于只有一列,所有行都将具有相同的大小,并且它们基于标题元素,因为它具有最大的宽度。为什么会这样?因为这就是它的指定方式,换句话说,就是默认行为。
在内联和块格式化上下文中,网格容器的自动块大小是它的最大内容大小。
如果您使用grid-template-columns
属性定义了列大小,则将适用以下内容。
当网格在最大内容约束(最小内容约束)下调整大小时,网格容器的最大内容大小(最小内容大小)是相应轴上网格容器的轨道大小(包括间距)的总和.
顺便说一句,我不是这些文件的专家。
编辑:这能回答你的问题吗?
推荐阅读
- c - strcmp 输出之谜 - strcmp 如何实际比较字符串?
- xml - 在 Lotus 中创建 XML 表单,并从不同的文档中获取字段
- jquery - (jQuery) 条件发生时停止功能
- reactjs - 使用 React 实现 shufflejs 的问题
- django - django 导入 AUTH_USER_MODEL
- r - 闪亮和 CSV 文件
- ios - Firebase 动态链接在全新安装后不起作用 (iOS)
- amazon-web-services - 尝试在 CloudFormation 上创建堆栈时,状态仅从 CREATE_IN_PROGRESS 更改为 ROLLBACK_COMPLETE
- angularjs - 状态更改后angularjs ng-model不绑定
- maven - 如何正确配置我的连接面?