【发布时间】:2018-07-25 17:14:39
【问题描述】:
以下网格布局在最新版本的 Chrome、Firefox、Opera、IE 10/11 和 Edge 中运行良好。手头的唯一问题是,对于提到的三个微软浏览器,当内容超出屏幕大小时页脚不会开始滚动,而是固定在页面中间。换句话说,较长的内容会覆盖页脚。
在过去的几天里,我一直在做大量的研究。不幸无济于事。许多提议的解决方案通过将页脚移到包装器之外来工作,但是,我正在寻找一种适合页面给定标记的技术。
我想这很可能是一些身高问题,但由于我没有尝试的想法,我决定将这些东西列入此列表。也许你们中的一个可以给我一个火花。
感谢任何有关如何处理此问题的指针。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
width: 100%;
height: 100%;
}
body {
min-height: 100%;
height: 100%;
}
/* main grid layout start */
.wrapper {
height: 100vh;
display: grid;
display: -ms-grid;
grid-template-columns: 10% 80% 10%;
grid-template-rows: 45px 50px 1fr 50px;
grid-template-areas: "header header header" "navigation navigation navigation" "column-left column-center column-right" "footer footer footer";
min-height: 100vh;
-ms-grid-columns: 10% 80% 10%;
-ms-grid-rows: 45px 50px 1fr 50px;
}
.item-header {
background-color: pink;
grid-area: header;
-ms-grid-row: 1;
-ms-grid-column: 1;
-ms-grid-column-span: 3;
}
.item-nav {
background-color: silver;
grid-area: navigation;
-ms-grid-row: 2;
-ms-grid-column: 1;
-ms-grid-column-span: 3;
}
.item-leftcol {
background-color: skyblue;
grid-area: column-left;
-ms-grid-row: 3;
-ms-grid-column: 1;
}
.item-centercol {
grid-area: column-center;
-ms-grid-row: 3;
-ms-grid-column: 2;
}
.item-rightcol {
background-color: tomato;
grid-area: column-right;
-ms-grid-row: 3;
-ms-grid-column: 3;
}
.item-footer {
background-color: green;
text-align: center;
padding: 10px;
grid-area: footer;
-ms-grid-row: 4;
-ms-grid-column: 1;
-ms-grid-column-span: 3;
display: flex;
display: -ms-flexbox;
/* only IE10 */
}
/* flex layout for footer start */
.fc1 {
background-color: red;
text-align: left;
flex-grow: 1;
flex-basis: 0;
-ms-flex-positive: 1; // flex-grow
-ms-flex-preferred-size: 0; // flex-basis
}
.fc2 {
background-color: red;
text-align: center;
flex-grow: 1;
flex-basis: 0;
-ms-flex-positive: 1; // flex-grow
-ms-flex-preferred-size: 0; // flex-basis
}
.fc3 {
background-color: red;
text-align: right;
flex-grow: 1;
flex-basis: 0;
-ms-flex-positive: 1; // flex-grow
-ms-flex-preferred-size: 0; // flex-basis
}
/* flex layout for footer end */
<div class="wrapper">
<div class="item-header">header</div>
<div class="item-nav">nav</div>
<div class="item-leftcol">left</div>
<div class="item-centercol">center</div>
<div class="item-rightcol">right</div>
<div class="item-footer">
<div class="fc1">footer</div>
<!-- just added this -->
<div class="fc2">footer</div>
<!-- just added this -->
<div class="fc3">footer</div>
<!-- just added this -->
</div>
</div>
【问题讨论】: