在引导程序中具有可变高度的粘性页脚

Posted

技术标签:

【中文标题】在引导程序中具有可变高度的粘性页脚【英文标题】:Sticky footer with variable height in bootstrap 【发布时间】:2017-03-24 10:31:05 【问题描述】:

我正在尝试在我的网站上获得一个具有自定义高度的粘性页脚,但事实证明这比我预期的要困难得多。

这是我此刻页脚的屏幕截图:

页脚覆盖了我的联系表单,因为我已明确设置高度为 419 像素。

在内容比屏幕短的页面上,页脚可以固定在底部...但这只是因为我明确设置了高度。

这是我的 CSS 和 html

html 
    position: relative;
    min-height: 100%;


body 
    background: #ffffff;


body > .container 
    padding-bottom: 100px;


/* footer */
footer 
    position: absolute;
    bottom: 0;
    width: 100%;
    /* Set the fixed height of the footer here */
    height: 419px;
    background-color: #222;
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>

    </head>
    <body>

        <!-- navigation -->
        <nav class="navbar navbar-default">
            <div class="container">
                <div class="navbar-header">
                    <a class="navbar-brand" href="">
                        <img  src="">
                    </a>
                </div>
                <div id="navbar" class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li>
                            <a class="" href="">
                                <i class="fa fa-home" aria-hidden="true"></i>
                                Home
                            </a>
                        </li>
                        <li>
                            <a class="" href="">
                                <i class="fa fa-certificate"></i>
                                Courses
                            </a>
                        </li>
                        <li>
                            <a class="" href="">
                                <i class="fa fa-lightbulb-o"></i>
                                Our Method
                            </a>
                        </li>
                    </ul>
                    <ul class="nav navbar-nav navbar-right">
                        <li>
                            <a class="sign-in" href="">
                                Dashboard
                                <i class="fa fa-tachometer"></i>
                            </a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
        <!-- end navigation -->

        <!-- main content -->
        <main>

        </main>
        <!-- end main content -->

        <!-- footer -->
        <footer>
            <div class="container-fluid bg-footer">
                <div class="container">

                    <!-- footer menus -->
                    <div class="row">
                        <div class="col-md-3">
                            <h3>About</h3>

                        </div>
                        <div class="col-md-3">
                            <h3>Help</h3>
                            <ul class="list-unstyled">
                                <li>
                                    <a href="">
                                        Go to a class
                                    </a>
                                </li>
                                <li>
                                    <a href="">
                                        Find an order
                                    </a>
                                </li>
                                <li>
                                    <a href="">
                                        Courses
                                    </a>
                                </li>
                                <li>
                                    <a href="">
                                        Jobs
                                    </a>
                                </li>
                                <li>
                                    <a href="">
                                        Contact us
                                    </a>
                                </li>
                                <li>
                                    <a href="">
                                        About us
                                    </a>
                                </li>
                            </ul>
                        </div>
                        <div class="col-md-3">
                            <h3>Social</h3>
                            <ul class="list-unstyled">
                                <li>
                                    <h3>
                                        <i class="fa fa-facebook" aria-hidden="true"></i>
                                    </h3>
                                </li>
                                <li>
                                    <h3>
                                        <i class="fa fa-twitter" aria-hidden="true"></i>
                                    </h3>
                                </li>
                                <li>
                                    <h3>
                                        <i class="fa fa-vk" aria-hidden="true"></i>
                                    </h3>
                                </li>
                            </ul>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                                <a class="btn btn-alt btn-block" href="">
                                    Student Login
                                </a>
                            </div>
                            <div class="form-group">
                                <a class="btn btn-alt btn-block" href="">
                                    Teacher Login
                                </a>
                            </div>
                        </div>
                    </div>
                    <!-- end footer menus -->

                    <hr>

                    <!-- footer subtext -->
                    <div class="row">
                        <div class="col-md-12">
                            <span class="text-muted">
                                High quality English lessons
                                <div class="pull-right">
                                    <a href="">Privacy</a> | <a href="">Terms and Conditions</a>
                                </div>
                            </span>
                        </div>
                    </div>
                    <!-- end footer subtext -->

                </div>
            </div>

            <!-- sub footer -->
            <div class="container-fluid bg-copyright">
                <div class="container">
                    <p class="copyright">
                        &copy; 2016 Toucan-Talk.com ltd
                    </p>
                </div>
            </div>
            <!-- end sub footer -->

        </footer>
        <!-- end footer -->

    </body>
</html>

如何让页脚贴在页面底部 a).没有它重叠到我的内容和b)。无需显式设置页脚的高度。

【问题讨论】:

只需将padding-bottombody &gt; .container 增加到页脚高度.. body > .container padding-bottom: 419px; 【参考方案1】:

在您的情况下,我建议使用 Flexbox。使用 Flexbox 的一大优势是您不再需要为页脚设置特定的高度。

您只需将 CSS 更改为以下内容即可实现您想要的效果

html, body 
  height: 100%;


body 
  background: #ffffff;
  display: flex;
  flex-flow: column;


footer 
  margin-top: auto;
  background-color: #222;

【讨论】:

该死,这行得通...哇,不用大惊小怪,几乎没有任何 CSS。这是解决方案,非常感谢。 @JethroHazelhurst 不客气,很高兴能帮上忙。【参考方案2】:

如果页脚有固定高度,只需将 CSS 编辑为:

body 
    background: #ffffff;
    padding-bottom: 419px;

【讨论】:

现在正在尝试,但这并不能改变这样一个事实,即如果我的页脚高度发生变化,我将不得不编辑我的 CSS,不过感谢您的回答。 你应该避免那么多的填充。这不是一个好的答案,因为使用太多的填充会产生其他问题。 如果页脚有动态内容,您可以添加一些 javascript 来处理 CSS 规则 $('body').css('padding-bottom':$('footer').height ()+'px'); @leo 我可以期待什么样的问题,这是针对生产网站的,我想利用最佳实践解决方案,到目前为止 Mdks 解决方案有效。 不,这不是好的做法。永远不要在 100 之后使用 padding 或 maring。只有在我们不能使用其他东西的情况下。最好尝试使用位置和顶部和底部而不是这种填充解决方案。

以上是关于在引导程序中具有可变高度的粘性页脚的主要内容,如果未能解决你的问题,请参考以下文章

粘性页脚引导程序 4 [重复]

HTML:使用引导程序添加粘性页脚响应[重复]

使用带有引导程序的 flexbox 粘性页脚

Bootstrap 粘性页脚代码在高度和填充之间发生冲突

引导页脚隐藏其上方的内容

在引导程序中遇到页脚问题