【问题标题】:css sticky footer without scrollbar没有滚动条的css粘性页脚
【发布时间】:2011-01-12 05:26:59
【问题描述】:

如何避免将带有粘性页脚的滚动条放在页面底部(不是窗口底部)? 当我从内容和侧边栏中删除 height=100% 时,我不再获得滚动条。但是,这样做时,我的内容和侧边栏不会填充到页脚的所有空间。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 13</title>
<style media="all" type="text/css">
* {
    margin: 0;
    padding: 0;
}
html, body, #wrap, form {
    height: 100%;
}
#wrap, #footer {
    width: 750px;
    margin: 0 auto;
}
#wrap {
    background: #cff;
}
html, body {
    color: #000;
    background: #a7a09a;
}
body > #wrap {
    height: 100%;
    min-height: 100%;
}
form {
    /*height: auto;*/
    min-height: 100%;
}
#main {
    background: #000;
    height:100%; 
    min-height:100%; 
    height: auto !important; */
}

#content {
    height:100%;
    float: left;
    padding: 10px;
    float: left;
    width: 570px;
    background: #9c9;
}
#sidebar {
    height:100%;
    float: left;
    width: 140px;
    background: #c99;
    padding: 10px;
}
#footer {
    position: relative;
    margin-top: -100px; 
    height: 100px;
    clear: both; 
    background: #cc9;
    bottom: 0;
}
.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
.clearfix {
    display: inline-block;
}
* html .clearfix {
    height: 1%;
}
.clearfix {
    display: block;
}
#header {
    /*padding: 5px 10px;*/
    background: #ddd;
}
</style>
</head>

<body>

<form id="form1" runat="server">
    <div id="wrap">
        <div id="main" class="clearfix">
            <div id="header">
                <h1>header</h1>
            </div>
            <div id="sidebar">
                <h2>sidebar</h2>
            </div>
            <div id="content">
                <h2>main content</h2>
            </div>
        </div>
    </div>
    <div id="footer">
        <h2>footer</h2>
    </div>
</form>

</body>

</html>

【问题讨论】:

  • 我在 Opera 10、IE8 和 FF3 中得到相同的结果
  • 我通常使用这个:cssstickyfooter.com 我似乎从来没有看到任何问题。

标签: css layout footer sticky-footer


【解决方案1】:

这终于是一个解决方案(我不记得我从哪里得到这个代码......它不是我的;-)):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
<title>CSS Layout - 100% height</title>
<style type="text/css">
html, body {
    margin: 0;
    padding: 0;
    height: 100%; /* needed for container min-height */;
    background: gray;
    font-family: arial,sans-serif;
    font-size: small;
    color: #666;
}
div#container {
    position: relative; /* needed for footer positioning*/;
    margin: 0 auto;
/* center, not in IE5 */    width: 750px;
    background: #f0f0f0;
    height: auto !important; /* real browsers */;
    height: 100%; /* IE6: treaded as min-height*/;
    min-height: 100%; /* real browsers */
}
div#header {
    padding: 1em;
    /*background: #ddd url("../csslayout.gif") 98% 10px no-repeat;*/
    border-bottom: 6px double gray;
}
div#content {
    padding: 1em 1em 5em; /* bottom padding for footer */
}
div#footer {
    position: absolute;
    width: 100%;
    bottom: 0; /* stick to bottom */;
    background: #ddd;
    border-top: 6px double gray;
}
</style>
</head>

<body>

<div id="container">
    <div id="header">
        entete  </div>

    <div id="content">
        contenu </div>
    <div id="footer">
        pied de page
    </div>
</div>

</body>

</html>

【讨论】:

    【解决方案2】:

    我使用具有 100% 最小高度的容器 div 完成了这项工作。然后,我在容器中有页面内容和页脚 div。这是我的 HTML:

     <div id="MainContainer">
            <div id="FullPage">
            </div>
            <div id="Footer">
            </div>
     </div>
    

    这是我对应的 CSS:

    html, body, #MainContainer
    {
        min-height: 100%; /*Sets the min height to the height of the viewport.*/
        height: 100%; /*Effectively, this is min height for IE5+/Win, since IE wrongly expands an element to enclose its content.  This mis-behavior screws up modern browsers*/
        margin: 0;
        padding: 0;
    }
    
    html > body #MainContainer
    {
        height: auto; /*this undoes the IE hack, hiding it from IE using the child selector*/
    }
    
    #MainContainer
    {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
    }
    
    #FullPage
    {
        height: auto;
        width: 100%;
        min-height: 100%;
        margin: 0;
        padding: 0 0 25px 0;
        overflow: hidden;
    }
    #Footer
    {
        clear: both;
        left: 0;
        width: 100%;
        height: 20px;
        position: absolute;
        bottom: 0;
    }
    

    【讨论】:

    • 我试过你的代码......但是在添加了一些内容之后,即使内容只占据了窗口的一部分,滑块也会出现。这是我与您的 css 一起使用的 html:

      content

      content

      content

      content

      content

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2014-09-14
    • 2019-08-17
    • 2011-05-24
    • 2014-07-02
    • 2012-02-28
    相关资源
    最近更新 更多