页脚低于内容,但如果内容不够,则不会浮动半空

时间:2014-09-04 16:57:38

标签: html css twitter-bootstrap-3 footer

我收到了这段代码:

DEMO:http://jsfiddle.net/z21nz89d/2/

HTML:

  <nav class="navbar navbar-default" role="navigation">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Brand</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li class="divider"></li>
            <li><a href="#">Separated link</a></li>
            <li class="divider"></li>
            <li><a href="#">One more separated link</a></li>
          </ul>
        </li>
      </ul>
      <form class="navbar-form navbar-left" role="search">
        <div class="form-group">
          <input type="text" class="form-control" placeholder="Search">
        </div>
        <button type="submit" class="btn btn-default">Submit</button>
      </form>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#">Link</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li class="divider"></li>
            <li><a href="#">Separated link</a></li>
          </ul>
        </li>
      </ul>
   </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>
    <div class="container">
        <p>Here comes some content.</p>
        <p>Here comes some content.</p>
        <p>Here comes some content.</p>
        <p>Here comes some content.</p>
        <p>Here comes some content.</p>
    </div>
    <footer>
        <div class="container">
            <div class="row">
                <div class="col-md-8">
                    <p>Some footer-content</p>
                    <p>Some footer-content</p>
                    <p>Some footer-content</p>
                </div>
                <div class="col-md-4">
                    <p>Some footer-content</p>
                    <p>Some footer-content</p>
                </div>
            </div>
        </div>
    </footer>

CSS:

footer {
    background-color: #eee;
    padding-top: 15px;
    padding-left: 15px;
}

这是我所拥有的最基本的东西,但你会明白这一点。 正如您所看到的,页脚位于空中某处。 我可以将它定位为绝对,并使其容易粘,但由于各种原因,我不希望这样。

我希望页脚低于整个内容(可以说,列为最后一个),但是,如果内容不足,我需要将页脚放在底部:0和左:0。

我不知道如何做到这一点。我的第一个猜测是使用JavaScript来查看有多少空间以及网站是否可滚动。

6 个答案:

答案 0 :(得分:18)

这是我发现制作一个好页脚的最简单方法。将您的页脚中的所有内容包装在&#34;包装中&#34; DIV。然后将你的html和身高设置为100%,包装上的最小高度为100%。接下来,您需要为此包装器提供底部边距和底部填充,该封面与页脚的高度相同。它就像一个魅力。

Demo here

html, body {
    height: 100%;
}
.wrapper {
    min-height: 100%;
    margin-bottom: -100px;
    padding-bottom: 100px;
}
footer {
    height: 100px;
}

答案 1 :(得分:5)

答案 2 :(得分:2)

如果你真的想用javascript方式做,你可以使用这段代码实现它:

http://jsfiddle.net/z21nz89d/6/

$(function() {
    var windowHeight = $(window).height();
    var contHeight = $(".main-container").height();
    var footHeight = $("footer").height();
    var testHeight = windowHeight - footHeight;

    if (contHeight < testHeight) {
        $("footer").css("bottom", "0");
        $("footer").css("left", "0");
     }
}); 

确保添加以下css规则,HTML,BODY的内容非常重要。

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

你还必须将所有你的上下文包括在一个div的div中,一个div,比如说,“main-container”,这样你就可以测试整个身体的高度与内容的高度减去页脚,明白吗?

这就是JSFiddle。

请注意,这实际上不是这样做的语义方式。在我看来,纯粹的css粘性页脚会更好。如果你不能使用,这将有效。

答案 3 :(得分:2)

您可以使用此响应式css代码,它可以在所有浏览器中使用,并且可以根据浏览器大小在浏览器调整大小时进行更改。

Live Working Demo

HTML代码:

<div id="wrapper">

    <div id="header">
        Header is here
    </div><!-- #header -->

    <div id="content">
        Content is here
    </div><!-- #content -->

    <div id="footer">
        Footer is here
    </div><!-- #footer -->

</div><!-- #wrapper -->

CSS代码:

  html,
body {
    margin:0;
    padding:0;
    height:100%;
}
#wrapper {
    min-height:100%;
    position:relative;
}
#header {
    background:#ededed;
    padding:10px;
    text-align:center;
}
#content {
    padding-bottom:100px; /* Height of the footer element */
    text-align:center;
}
#footer {
    background:#ffab62;
    width:100%;
    height:100px;
    position:absolute;
    bottom:0;
    left:0;
    text-align:center;
}

<强>结果:

result

答案 4 :(得分:1)

如果页脚的高度未知,最好使用flex,其中包含以下内容:

<body>
    <header></header>
    <div class="content"></div>
    <footer></footer>
</body>

对于CSS,只需要这个:

body { 
   display: flex;
   min-height: 100vh;
   flex-direction: column;
}
.content {
   flex: 1;
}

你不需要设置display:flex to body,它也可以是body内部的包装器。

请记住,这可能无法按预期在IE上运行(请参阅下面的CanIUse链接)。尽管如此,它对大多数人来说都很有用!

CanIUse link
有关示例,请参阅this link

答案 5 :(得分:0)

如今,使用position: sticky 轻松实现。参见this reference

根据文档的正常流程放置元素,然后基于top,right值相对于其最接近的滚动祖先和包含表相关元素的包含块(最近的块级祖先)进行偏移。 ,底部和左侧。偏移量不会影响其他任何元素的位置。

此值始终创建一个新的堆栈上下文。请注意,粘性元素“粘贴”到其最接近的祖先,该祖先具有“​​滚动机制”(在隐藏,滚动,自动或覆盖溢出时创建),即使该祖先不是最近的实际滚动祖先。这有效地抑制了任何“粘性”行为(请参阅W3C CSSWG上的Github问题)。

Examine this pen中的示例。