双固定页眉和页脚 - 最好是动态的

时间:2016-04-22 13:40:18

标签: css flexbox tablelayout

我不确定我的需求是否可以完成,但我喜欢flex(或包括表格布局的CSS,如果能够工作)解决方案提供双固定(固定 - 不粘)页眉和页脚如下:

***header one - fixed - dynamic height***
***header two - fixed - dynamic height***
***content - scrolls as needed***
***fixed one - fixed - dynamic height***
***footer two - fixed - dynamic height***

我花了好几天搜索和尝试的东西,可能最接近this js fiddle整体工作,除了页眉和页脚内容超过页面宽度时不会换行。如果需要,我可以考虑固定的高度,但更喜欢动态。此外,如果重要,有时标题页眉和页脚1将不在页面上。

任何想法都表示赞赏!

1 个答案:

答案 0 :(得分:1)

在这里,我认为这很有效。

你必须有最大高度,否则列会扩展,我选择100vh。

Codepen Demo

我假设您并不意味着页眉/页脚是position:fixed,因为它们将不在文档流中,并且不会影响未定位元素的高度。

相反,我认为你的意思是主要内容必须适合它们,无论它们的大小和所需的溢出。

我已经添加了一个'扩展'将鼠标悬停在内容部分,以便您可以看到溢出生效。



body {
  padding: 0;
  margin: 0;
}
.container {
  height: 100vh;
  max-height: 100vh;
  width: 80%;
  margin: auto;
  display: flex;
  flex-direction: column;
}
div {
  flex: 0 0 auto;
}
.one {
  background: lightblue;
}
.two {
  background: lightgreen;
}
main {
  flex: 1 1 auto;
  overflow-Y: auto;
  background: pink;
}
main:hover .expander {
  height: 1000px;
}
p {
  padding: 0 1em;
  margin: 0;

<div class="container">
  <div class="header one">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vitae, alias mollitia. Laborum et cupiditate</p>
  </div>
  <div class="header two">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ex excepturi molestiae voluptates nesciunt, recusandae error,</p>
  </div>
  <main>
    <div class="expander"></div>
  </main>
  <div class="footer one">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur incidunt, esse quaerat illum ipsa. Reiciendis corrupti aliquid placeat</div>
  <div class="footer two">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorum rerum tempore dolor tenetur expedita eligendi nemo numquam veniam laboriosam.</p>
  </div>
</div>
&#13;
&#13;
&#13;