100% height div between header and footer

前端 未结 2 1638
予麋鹿
予麋鹿 2020-12-17 19:38

I am trying to create a webpage layout with a header/footer (100% width, 145px height), a \'main area\' between the header/footer (100% width, dynamic height), and a contain

相关标签:
2条回答
  • 2020-12-17 20:11

    I think you need position: fixed on the footer:

    footer {
        width: 100%;
        height: 30px;
        position:fixed;
        bottom:0;
    }
    
    0 讨论(0)
  • 2020-12-17 20:30

    FIDDLE: http://jsfiddle.net/3R6TZ/2/

    Fiddle Output: http://fiddle.jshell.net/3R6TZ/2/show/

    CSS

    html, body {
        height: 100%;
        margin:0;
    }
    body {
        background:yellow; 
    }
    #wrapper {
        position: relative;
        min-height: 100%;
        vertical-align:bottom;
        margin:0 auto;
        height:100%;
    }
    #header {
        width: 100%;
        height: 150px;
        background:blue;
        position:absolute;
        left:0;
        top:0;
    }
    #content {
        background:pink;
        width:400px;
        margin:0 auto -30px;
        min-height:100%;
        height:auto !important;
        height:100%;
    }
    #content-spacer-top {
        height:150px;
    }
    #content-spacer-bottom {
        height:30px;
    }
    #divFooter {
        width:100%;
        height: 30px;
        background:blue;
    }
    

    HTML

    <div id="wrapper">
        <div id="header">Header</div>
        <div id="content">
            <div id="content-spacer-top"></div>
            <div id="content-inner">
                **Content Goes Here**
            </div>
            <div id="content-spacer-bottom"></div>
        </div>
        <div id="divFooter">Footer</div>
    </div>
    

    UPDATE

    The #content-spacer-top and #content-spacer-bottom are used to pad the #content div without using padding or margin that would increase the box size past the 100% height causing problems.

    In CSS3, there is the box-sizing property (more info here) that can fix this issue, but i'm assuming you don't want to depend on CSS3 features.

    EDIT

    Added a fix and tested down to IE7

    UPDATE 2

    Alternate method using :before and :after pseudo-elements instead of the spacer divs: http://jsfiddle.net/gBr58/1/

    Doesn't work in IE7 or 6 though, and to work in IE8, a <!DOCTYPE> must be declared (according to w3schools.com), but the HTML is nice and clean

    UPDATE 3 (Sorry for so many updates)

    Updated it to work down to IE6. I don't normally bother as my company doesn't support IE6, but it was an easy fix...

    0 讨论(0)
提交回复
热议问题