【发布时间】:2018-07-13 14:39:53
【问题描述】:
我有一个 CSS 网格。该网格的高度和宽度相同,形成一个正方形。网格的每一行和每一列的大小分别是高度和宽度大小的三分之一。这将使所有细胞呈方形。但它们不是方形的。他们看起来像,他们离开了。下面是截图
让我解释一下这个数字:
- 显示 CSS Grid 区域,如检查器所示,它是正方形的
- 显示所有CSS轨道形成的区域,我们可以看到所有列的总高度超过了实际网格的高度
- 行和列轨道的大小由小数间距决定
- 为 CSS 网格指定的高度和宽度(实际上是 60vmin)。这里显示了计算值。我们看到两者是相同的,形成一个正方形。
- 显示轨道的计算值。很明显,我们可以看到列的宽度不与行的高度相同。此外,grid-template-rows 细节显示,第 2 行的高度略大于其他 2 行的高度。
我不明白为什么会这样。我想在网格正下方放置一个条,但是由于网格的表观高度超过了实际高度,因此应该在网格下方的元素与网格重叠。
* {
box-sizing: border-box;
}
.center-area {
width: 60vmin;
margin-left: auto;
margin-right: auto;
}
.board {
height: 60vmin;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
}
@media screen and (max-width: 600px) {
.board {
height: 90vmin;
}
}
.cell-content-empty {
width: 100%;
height: 100%;
}
.border-holder:nth-child(1) {
border-bottom: 1px solid #808080;
border-right: 1px solid #808080;
}
.border-holder:nth-child(2) {
border-right: 1px solid #808080;
border-bottom: 1px solid #808080;
border-left: 1px solid #808080;
}
.border-holder:nth-child(3) {
border-bottom: 1px solid #808080;
border-left: 1px solid #808080;
}
.border-holder:nth-child(4) {
border-top: 1px solid #808080;
border-right: 1px solid #808080;
border-bottom: 1px solid #808080;
}
.border-holder:nth-child(5) {
border-top: 1px solid #808080;
border-right: 1px solid #808080;
border-bottom: 1px solid #808080;
border-left: 1px solid #808080;
}
.border-holder:nth-child(6) {
border-top: 1px solid #808080;
border-bottom: 1px solid #808080;
border-left: 1px solid #808080;
}
.border-holder:nth-child(7) {
border-top: 1px solid #808080;
border-right: 1px solid #808080;
}
.border-holder:nth-child(8) {
border-top: 1px solid #808080;
border-right: 1px solid #808080;
border-left: 1px solid #808080;
}
.border-holder:nth-child(9) {
border-top: 1px solid #808080;
border-left: 1px solid #808080;
}
<div className="center-area">
<div class="board">
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
<div class="border-holder">
<div class="cell"><img src="https://image.ibb.co/c0q1Ew/transparent.png" alt="" class="cell-content-empty"></div>
</div>
</div>
</div>
【问题讨论】:
-
您能否在代码 sn-p 中为您的问题添加一个最小示例?
-
请提供重现问题的代码
-
请发布您的代码。
-
添加了代码框示例。我的原始代码在 ReactJS 中,所以添加了一个类似的示例。在样本中可以观察到类似的行为。希望对您有所帮助。