移除 Flex 子项之间的垂直边距

Remove Vertical margins between Flex Children

我正在尝试在 HTML 中创建一个简单的基于网格的 ASCII 图形系统。
系统将单字符字符串数组解释为网格,其中规则分区代表行。
这些行然后通过 DIVP 容器附加到某个父级。

除了负边距,我怎样才能将其样式化以使行和列之间的距离相同?

这是我目前尝试过的方法:

.grid {
  display: flex;
  flex-direction: column;
  row-gap: 0px;
  font-family: monospace;
}
<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
  <div class="grid">
    <div>XXXX</div>
    <div>XXXX</div>
    <div>XXXX</div>
    <div>XXXX</div>
  </div>
</body>

</html>

为了清楚起见,我需要角色坐 齐平 相对。

您可以使用网格显示(而不是柔性显示)并使用 row-gap 属性 与 letter-spacing:

对齐
.grid {
  display: grid;
  row-gap: 20px;
  letter-spacing: 20px;
}

一种方法是将 line-height 设置为字符的宽度 (8px):

.grid {
  display: flex;
  flex-direction: column;
  font-family: monospace;
  line-height: 8px;
}
<div class="grid">
  <div>XXXX</div>
  <div>XXXX</div>
  <div>XXXX</div>
  <div>XXXX</div>
</div>

您可以执行以下操作:

.grid {
 display: flex;
 flex-wrap: wrap;
 flex-direction: column;
 row-gap: 10px;
 letter-spacing: 20px;

}

它将使用 css flex 实现所需的输出。

您可以使用 line-height 获得所需的效果,而不是使用 flex。在某些浏览器上,它可能有奇怪的行高问题,但这可以通过在 div 本身中设置行高来解决。

.grid {
  line-height: 0.69;
}
<div class="grid">
  <div>XXXX</div>
  <div>XXXX</div>
  <div>XXXX</div>
  <div>XXXX</div>
</div>

下面的代码通过仅更改子 div 上的 line-height 修复了 line-height 问题。

.griddiv {
  line-height: 0.65;
}
<div class="grid">
  <div class="griddiv">XXXX</div>
  <div class="griddiv">XXXX</div>
  <div class="griddiv">XXXX</div>
  <div class="griddiv">XXXX</div>
</div>