当我不使用 flexbox 页面布局时,如何让页脚占据剩余的高度?

Posted

技术标签:

【中文标题】当我不使用 flexbox 页面布局时,如何让页脚占据剩余的高度?【英文标题】:How do I make my footer take up the remaining height when I'm not using a flexbox page layout? 【发布时间】:2018-10-09 22:17:59 【问题描述】:

我想创建一个页脚来占用我页面上剩余的未使用空间。我找到了这个例子——Make a div fill the height of the remaining screen space,但它使用了弹性框,我在当前页面中没有使用它:

html 
  height: 100%;


body 
  margin: 0;
  text-align: center;
  height: 100%;


footer 
  background-color: #003162;
  padding: 5px;
  height: 100%;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 80%;


footer a 
  color: #fdb515;
<header>
  <div id="banner">
    Header
  </div>
</header>

<div id="main">Content</div>

<footer><a href='#'>Terms of Service</a></footer>

奇怪的是页脚占用了太多空间。即使这不是我所要求的,它也会导致滚动 - https://jsfiddle.net/g7Ldc7pt/2/ 。如何告诉页脚占用剩余的可见空间?如果内容不可见但全部都在那里,我只想要一个滚动条。

【问题讨论】:

【参考方案1】:

使用网站剩余部分制作页脚的唯一方法是 1.为标题和内容设置特定的高度和 2. 设置页脚高度为“calc(100% - (HEIGHT_OF_HEADER + HEIGHT_OF_CONTENT) 我也用 Javscript 尝试过,但没有机会...... 提示:在全页模式下使用我的代码

html 
    height: 100%;


body 
    margin: 0;
    text-align: center;
    height: 100%;


header
  height: 60px;


#main
  height: 400px



footer 
    background-color: #003162;
    padding: 5px;
    height: calc(100% - 470px);
    font-family: Arial, Helvetica, sans-serif;
    font-size: 80%;


footer, footer a 
        color: #fdb515;
<header>
  <div id="banner">
    Header
  </div>
</header>

<div id="main">Content</div>

<footer><a href='#'>Terms of Service</a></footer>

【讨论】:

所以你是说除非我知道标题和内容的具体高度(我不知道),否则我的要求是不可能的?【参考方案2】:

唯一的non-flex & non-grid dynamic 解决方案可以使用 parent 上的 display: table 和 on 上的 display: table-row 子元素

html, body 
  height: 100%; /* mandatory */


body 
  display: table; /* added */
  width: 100%; /* added  */
  margin: 0;
  text-align: center;


footer 
  display: table-row; /* added */
  height: 100%; /* mandatory */
  background-color: #003162;
  /*padding: 5px; has no effect, that's why you need to put it on the "td" child */
  font-family: Arial, Helvetica, sans-serif;
  font-size: 80%;


footer a 
  display: table-cell; /* added */
  padding: 5px; /* added */
  color: #fdb515;
<header>
  <div id="banner">
    Header
  </div>
</header>

<div id="main">Content</div>

<footer><a href='#'>Terms of Service</a></footer>

【讨论】:

以上是关于当我不使用 flexbox 页面布局时,如何让页脚占据剩余的高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何让页脚留在网页底部?

如何让页脚留在网页底部?

如何让页脚留在网页底部?

当其他元素居中对齐时,使用 Flexbox 将页脚与页面底部对齐

如何让此页脚与 textarea 对齐? Flexbox 似乎没有这样做

如何在我的 WordPress 主题上获得粘性页脚?