2017-02-10 15 views
0

Я пытаюсь протестировать метод гибких меток flexbox на данный момент для нижнего колонтитула с динамической высотой, с чем-то, с чем у меня были проблемы некоторое время, но у меня возникают проблемы с тем, что основной раздел не расширяется, чтобы заполнить всю высоту окна, используя «flex: 1», после применения «min-height: 100vh» и «flex-direction: column» к содержащемуся телу.Flexbox Sticky Footer - '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; 
} 

ответ

3

Вы не применили 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

0

Удалить 'обертку' ..

<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> 

http://www.codeply.com/go/X8vFjgYQie