页脚div不考虑CSS高度或最小高度

时间:2013-04-11 10:43:03

标签: css html

好的,我之前提出了一个问题:

How to make a div fill the remaning vertical space using css

得到了一个我现在一直在玩的答案:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <style type="text/css" media="screen">

            html, body{
                padding: 0;
                margin: 0 auto;
                height: 100%;
            }

            #header {
                float: top;
                width: 100%;
                height: 15%;
                background-color: green;
            }

            #navbar {
                float: left;
                width: 20%;
                height: 70%;
                background-color: red;
            }

            #content {
                float: right;
                width: 80%;
                height: 70%;
                background-color: blue;
            }
            #footer {
                float: bottom;
                width: 100%;
                height: 15%;
                background-color: yellow;
            }

        </style>
    </head>
    <body>
        <div id="header"> Header </div>
        <div id="navbar"> Nav Bar </div>
        <div id="content"> Body </div>
        <div id="footer"> Footer</div>
    </body>
</html>

现在ultimatley Id希望实现这一目标:

enter image description here

它涵盖了100%的屏幕,但我可以选择这些百分比如何传播,即:

html, body{
    padding: 0;
    margin: 0 auto;
    height: 100%;
}

#header {
    float: top;
    width: 100%;
    height: 15%;
    background-color: green;
}

#navbar {
    float: left;
    width: 20%;
    height: 70%;
    background-color: red;
}

#content {
    float: right;
    width: 80%;
    height: 70%;
    background-color: blue;
}
#footer {
    float: bottom;
    width: 100%;
    height: 15%;
    background-color: yellow;
}

因为你可以将html和body的高度设置为100%,从而填满屏幕。标题的高度百分比为15%,导航条和正文的百分比为70%,页脚的百分比为15%,总计将构成可见屏幕的100%......

现在除了我的页脚外,一切似乎都很好:

#footer {
    float: bottom;
    width: 100%;
    height: 10%;
    background-color: yellow;
}

如果我删除height: 15%,那么我可以看到我的背景颜色为黄色:

enter image description here

如果我不是它的一些灰色。并且看起来占据了大约20%的屏幕:

enter image description here

所以基本上我如何让我的div占据我指定的正确身高百分比?

我希望我有意义。

提前致谢。

2 个答案:

答案 0 :(得分:1)

你不能漂浮到顶部或底部。那不存在。因此,您必须从页眉和页脚中删除它。

通过执行以下操作清除页脚:

footer {
  clear: both;
}

答案 1 :(得分:1)

你的问题是没有:

float:top;

float:bottom;

您需要做的是float:left;

这里是您的代码与更新的复制和粘贴:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <style type="text/css" media="screen">

            html, body{
                padding: 0;
                margin: 0 auto;
                height: 100%;
            }

            #header {
                float: left;
                width: 100%;
                height: 15%;
                background-color: green;
            }

            #navbar {
                float: left;
                width: 20%;
                height: 70%;
                background-color: red;
            }

            #content {
                float: right;
                width: 80%;
                height: 70%;
                background-color: blue;
            }
            #footer {
                float: left;
                width: 100%;
                height: 15%;
                background-color: yellow;
            }

        </style>
    </head>
    <body>
        <div id="header"> Header </div>
        <div id="navbar"> Nav Bar </div>
        <div id="content"> Body </div>
        <div id="footer"> Footer</div>
    </body>
</html>