css - 如何在纯 CSS 中定义可变高度的粘性页脚?

标签 css

这里要注意的关键是页脚的高度不是固定的,而是会随着内容的变化而变化。

当我说“粘性页脚”时,我将其理解为“永远不会高于视口(viewport)底部的页脚,但如果有足够的内容,它将被隐藏直到用户向下滚动到足以看到它。”

另请注意,我不需要支持旧版浏览器。如果 CSS display: table 和相关属性在这里有所帮助,那么它们就是公平的游戏。

最佳答案

这里的所有其他解决方案都已过时,要么使用 JavaScript,要么使用 table hacks。

随着 CSS flex model 的出现,解决可变高度的粘性页脚问题变得非常非常容易:虽然 Flexbox 主要以水平方向布局内容而闻名,但实际上 Flexbox 也适用于垂直布局问题。您所要做的就是将垂直部分包裹在一个 flex 容器中,然后选择要扩展的部分。它们会自动占用其容器中的所有可用空间。

注意标记和 CSS 是多么简单。没有表格黑客或任何东西。

flex 模型是supported by 96%+ of the browsers今天在使用。

html, body {
  height: 100%;
  margin: 0; padding: 0;  /* to avoid scrollbars */
}

#wrapper {
  display: flex;  /* use the flex model */
  min-height: 100%;
  flex-direction: column;  /* learn more: http://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ */
}

#header {
  background: yellow;
  height: 100px;  /* can be variable as well */
}

#body {
  flex: 1;
  border: 1px solid red;
}

#footer{
  background: lime;
}
<div id="wrapper">
  <div id="header">Title</div>
  <div id="body">Body</div>
  <div id="footer">
    Footer<br/>
    of<br/>
    variable<br/>
    height<br/>
  </div>
</div>

关于css - 如何在纯 CSS 中定义可变高度的粘性页脚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825879/

相关文章:

css - float 元素在 Webkit 浏览器中呈现不准确

html - 谷歌搜索结果页面上有一些隐藏的元素是为了什么目的?

jquery - 导航下方/后方的 Bootstrap 内容

javascript - 如何删除某个div之后的div中的所有元素

html - 搜索引擎中的术语泡沫

php - Drupal 五星级模块,根据变量值动态更改 star.gif 图像

html - 字体拉伸(stretch)属性不适用于 IE11

javascript - FancyBox 加载 HTML 页面

javascript - 页眉没有填满整个页面?

javascript - 结合javascript与图像 Sprite