私は箱を持っています#box
幅:100%、高さ:100%、パディング:5px、マージン:5px;ボーダー:5px;
HTML5レイアウトでそれを正しく表示する必要があります。
今私はそれを持っています:
しかし、私は体の領域にフィットブロックが必要です。
コード:
<!DOCTYPE html>
<style>
body,html {
width: 100%;
height: 100%;
margin: 0;
}
#box {
width: 100%;
height: 100%;
border: 5px solid red;
padding: 15px;
margin: 20px;
}
</style>
<body>
<div id="box">
Text will be here
</div>
</body>
ブラウザはあなたが彼に言っていることを正確に行います:)しかし私はあなたがそれが持っているオーバーフローが好きではないと思います。
何が起こるかというと、境界線とパディングのために#box
が拡張されます。これらのプロパティをはめ込むことができるので、要素は拡張されません。これはbox-sizing
で実行できます。
#box {
width: 100%;
height: 100%;
border: 5px solid red;
padding: 15px;
/*margin: 20px;*/
box-sizing: border-box;
}
ただし、margin
で同じことを行うことはできません。これは、要素がそれ自体を本体から押し出しているためです。つまり、想定どおりに機能します。
上記と同じことを行うことで回避策を作成できます。
body
{
padding: 20px;
box-sizing: border-box;
}
#box
の余白の代わりに本体のパディングを使用します。
更新
二重のパディングスペースを防ぐには、body要素(またはhtml)にのみ適用する必要がありますが、最終的にはbodyが視覚要素であるため私はbodyを好みます。
ボックスモデルの w3c仕様によると
ボックスタイプ要素のレンダリングされた幅は、その幅、左/右の境界線、および左/右のパディングの合計に等しくなります。
つまり、padding
とborder-width
の値が要素の合計幅に影響します。したがって、ここでは、パディングの15px
と、要素の実際の幅の100%の境界線の5px
を追加しています。
全体的にウィドウのサイズを超えているため、水平スクロールが付属しています。
CSS box-sizing
プロパティを使用する必要があります。
#box {
box-sizing: border-box;
-moz-box-sizing: border-box;
margin: 0;
}
ただし、これを機能させるには、ゼロmargin
を使用する必要があることに注意してください。
これがどのように機能するかについての良い説明記事があります: http://css-tricks.com/box-sizing/
CSS3を使用すると、境界線をインセットborder-shadow
に置き換え、マージンを透明な境界線に置き換えることができます。このようにして、パディング、(偽の)マージン、ボーダーのすべてのパラメーターを制御できます。
#box {
width: 100%;
height: 100%;
padding: 15px;
border:20px solid transparent;
box-sizing:border-box;
-webkit-box-shadow: inset 0px 0px 0px 5px #f00;
box-shadow: inset 0px 0px 0px 5px #f00;
-moz-box-sizing:border-box;
}
ここでライブフィドルを参照してください: http://jsfiddle.net/HXR3r/
Css calc()を使用できます
#box {
border: 5px solid red;
padding: 15px;
margin: 20px;
width: calc(100% - 80px);
height: calc(100% - 80px);
}
あなたの問題は、あなたが気づいたことですが、height
sだけを想定しています
height:100%;
border: 5px solid red;
padding: 15px;
margin: 20px;
これにより、高さ= 100%+境界線(2 x 5)+パディング(2 x 15)+マージン(2 x 20)=100%+(10 + 30 + 40)px
これは100%
...以上です。したがってfit block in body area.
はありません。より良い結果を得るには、高さをパーセンテージで減らしてみてください。
幅も同様です!!
box-sizing: border-box;
にAdd#box
プロパティを追加し、margin: 20px;
を削除する必要があります
更新されたCSSは次のとおりです。
body, html {
width: 100%;
height: 100%;
margin: 0;
}
#box {
width: 100%;
height: 100%;
border: 5px solid red;
padding: 15px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}