使用 Angular 4 和 Bootstrap 4 在底部设置页脚(适应内容)

Posted

技术标签:

【中文标题】使用 Angular 4 和 Bootstrap 4 在底部设置页脚(适应内容)【英文标题】:Set footer on bottom (adapted to content) with Angular 4 and Bootstrap 4 【发布时间】:2018-04-26 17:12:26 【问题描述】:

¿如何使页脚停留在具有以下结构的网站底部?:

<html>
    <head>
    </head>

    <body>
        <app-root></app-root>
    </body>

</html>

所以,app-root 是 angular 的主要组件,在这个组件内部我有以下结构:

<app-navbar></app-navbar>
<div class="container">
    <div class="row">

        <div class="col-12 p-0">
            <app-information *ngIf="title == 'information'"></app-information>
            <app-form *ngIf="title == 'form'"></app-form> 
            <app-proyects *ngIf="title == 'proyects'"></app-proyects>
            <app-blog *ngIf="title == 'blog'"></app-blog>
            <app-courses *ngIf="title == 'coursess'"></cursos>
        </div>

    </div>
</div>
<app-footer></app-footer>

因此,为了便于理解,col-12 div 中的 div 的显示取决于通过按下导航栏上的按钮设置的名为 title 的变量。 情况是,并非所有这些 div 的内容都超过了屏幕大小,并且页脚向上。

在我的页脚中,我有这样的结构:

<footer class="bg-inf-blue" >
    <div class="container p-0">
        <div class="row text-white py-3">
            <div class="col-6 h6 p-0">Contact</div>
            <div class="col-6 h6">Social Media</div>
            <div class="col-2 p-0">
                <ul class="list-unstyled">
                    <li class="h6">Place 1</li>
                    <li>Place 1 address</li>
                    <li>XXX XXX-XXXX</li>
                </ul>
            </div>
            <div class="col-2">
                <ul class="list-unstyled">
                    <li class="h6">Place 2</li>
                    <li>Place 2 address</li>
                    <li>XXX XXX-XXXX</li>
                </ul>
            </div>
            <div class="col-2">
                <ul class="list-unstyled">
                    <li class="h6">Place 3</li>
                    <li>Place 3 address</li>
                    <li>XXX XXX-XXXX</li>
                </ul>
            </div>
            <div class="col-6 align-items-center">
                <a href="https://www.facebook.com/address/" target="blank"><img src="../assets/facebook-logo-button.png" ></a>
                <a href="https://twitter.com/address" target="blank"><img src="../assets/twitter-logo-button.png" ></a>
            </div>
            <div class="col-12 p-0">
                <small>Lorem ipsum dolor sit amet consectetur</small>
            </div>
        </div>
    </div>
</footer>

我需要的是,当 和 之间的内容太短而无法填满屏幕时,页脚留在屏幕底部。

如果有使用 CSS 的解决方案,我正在使用 Twitter Bootstrap 4,如果有使用 typescript 的解决方案,我正在使用 Angular 4。

【问题讨论】:

【参考方案1】:

您可以按照 Twitter v4 示例 (https://v4-alpha.getbootstrap.com/examples/sticky-footer/) 中的说明应用 sticky footer。

这是一个简短的例子:

HTML

<footer class="footer">
 ...
</footer>

CSS

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


body 
  /* Margin bottom by footer height */
  margin-bottom: 60px;


.footer 
  position: absolute;
  bottom: 0;
  width: 100%;
  /* Set the fixed height of the footer here */
  height: 60px;
  line-height: 60px;

【讨论】:

position: absolute 不是最佳解决方案,因为您应该关心具有 position:relative 的父 html 元素。我的意思是有机会得到一些错误。 好点,我为 HTML 添加了 css 样式,并添加了指向 sticky-footer.css 的链接以供参考。【参考方案2】:

有很多方法可以在底部设置页脚。 这是其中之一:

<div class="wrapper container">

    ... // your html code here

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

</div>
<app-footer></app-footer>

<style>

.wrapper
    min-height: 100%;
    margin-bottom: -170px;


* html .wrapper
    height: 100%;


.push
    height: 170px;


</style>

在我的例子中,170px 是页脚的高度。

【讨论】:

【参考方案3】:

如果我理解正确,这通常可以通过 css 来实现,传统上:

html,body
    height: 100%

对于您的示例,您可以尝试:

.container  height: 100%;

或者甚至尝试将您的 app-navbar 和 app-footer 移动到 index.html 而不是 app.component.html

【讨论】:

【参考方案4】:

同样的问题,用这个方法解决了:

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


body 
    /* 115px is the height of my footer */
    padding-bottom: 115px;


.footer  
    position: absolute;
    bottom: 0;
    width: 100%;
    padding-top: 20px;
    padding-bottom: 10px;

【讨论】:

以上是关于使用 Angular 4 和 Bootstrap 4 在底部设置页脚(适应内容)的主要内容,如果未能解决你的问题,请参考以下文章

在angular 2和bootstrap 4中使用自定义颜色实现进度条

Bootstrap 4 导航栏不会在 Angular 4 中折叠

使用 Angular 4 和 Bootstrap 4 在底部设置页脚(适应内容)

导航栏下拉菜单不适用于 Angular 和 Bootstrap 4

如何在 Angular 中使用带有 SASS 的 Bootstrap 4

无法在 Angular 的 Bootstrap 4 中切换导航栏