そうです、デスクトップ ブラウザでは 2 ピクセルのオフセットが表示されます。これは、仕様で親 + 境界線 + マージンの 100% を取得すると記載されているためです。モバイル ブラウザは影響を受けていないようですが、ほとんどの場合、スクロールをなくすためにコンテンツをウィンドウに自動調整しようとしているためです。
2 つの css3 修正があります。1 つ目は、新しい box-sizing プロパティを使用することと、border-box に設定することです。2 つ目は、フレックスボックス モデルを使用することです。残念ながら、古いブラウザーはこれらのソリューションのいずれもサポートしていない可能性があります。
したがって、ボックスサイジングを使用しますが、IE7とその逆を考慮してIE条件ステートメントを入れ、javascriptまたはcssハックを使用して修正します。
編集
ボックスサイジングを使用したソリューションは次のとおりですhttp://jsfiddle.net/aaFHZ/
body, html {height:100%; width: 100%;}
#header{border-bottom:1px solid blue;}
#footer{border-top:1px solid blue;}
#header,#footer{height:15%;}
#content{height:70%;}
#header,#footer,#content{width:100%; box-sizing:border-box;}
ここにフレックスボックスを使用したソリューションがあります(注:これは最新のブラウザーでのみ機能します)http://jsfiddle.net/YkSYN/1/
<style>
body, html {height:100%; width: 100%;}
#header{border-bottom:1px solid blue;}
#footer{border-top:1px solid blue;}
#header,#footer {
-webkit-box-flex: 15;
-moz-box-flex: 15;
box-flex: 15;}
#content {
-webkit-box-flex: 70;
-moz-box-flex: 70;
box-flex: 70;}
#header,#footer,#content{width:100%;}
#wrapper {
display: -webkit-box;
-webkit-box-orient: vertical;
display: -moz-box;
-moz-box-orient: vertical;
display: box;
box-orient: vertical;
width: 100%;
height:100%;}
</style>
<div id="wrapper">
<div id="header"></div>
<div id="content"></div>
<div id="footer"></div>
</div>