Это больше из того, почему это происходит.
Как вы знаете, процентные значения зависят от родителя, если у родителя есть height:50px;
, а у прямого потомка height:50%
рост ребенка будет равен 25px
, поскольку 50%
из 50px
равно 25px
Однако, если у родителя есть height:0
, которое является значением по умолчанию, тогда height:100%
будет равно 0
, поскольку 100%
из 0
is 0
.
flexbox
не устанавливает высоту родителя, он просто растягивает дочерние элементы, чтобы заполнить доступное пространство.
Высота вашей обертки определяетсяcontent, так что когда вы говорите height:100%
, это следует за высотой содержимого (в среде flex), теперь содержимое здесь имеет значение nav#sidebar
и main
main выше, поэтому высота родительского элемента будет равнаего высота, которая определяется его содержимым (может быть жестко задана или даже установлена JS), flexbox
будет растягивать других дочерних элементов, теперь установка height:100%
для дочернего элемента означает высоту родительского элемента, как если бы этот дочерний элемент был единственнымтот, который существует, чтобы увидеть этот репереместите элемент main
все вместе, тогда height:100%
будет работать, удаление его работает, потому что, как я сказал ранее flexbox
, растягивайте детей.