【发布时间】:2021-02-19 09:40:36
【问题描述】:
在处理网格时,我意识到为网格项设置 margin: auto; 会极大地改变它们的行为。
我创建了一个简单的例子来说明发生了什么。
如果不为网格项目设置任何margin、width 或height,每个项目的高度和宽度都与我预期的一样。
仅添加margin: auto;,每个网格项的行为似乎都像inline 元素:框采用内容的大小(加上我添加的填充)。但是添加height: 100%; 和width: 100%;,保留margin: auto; 可以修复它。
所以,我并不是说这是错误的,我猜这是预期的行为,我只是不明白。
谁能解释正在发生的事情并可能链接到它的记录位置?
* {
box-sizing: border-box;
}
.grid {
display: grid;
grid-gap: 1.5rem;
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.grid > div {
border: 1px solid;
padding: 1.5rem;
/*
margin: auto;
height: 100%;
width: 100%;
*/
}
<div class="grid">
<div>1</div>
<div><h1>text</h1></div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
</div>
【问题讨论】:
-
因为这正是 auto 的作用,不是吗? auto 会根据其内容进行相应调整。设置宽度和高度只是意味着您已经覆盖了自动设置的尺寸。你看过这个帖子吗? stackoverflow.com/questions/4471850/…
-
嗯,我知道
margin: auto;是如何工作的,但我认为我说明的情况有所不同:如果你有一个块元素并将margin: auto;应用于它,则elemenet 的大小不会改变,它仍然会占据所有可用的水平空间 -
您是完整阅读副本还是只阅读标题?因为第一个副本很好地解释了为什么 margin 表现得那么为什么网格项
-
我已经读过了。我错过了它,因为相关部分甚至不在接受的答案中。我仍然认为它并没有真正回答我的问题,因为它只是在说明行为,我也做过,但它没有说明。发生这种情况的技术原因是什么?它记录在哪里?