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

Double fixed header and footer - preferably dynamic

我不确定我需要的东西是否可以完成,但我想要一个 flex(或 CSS 包括 table 布局,如果可行的话)解决方案来提供双重固定 (固定 - 不粘)页眉和页脚如下:

***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,它总体上有效,但页眉和页脚内容在超过页面宽度时不会换行。如果需要,我可以考虑固定高度,但更喜欢动态高度。此外,如果重要的话,有时页眉二和页脚一不会出现在页面上。

如有任何想法,我们将不胜感激!

在这里,我认为这行得通。

你必须在那里有 max-height 否则列会扩大,我选择 100vh。

Codepen Demo

我假设您的意思不是 headers/footers 是 position:fixed,因为它们会脱离文档流并且不会影响非定位元素的高度。

相反,我假设您的意思是主要内容必须放在它们之间,无论它们的大小如何,并根据需要溢出。

我在内容部分添加了一个 'expanding' 悬停,以便您可以看到溢出生效。

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>