【发布时间】:2019-01-29 02:10:35
【问题描述】:
我正在尝试制作一个可调整大小的正方形网格,其中包含一些文本。代码如下:
/* Dirty quick CSS reset */
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.container {
display: flex;
flex-flow: column;
flex: 1;
background: aliceblue;
}
.row {
display: flex;
flex: 1;
}
.square {
border: 1px solid black;
width: 14.2857%; /* 100% / 7 */
font-size: 18px;
padding: 8px;
/* square-width - font-size - padding-top */
padding-bottom: calc(14.2857% - 18px - 8px);
}
<div class="container">
<div class="row">
<div class="square">1</div>
<div class="square">2</div>
<div class="square">3</div>
<div class="square">4</div>
<div class="square">5</div>
<div class="square">6</div>
<div class="square">7</div>
</div>
</div>
我们可以看到,有一排正方形可以适应窗口的大小。问题是,如果我们检查它们,我们会发现它们并不完全是正方形(它们大约比宽度高 3 像素)。如果我们增加font-size,情况会变得更糟,据我所知,数学是正确的。
这里发生了什么?为什么我会得到这些额外的像素?
【问题讨论】:
-
我希望它是一个四舍五入的问题,基于你说随着它们变大它会变得更糟的事实。
-
添加
line-height: 1有帮助,但并不完美 -
我不知道为什么,但如果你使用
padding-bottom: calc(14.2857% - 18px - 10px);,它似乎适用于所有尺寸 -
加
line-height等于字体大小,padding-bottom减去上下边框。 -
border 是有道理的,为什么在减法中再添加 2 个像素可以修复它,据我所知,虽然你不需要线高,但没有它对我来说很好。
标签: css flexbox responsive