Я пытаюсь создать макет из двух столбцов, используя CSS Сетка.
У меня есть
.left_1 {
grid-column: 1;
grid-row: 1;
}
.left_2 {
grid-column: 1;
grid-row: 2;
}
...
.right_1 {
grid-column: 2;
grid-row: 1;
}
.right_2 {
grid-column: 2;
grid-row: 2;
}
...
и так далее. Два верхних элемента сетки содержат только теги заголовков для заголовков, которые помечают каждый столбец:
<div class="left_1"><h4>Left Header</h4></div>
....
<div class="right_1"><h4>Right Header</h4></div>
Эти панели сетки оказываются намного выше, чем они должны быть, так что заголовки (вертикально выровненные по центру) плавать над остальными столбцами, чтобы не сразу было понятно, что они должны быть надписями для этих столбцов. Я покрасил фон элемента <h4>
, чтобы подтвердить, что это нормальный размер: достаточно высокий, чтобы вместить текст заголовков. Именно сам макет Grid делает панели слишком большими.
Я пытался добавить grid-template-rows: fit-content();
(различные проценты), grid-template-rows: auto;
, height: auto;
, height: 100%;
, height: fit-content;
и display: inline-block;
к дескрипторам классов для left_1
и right_1
, но ничего не меняет высоту панелей Grid.
Как сделать панели Grid не более высокими, чем это необходимо для содержания их содержимого? Я хотел бы избежать жесткого кодирования точного количества пикселей.
Редактировать: Вот полный файл, который показывает проблему:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
.columns {
display: grid;
grid-template-columns: 1fr 1fr;
column-gap: 10px;
}
.left_1 {
grid-column: 1;
grid-row: 1;
}
.left_2 {
grid-column: 1;
grid-row: 2;
}
.right_1 {
grid-column: 2;
grid-row: 1;
}
.right_2 {
grid-column: 2;
grid-row: 2;
}
h4 {
background-color: yellow;
}
</style>
</head>
<body>
<form>
<div class="columns">
<div class="left_1"><h4>Left Header</h4></div>
<select class="left_2" multiple="yes">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
<option>Option 4</option>
</select>
<div class="right_1"><h4>Right Header</h4></div>
<select class="right_2" multiple="yes">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
<option>Option 4</option>
</select>
</div>
</form>
</body>
</html>