Сгибание липкого нижнего колонтитула перекрывает сгибания братьев и сестер при изменении размера окна (высота уменьшается) - PullRequest
0 голосов
/ 29 октября 2018

У меня очень простая структура flexbox с дочерними элементами заголовка, основного и нижнего колонтитула, где нижний колонтитул является конечным элементом и играет роль липкого нижнего колонтитула, чтобы оставаться в нижней части страницы на длинных страницах. Но всякий раз, когда окно сокращается (высота), нижний колонтитул перекрывает весь контент (другие элементы одного уровня), как если бы он имел свойство фиксированной позиции.

Мне бы хотелось, чтобы оно имело поведение по умолчанию и было бы таким же, как и другие, которые скрыты, когда высота сайта слишком мала для отображения текущего последнего элемента.

Моя структура:

HTML

<div id="main">
  <div id="alternate_header"></div>
  <div id="header">
    <div>1</div><div>2</div>
  </div>
  <div id="content">body</div>
  <div id="footer">footer</div>
</div>

CSS

body,html {

  margin: 0;
  height:100vh;

}

#main {

  display:flex;
  flex-direction: column;
  width:100%;
  height:100vh;
  min-height:0;

}

#main > div {

  width: 100%;

}

#alternate_header {

  display; none;

}

#header {

  background-color:red;
  height:5rem;
  line-height:5rem;
  align-self:flex-start;
  display:flex;
  flex-direction:row;

}

#header > div {

  flex:1;
}

#content {

  flex:1;
  background-color:#dcdcdc;
  min-height:0;

}

#footer {

  align-self:flex-end;
  background-color: yellow;
  height: 4rem;

}

JSFIDDLE

1 Ответ

0 голосов
/ 29 октября 2018

Проблема вызвана установкой фиксированной высоты для ваших контейнеров: html, body и #main. Это означает, что высота вашего контейнера flexbox всегда будет точно 100vh: высота области просмотра.

Ваш элемент #footer имеет align-self: flex-end. Это означает, что он будет выровнен к концу вашего гибкого контейнера: к нижней части страницы.

Вы можете иметь тот же эффект, гарантируя, что страница занимает весь экран, позволяя странице расти и перемещаться по ней в нижнем колонтитуле, заменив:

 height: 100vh;

с:

 max-height: 100vh;

in html, body & #main.

Кроме того, верхний и нижний колонтитулы будут естественным образом выровнены с началом и концом, поскольку они находятся в DOM. Не стесняйтесь удалять align-self правила.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...