【发布时间】:2019-03-14 03:55:55
【问题描述】:
我目前正在开发一个由页眉、页脚和内容部分组成的单页应用程序。内容部分应始终填充页眉和页脚之间的可用空间,如果视口太小,用户应该能够滚动整个页面。这意味着页脚不会以这种方式粘滞。
将所有三个部分放在 flexbox 中并将 flex: auto 1 1 设置为内容不会产生任何效果,因为 IE11 存在容器具有 100% 最小高度的 flex-elements 的问题。
您知道使这种布局成为可能的任何技术吗?
更新:
为了说明问题,我提供了一个 sn-p。
更新 2:
由于我想根据当前路线将视图(.view 类)元素淡入前一个元素,因此我必须在内容元素上使用position: relative。不幸的是flex-shrink: 0 不再生效。
html, body {
margin: 0;
height: 100%;
min-height: 100vh;
background: #000000;
color: #EFEFEF;
font-family: Segoe UI, Roboto, Helvetica;
}
#app {
display: flex;
flex-direction: column;
height: 100%;
min-height: 100%;
overflow-y: visible;
-webkit-overflow-scrolling: touch;
}
.header-section {
flex-shrink: 0;
}
.footer-secton {
flex-shrink: 0;
}
.content {
position: relative;
flex: auto 1 1;
background: rgba(64, 124, 214, 0.5);
}
.view {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
}
<div id ="app" class="container">
<header class="header-section">
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
</header>
<main class="content">
<div class="view">
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo
dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero
eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet.
</div>
</main>
<footer class="footer-section">
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
</footer>
</div>
【问题讨论】:
-
能把总的代码贴一下吗?
-
我提供了一个片段来说明问题。
-
使用jQuery设置内容和标题最小高度以覆盖浏览器。然后它会自动转到剩余空间。