У меня есть форма с несколькими наборами полей с разным количеством элементов. Можно ли сделать так, чтобы поля набора полей плотно заполняли столбцы, а не выравнивались с одним в другом столбце.
Пример кода (я хочу, чтобы блок 3 находился прямо под блоком 1):
fieldset {
float: left;
margin-top: 1em;
width: 45%;
box-sizing: border-box;
border: 1px solid;
}
fieldset label {
display: block;
float: left;
width: 24em;
margin-right: 1em;
}
fieldset legend {
font-weight: bold;
text-transform: uppercase;
}<form method=post>
<fieldset>
<legend>Block 1:</legend>
ABC
</fieldset>
<fieldset>
<legend>Block 2:</legend>
ABC <br/>
DEF <br/>
GHI <br/>
JKL
</fieldset>
<fieldset>
<legend>Block 3:</legend>
ABC <br/>
DEF <br/>
GHI <br/>
JKL
</fieldset>
</form>Я не могу вручную перемещать их, так как порядок имеет значение, а количество элементов в каждом наборе полей является динамическим (код cgi python).
Вы пытаетесь установить 3 столбца или в одну строку?
Внимательно прочитайте это: regisphilibert.com/blog/2017/12/…
Прямо -> Следование без пробелов.






Для этого вы можете разделить свои наборы полей на 2 столбца и использовать vertical-align:top, чтобы выровнять самый маленький столбец вверху.
.column1, .column2{
width: 45%;
display: inline-block;
vertical-align: top;
}
fieldset {
float: left;
margin-top: 1em;
width: 100%;
box-sizing: border-box;
border: 1px solid;
}
fieldset label {
display: block;
float: left;
width: 24em;
margin-right: 1em;
}
fieldset legend {
font-weight: bold;
text-transform: uppercase;
}<form method=post>
<div class = "column1">
<fieldset>
<legend>Block 1:</legend>
ABC
</fieldset>
<fieldset>
<legend>Block 3:</legend>
ABC <br/>
DEF <br/>
GHI <br/>
JKL
</fieldset>
</div>
<div class = "column2">
<fieldset>
<legend>Block 2:</legend>
ABC <br/>
DEF <br/>
GHI <br/>
JKL
</fieldset>
</div>
</form>Это делает то, что я хочу, но мне нужно разделить их на столбцы. Это решение, которое я использую сейчас.
Вы можете взглянуть на многоколоночный макет / столбцы
form {
column-count:2;
column-fill:balance;
padding-top:1em;
}
fieldset {
margin-bottom: 1em;
box-sizing: border-box;
border: 1px solid;
}
fieldset label {
display: block;
width: 24em;
margin-right: 1em;
}
fieldset legend {
font-weight: bold;
text-transform: uppercase;
}<form method=post>
<fieldset>
<legend>Block 1:</legend>
ABC
</fieldset>
<fieldset>
<legend>Block 2:</legend>
ABC <br/>
DEF <br/>
GHI <br/>
JKL
</fieldset>
<fieldset>
<legend>Block 3:</legend>
ABC <br/>
DEF <br/>
GHI <br/>
JKL
</fieldset>
</form>display:grid может помочь, но вам придется вручную установить строки и столбцы, где стоять и сколько строк или столбцов охватывать.
display:flex потребуется заданная высота для переноса содержимого в следующий столбец.
column кажется ближе к вашим потребностям
Решение похоже на то, что я хочу, но порядок неправильный. Похоже, колонка - это путь.
что значит прямо??