Мой aside
элемент и div.content
должны, насколько я знаю, занять половину доступного пространства в div.container
. Кроме того, сетка в div.content
должна занимать все доступное вертикальное пространство.
Проблема заключается в том, что элементы сетки не могут иметь любую высоту (если не жестко заданы). Кроме того, все вертикальное пространство, занимаемое сеткой (из-за grid-gap
), берется как из элемента aside
, так и из div.content
, что означает, что div.content
ворует вертикальное пространство aside
, и эти два элемента больше не являются такой же высоты.
Высота aside
равна высоте div.content
минус высота сетки.
В заключение отметим, что использование flexbox для div.content
запрещено. Дочерние элементы, добавленные в div.content
, ведут себя больше как его братья и сестры.
* {
box-sizing: border-box;
}
body {
min-height: 100%;
margin: 0;
display: flex;
flex-direction: column;
}
html {
height: 100%;
}
header,
footer {
background-color: #1A1C22;
height: 100px;
}
.container {
flex: 1 0 400px;
display: flex;
flex-direction: column;
padding-top: 12px;
}
aside {
background-color: #6C757D;
flex: 1 1 auto;
}
.content {
flex: 1 1 auto;
display: grid;
grid-template-columns: 1fr;
grid-template-rows: repeat(6, 1fr);
grid-gap: 20px;
border: 2px solid blue;
}
section {
background-color: #343A40;
border: 1px solid red;
}
<body>
<header></header>
<div class="container">
<aside></aside>
<div class="content">
<section></section>
<section></section>
<section></section>
<section></section>
<section></section>
<section></section>
</div>
</div>
<footer></footer>
</body>