html - Flexbox 粘性页脚 - 'Flex: 1' 无法填充高度

标签 html css flexbox sticky-footer

我现在正在尝试为动态高度页脚测试 flexbox 粘性页脚方法,这是我有一段时间遇到的问题,但我遇到了主要部分没有扩展以填充的问题在将“min-height: 100vh”和“flex-direction: column”应用到包含主体之后,使用“flex: 1”的窗口的全高。

这让页脚仍然在页面的一半位置,我在阅读它之后无法弄清楚为什么这不应该起作用。

HTML:

    <body>

    <div id="wrapper">

        <main>

            <div id="pageContent">

                <h1>Page Content</h1>

                <h2>Page Content</h2>

                <h3>Page Content</h3>

                <h4>Page Content</h4>

            </div>

        </main>

        <footer>

            <row>

                <p>Footer Content</p>

                <p>Footer Content</p>

                <p>Footer Content</p>

                <p>Footer Content</p>

            </row>

        </footer>

    </div>

</body>

CSS:

html, body
{
margin: 0;
padding: 0;
max-width: 100%;
background: #1a1a1a;
}

body
{
display: flex;
min-height: 100vh;
flex-direction: column;
}

main
{
width: 100%;
margin: 0;
padding: 50px 10%;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
flex: 1;
}

main > #pageContent
{
height: 100%;
width: 100%;
margin: 0;
}

footer
{
height: auto;
background: #0d0d0d;
padding: 0 10%;
margin: 0;
}

footer > row
{
display: flex;
}

footer > row > p
{
flex-grow: 1;
flex-basis: 0;
text-align: center;
padding: 25px 0;
margin: 0;
}

最佳答案

您还没有将 display:flex 应用到 #wrapper div。

Flexbox 不是继承的。

html,
body {
  margin: 0;
  padding: 0;
  max-width: 100%;
}
body {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}
#wrapper {
  flex: 1;
  display: flex;
  flex-direction: column;
}
main {
  width: 100%;
  margin: 0;
  padding: 50px 10%;
  box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  flex: 1;
}
main > #pageContent {
  height: 100%;
  width: 100%;
  margin: 0;
}
footer {
  height: auto;
  background: lightgreen;
  padding: 0 10%;
  margin-top: auto;
}
footer > row {
  display: flex;
}
footer > row > p {
  flex-grow: 1;
  flex-basis: 0;
  text-align: center;
  padding: 25px 0;
  margin: 0;
}
<div id="wrapper">

  <main>

    <div id="pageContent">

      <h1>Page Content</h1>

      <h2>Page Content</h2>

      <h3>Page Content</h3>

      <h4>Page Content</h4>

    </div>

  </main>

  <footer>

    <row>

      <p>Footer Content</p>

      <p>Footer Content</p>

      <p>Footer Content</p>

      <p>Footer Content</p>

    </row>

  </footer>

</div>

Codepen Demo

关于html - Flexbox 粘性页脚 - 'Flex: 1' 无法填充高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42164334/

相关文章:

css - 如何在使用flexbox,flex-wrap和last-of-type的同时从最后一个元素中删除右边距

html - HTML SELECT 元素是否需要 value 属性?

html - CSS Shadow 将两个盒子合二为一

html - 在 CSS 中向下移动标题

javascript - PHP - 如果 div 类出现在页面上 - 隐藏单独的元素

html - 创建响应式、流苏(重复三 Angular 形)CSS 边框

html - HTML5 视频的 z-index 分层 (ipad)

html - 如何将 svg 元素放置在图像宽度的中间

php - 使用 PHP 在最后一个 SQL 行上使用不同的 CSS 样式

css - Flexbox 不适用于 Safari 9.1.1