Нижний колонтитул Flexbox не укладывается под другие элементы div - PullRequest
2 голосов
/ 01 апреля 2019

Я создал макет с использованием css и Flexbox, проблема заключается в том, что div в нижнем колонтитуле отображается в нижней части страницы при загрузке, но содержимое выходит за его пределы, поэтому при прокрутке нижний колонтитул просто плавает в середине страницы.Я не уверен, что изменить.

Я изменил нижний колонтитул на липкий, а нижний на 0px.Это вроде работало с настройкой полей других элементов, но это не очень чисто.Я надеялся продолжать использовать атрибуты flexbox и просто иметь их в стеке, но это, похоже, не работает?Я также скорректировал минимальные и максимальные высоты других элементов, но как только окно сжимается до минимальной высоты, нижний колонтитул просто перемещается поверх остального содержимого.

Ссылка на код JSFiddle

.footer{
height:40px;
display:flex;
align-items:center;
justify-content:center;
width:100%;
background-color:purple;
}

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

Ответы [ 3 ]

1 голос
/ 01 апреля 2019

Это высота, установленная в вашем классе .content.Измените height: calc(100vh - 100px) на min-height: calc(100vh - 100px)

Если вы не хотите, чтобы нижний колонтитул и заголовок были всегда видны, вы можете просто добавить overflow: auto, чтобы прокрутить содержимое

0 голосов
/ 01 апреля 2019

Чтобы сделать эту работу, нужно сделать несколько вещей:

  • Изначально прокрутка происходила на теле.Я добавил overflow: hidden на теле и overflow-y: auto в div с классом "bodywrap".

  • Я добавил позицию sticky и нижний 0, но с префиксами поставщика:

bottom: 0;
position: -webkit-sticky;
position: -moz-sticky;
position: -ms-sticky;
position: -o-sticky;
  • Я также сделал div с классом "bodywrap" высотой, равной 100vh минус высота нижнего колонтитула (чтобы содержимое прокрутки не обрезалось придно).Возможно, вы захотите установить переменную sass или что-то подобное для этой высоты 40px.
height: calc(100vh - 40px);

Вот демонстрация новой версии:

jsfiddle.net / webwhizjim /6f84b7su / 3 /

0 голосов
/ 01 апреля 2019

Удалить height: calc(100vh - 100px); из .content класс

body,
html {
  height: 100%;
  width: 100%;
  padding: 0;
  margin: 0;
}

.bodywrap {
  display: flex;
  flex-wrap: wrap;
  align-content: space-between;
  
  background-color: black;
}
.header {
  display: flex;
  justify-content: space-between;
  width: 100%;
  height: 60px;
  background-color: brown;
}
.hleft {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 250px;
  background-color: lightgreen;
}
.hmid {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-grow:1;
  font-size: calc(1.5vw);
  background-color: orange;
}
.hright {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 400px;
  background-color: pink;
}
.content {
  display: flex;
  
  justify-content: space-between;
  background-color: darkblue;
}
.lmenu {
  display: flex;
  width: 250px;
  flex-wrap: wrap;
  align-content: space-between;
  height: 100%;
  min-height: 600px;
  background-color: lightgrey;
  overflow: hidden;
}
.ltop {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 150px;
  width: 100%;
  background-color: blue;
}
.lmid {
  height: 50px;
  width: 100%;
  background-color: green;
}
.lbot {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  width: 100%;
  background-color: yellow;
}
.rmaincont {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  width: calc(100vw - 250px);
  background-color: grey;
}
.note {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: lightblue;
  height: 50px;
}
.main {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  height: calc(100vh - 50px);
  min-height: 550px;
  width: 100%;
  padding-left: 20px;
  background-color: red;
}
.footer {
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  background-color: purple;
}
<!DOCTYPE html>
<html>

<head>
  <title>Mid-Valley Intranet</title>
  <link rel="stylesheet" type="text/css" href="css/cstyle.css">
</head>

<body>

  <div class="bodywrap">

    <header class="header">
      <div class="hleft">Left</div>
      <div class="hmid">Mid</div>
      <div class="hright">Right</div>
    </header>

    <div class="content">
      <div class="lmenu">
        <div class="ltop">
          Top
        </div>
        <div class="lmid">
          Mid
        </div>
        <div class="lbot">
          Bot
        </div>
      </div>
      <div class="rmaincont">
        <div class="note">
          Notice
        </div>
        <div class="main">
          Main Content
        </div>
      </div>
    </div>

    <footer class="footer">
      Footer Text
    </footer>

  </div>

</body>

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