Так что мне нравится это, когда он оборачивается, но все же ящики все выровнены с обеих сторон и заполняют все пространство.
<head>
<style>
* {
padding: 0px;
margin: 0px;
text-transform: none;
font-style: normal;
}
p {
display: flex;
flex-wrap: wrap;
width: 200px;
}
i {
flex: 1;
padding: 5px;
margin: 2px;
background: #ddd;
text-align: center;
}
</style>
</head>
<body>
<p>
<i>foo</i><i>hello</i><i>congratulations</i><i>forward</i><i>interesting</i><i>place</i><i>walk</i><i>to</i><i>anyplace</i><i>next</i><i>sophisticationism</i>
</p>
</body>
Используя сочетание маленьких и больших слов, он каким-то образом выясняет, как оптимально расположить их, чтобы полностью заполнить пространство.
То, что я хотел бы сделать сейчас, это то, что вместо того, чтобы каждый прямоугольник представлял собой прямоугольник с динамической шириной, я бы хотел, чтобы ящики «привязывались к сетке», так сказать. То есть представьте, что там была сетка квадратов, которые тянулись поперек каждого ряда. Вроде как (что я полностью жестко запрограммировал, просто для того, чтобы продемонстрировать, как это выглядит. На самом деле это мой вопрос, как сделать это автоматически с помощью FlexBox).
<head>
<style>
* {
padding: 0px;
margin: 0px;
text-transform: none;
font-style: normal;
}
p {
display: flex;
flex-wrap: wrap;
width: 220px;
}
i {
width: 50px;
height: 50px;
padding: 5px;
margin: 2px;
background: #ddd;
text-align: center;
}
.l {
width: 114px;
}
</style>
</head>
<body>
<p>
<i>a</i><i>a</i><i>a</i><i>a</i><i class='l'>long</i><i>a</i><i class='l'>long</i><i>a</i><i class='l'>a</i><i class='l'>long</i><i>a</i><i>a</i><i>a</i><i>a</i><i>a</i><i>a</i><i>a</i>
</p>
</body>
Итак, перефразируя, мой вопрос заключается в том, как заставить плавный текст (как слова на изображениях выше) размещать так, чтобы (а) он заполнял каждую строку, и (б) каждое поле было кратным квадрат. То есть он привязывается к сетке квадрата, выдерживая 1, 2, 3+ квадрата, а не 2,5 квадрата или 1,2345 квадрата или что-то еще. Он всегда привязан к целому блоку. Для этого он сначала просматривает более длинные слова и вычисляет, сколько блоков он займет. Затем он растягивает любые более короткие блоки (например, одну букву «а» в приведенном выше примере), чтобы заполнить пустое пространство.
Хотите знать, как это можно сделать с помощью FlexBox или иным образом с помощью CSS.