使内容div填充剩余高度

时间:2014-09-01 08:45:26

标签: css html5 css3

我有一个页面布局,其中我有一个fixed标题,可以在页面底部放置任何高度和页脚。我正在寻找一个css解决方案,以便内容div填充剩余的空间(垂直)。在下面的jsfiddle中,我试图这样做,但正如你所看到的,内容是在页脚后面。

HTML:

<main>
    <header>
        <ol>
            <li>bar</li>
            <li>foo</li>
        </ol>
    </header>
    <section>
        <div class="content"><div>
    </section>
    <footer></footer>
</main>

CSS:

header {
    background-color: #abc;
    z-index: 1000;
    position: fixed;
    top: 0px;
    right: 0px;
    left: 0px;
}

html, body, main, section {
    height: 100%;
    display: block;
}

.content{
   background-color: #000; 
   height: 100%;
}

footer {
    background-color: #def;
    bottom: 0;
    display: block;
    height: 54px;
    position: absolute;
   width: 100%;

}

纯css(3)有可能吗?

jsfiddle

4 个答案:

答案 0 :(得分:1)

这是一个丑陋的解决方案,但是如果你将内容div的margin-top设置为-54px并在其中添加一个带有padding-top:54px的div,它会按预期工作。

HTML:

 <div class="content"><div class="contentwrapper"></div><div>

CSS:

.contentwrapper {
    padding-top:54px;
}
.content{
   background-color: #000; 
   height: 100%;
   margin-top:-54px;
}

小提琴:http://jsfiddle.net/dohqn8m4/1/

答案 1 :(得分:1)

这是一种不同的方法:

HTML:

<header>
    <ol>
        <li>bar</li>
        <li>foo</li>
    </ol>
</header>
<main>
    <section>
        <div class="content"></div>
    </section>

    <div class="push"></div>
</main>
<footer></footer>

CSS:

    html, body {
        height: 100%;
        min-height: 100%;
        margin: 0;
        padding: 0;
        border: 0;
    }

    header {
        background-color: #abc;
        z-index: 1000;
        position: fixed;
        top: 0;
        right: 0;
        left: 0;
    }

    main {
        min-height: 100%;
        height: auto !important;
        margin-bottom: -54px;
    }

    main > section{
        padding-top: 72px;
    }

    .content {
        background-color: #000;
    }

    .push {
        height: 54px;
    }

    footer {
        background-color: #def;
        height: 54px;
    }

现在,只要内容没有填充孔页面,页脚就会始终位于底部。在那种情况下,&#34;推&#34;元素提供了足够的空间来拒绝页脚和内容的重叠。

您的内容div现在通过填充位于页脚下方。由于缺少内容,高度实际为0。在我的方法中,内容div总是适合插入的内容。

请记住 a)为了响应目的,您必须知道标题高度并使用媒体查询调整节的填充 b)页脚相同。调整推动元件的高度并调整边距底值。

jsFiddle

答案 2 :(得分:0)

尝试将content定位在页脚正上方

bottom: <footer-height>;
position: absolute;

答案 3 :(得分:0)

我使用此tutorial制作了粘性页脚。我认为使用起来既方便又方便。

CSS代码

html {
    position: relative;
    min-height: 100%;
}
body {
    margin: 0 0 100px; /* bottom = footer height */
}
footer {
    position: absolute;
    left: 0;
    bottom: 0;
    height: 100px;
    width: 100%;
}

HTML CODE

<!DOCTYPE html>
<head>
    <title></title>
</head>
<body>
    <nav></nav>
    <article>Lorem ipsum...</article>
    <footer></footer>
</body>
</html>

<强> DEMO URL