Angular 2 粘性页脚实现
Angular 2 sticky footer impementation
我希望我的页脚成为粘性页脚并尝试遵循 css 技巧负边距技巧,但没有奏效。我试图在下面的 plunker 代码中模拟我的 angular2 应用程序。我希望贴纸不是固定的而是粘性的,并在主要部分中有更多内容时转到底部。请注意,页脚显示在主要部分的数据上方。
http://plnkr.co/edit/WSUC4xLMWH6fY77UyFqI?p=preview&open=app%2Fapp.component.ts
app.component:
<nav-bar></nav-bar>
<section class="main">
<div class="main-container">
Display my router-outlet here
<ul>
<li *ngFor="let hero of heroes">
{{ hero }}
</li>
</ul>
</div>
</section>
<footer-component></footer-component>
感谢任何修复和向下移动页脚的帮助。
有几种方法可以实现这一点。我假设您已经尝试过其中之一:CSS-tricks - Sticky footer, five ways.
为此,您需要:
- 删除页脚和内容的绝对定位。
- 从正文中删除默认的顶部和底部边距。
- 如果您不使用 flexbox 或网格选项,则将除页脚之外的所有内容放在 one 元素 内(这样您可以确保该元素加上页脚的总高度至少是视口的高度).
Here 是带有粘性页脚的 Angular2 应用程序的实现。
粘性页脚是通过将所有主要内容包装在一个 div 中并使用 calc()
将其最小高度设置为 100vh
减去页脚高度来实现的。
我认为为您的 .main 块制作 position:absolute 不是一个好主意。页脚的绝对定位就足够了。
尝试这样的事情
html {
height: 100%;
}
body {
min-height: 100%;
position: relative;
}
.main {
min-height: 100%;
padding-bottom: 55px;
}
#footer {
position: absolute;
bottom: 0;
}
同时从 .main 块样式中删除边距和填充顶部
您仍然可以按照
https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/
只需将此代码添加到 styles.scss
html,
body {
height: 100%;
}
在你的app.component.scss
:host {
display: flex;
min-height: 100%; // used percent instead of vh due to safari bug.
flex-direction: column;
}
.Site-content {
flex: 1;
}
在你的app.component.html
<header>...</header>
<main class="Site-content">..</main>
<footer>...</footer>
您只需编辑 2 个文件:
index.html:
<!-- Full height body -->
<body class="pt-3 h-100">
<!-- Full height app container, and also use flexbox columns -->
<app-root class="d-flex flex-column h-100"></app-root>
</body>
app.component.html:
<router-outlet></router-outlet>
<!-- Footer top margin must be set on auto -->
<app-footer class="mt-auto"></app-footer>
我希望我的页脚成为粘性页脚并尝试遵循 css 技巧负边距技巧,但没有奏效。我试图在下面的 plunker 代码中模拟我的 angular2 应用程序。我希望贴纸不是固定的而是粘性的,并在主要部分中有更多内容时转到底部。请注意,页脚显示在主要部分的数据上方。
http://plnkr.co/edit/WSUC4xLMWH6fY77UyFqI?p=preview&open=app%2Fapp.component.ts
app.component:
<nav-bar></nav-bar>
<section class="main">
<div class="main-container">
Display my router-outlet here
<ul>
<li *ngFor="let hero of heroes">
{{ hero }}
</li>
</ul>
</div>
</section>
<footer-component></footer-component>
感谢任何修复和向下移动页脚的帮助。
有几种方法可以实现这一点。我假设您已经尝试过其中之一:CSS-tricks - Sticky footer, five ways.
为此,您需要:
- 删除页脚和内容的绝对定位。
- 从正文中删除默认的顶部和底部边距。
- 如果您不使用 flexbox 或网格选项,则将除页脚之外的所有内容放在 one 元素 内(这样您可以确保该元素加上页脚的总高度至少是视口的高度).
Here 是带有粘性页脚的 Angular2 应用程序的实现。
粘性页脚是通过将所有主要内容包装在一个 div 中并使用 calc()
将其最小高度设置为 100vh
减去页脚高度来实现的。
我认为为您的 .main 块制作 position:absolute 不是一个好主意。页脚的绝对定位就足够了。 尝试这样的事情
html {
height: 100%;
}
body {
min-height: 100%;
position: relative;
}
.main {
min-height: 100%;
padding-bottom: 55px;
}
#footer {
position: absolute;
bottom: 0;
}
同时从 .main 块样式中删除边距和填充顶部
您仍然可以按照 https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/
只需将此代码添加到 styles.scss
html,
body {
height: 100%;
}
在你的app.component.scss
:host {
display: flex;
min-height: 100%; // used percent instead of vh due to safari bug.
flex-direction: column;
}
.Site-content {
flex: 1;
}
在你的app.component.html
<header>...</header>
<main class="Site-content">..</main>
<footer>...</footer>
您只需编辑 2 个文件:
index.html:
<!-- Full height body -->
<body class="pt-3 h-100">
<!-- Full height app container, and also use flexbox columns -->
<app-root class="d-flex flex-column h-100"></app-root>
</body>
app.component.html:
<router-outlet></router-outlet>
<!-- Footer top margin must be set on auto -->
<app-footer class="mt-auto"></app-footer>