我有一个布局,我需要在 html 和 body (以及我使用的任何包装器 div)上使用 height: 100% 来实现类似于页面的效果,以便我的第一个“页面”上的内容居中,向下滚动第二个“页面”上的内容居中等。
html 看起来像这样:
<section class="page" id="p01">
<div class="spacer">
</div>
<div class="outer">
<div class="inner">
Some content
</div>
<div class="inner">
Some content
</div>
</div>
</section>
<section class="page" id="p02">
<div class="spacer">
</div>
<div class="outer">
<div class="inner">
Some content
</div>
<div class="inner">
Some content
</div>
</div>
</section>
以及通过这种样式实现的垂直居中等:
body, .page {height: 100%; margin: 0 auto;}
.spacer {
float: left;
height: 50%;
margin-bottom: -150px;
}
.outer {
height: 300px;
width: 100%;
background-color: #fca;
clear: both;
position: relative;
display: block;
white-space: nowrap;
}
.inner {
width: 41%;
margin: 0 6%;
height: 300px;
background-color: green;
display: inline-block;
vertical-align: middle;
white-space: normal;
}
.inner:first-child {
margin-right: 0;
}
你可以在这个小提琴中看到它:
http://jsfiddle.net/terraling/3V5rV/
问题是正文背景(这里我只是使用颜色,但在我的网站上它将是一个图像)泄漏到正文边缘,即正文内容具有最大宽度并且应该以白色边缘为中心。
我可以通过...将html背景颜色设置为白色来解决这个问题,根据
http://jsfiddle.net/terraling/yM53t/
...但是当滚动到第二页时,正文背景会被截断(这在第一个小提琴中不是问题)。
或者,我可以在包装器 div 上设置背景图像,而不是在正文上。这解决了它泄漏到正文边缘的问题,但它仍然存在滚动时被切断的问题。
(见:http: //jsfiddle.net/terraling/3V5rV/1/)
任何涉及从 html、body 或 wrapper 中删除 height: 100% 声明的解决方案都会折叠布局(包括替换为 max-height: 100%)。