Я пытаюсь создать простую графическую систему ASCII на основе сетки в HTML.
Система интерпретирует массив односимвольных строк как сетку с обычными разделами, представляющими строки.
Затем эти строки добавляются к некоторому родителю через контейнер DIV или P.
Помимо отрицательных полей, как я могу стилизовать это так, чтобы расстояние между строками и столбцами было одинаковым?
Вот что я пробовал до сих пор:
.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, выровненное с интервалом между буквами:
.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 вместо гибкости. В некоторых браузерах могут быть странные проблемы с высотой строки, но это можно исправить, установив высоту строки в самих элементах div.
.grid {
line-height: 0.69;
}<div class = "grid">
<div>XXXX</div>
<div>XXXX</div>
<div>XXXX</div>
<div>XXXX</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>