最初の「ページ」のコンテンツが中央に配置され、下にスクロールするように、ページと同様の効果を得るために、html と本文 (および使用するすべてのラッパー div) で height: 100% を使用する必要があるレイアウトがあります。 2 番目の「ページ」のコンテンツは中央に配置されます。
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/
問題は、本文の背景 (ここでは色を使用しているだけですが、私のサイトでは画像になります) が本文の余白に漏れ出すことです。つまり、本文のコンテンツには最大幅があり、白い余白を中央に配置する必要があります。
I can fix that either by... setting html background-color to white, as per
http://jsfiddle.net/terraling/yM53t/
...but body background becomes cutoff when scrolling into the second page (that wasn't a problem in the first fiddle).
Alternatively I could set the background image on a wrapper div and not on the body. That solves the problem of it leaking into the body margins, but it still has the same problem that it is cut off on scrolling.
(see: http://jsfiddle.net/terraling/3V5rV/1/ )
Any solution that involves removing the height: 100% declaration from any of html, body or wrapper collapses the layout (including replacing with max-height: 100%).