#footer
позиционируется абсолютно, что означает, что родительский контейнер не знает, насколько он велик (то есть он находится вне «потока документов»). Высота #container
установлена на min-height: 100%
, поэтому, как минимум, она должна быть равна полной высоте родителя (в данном случае, тела), но если дочерний контент выше, он растянется, чтобы вместить эта дополнительная высота.
Поскольку #footer
не учитывается, когда #container
пытается определить свою высоту, #container
просто проверяет, подходит ли он другим position: static
или position:relative
детям.
Итак, когда вы уменьшаете высоту своего браузера до очень короткого, #container
слишком короткий - он не оставляет места для #footer
.
Есть несколько способов позаботиться об этом, хотя с адаптивной точки зрения сложно, если высота #footer
является переменной в зависимости от содержимого, от того, переносится ли он и т. Д.
Если вы знаете высоту, вы можете добавить это количество отступов внизу #container
(если включено box-sizing: border-box;
, оно не добавится к height: 100%
- оно будет включено), и оно будет зарезервировать место для #footer
.
Если вы не знаете высоту, вы можете использовать display: flex;
, чтобы заполнить всю высоту и сделать нижний колонтитул самовыравнивающимся по низу, без необходимости использовать position: absolute;
. У Flexbox есть немного кривой обучения, хотя, я бы порекомендовал вам прочитать некоторые учебники. http://flexboxfroggy.com/ - забавная игра, которая также может помочь в ее изучении.