HTML の body タグのサイズについて混乱しています。
次のような厳しいコードがあります。
<body>
</body>
body{
padding: 0px;
height: 100px;
background-color: #e5e5e5;
}
背景がページ全体を覆うのはなぜですか?
私のためにこれを説明してください、あなたの助けに感謝します!
これは確かに紛らわしいですが、CSS 2.1 仕様の14.2 節で指定されています。 背景: の計算値background-color
とtransparent
の計算値がbackground-image
要素none
のhtml
場合 (デフォルトではそうです)、ブラウザーは代わりに の計算値を使用する必要があります。要素の背景プロパティでありbody
、背景をレンダリングしてはなりませんbody
(つまり、透明にします)。つまり、独自の背景がない場合、body
背景は魔法のように背景に変わります。これは背景のプロパティにのみ影響し、要素の実際の高さには影響しません。html
html
body
一種の「逆継承」を規定するこの奇妙な規則の根拠を私は見たことがありません。しかし、これは CSS 2.1 で明確に指定されており、ブラウザーによって適用されます。
他の回答で説明されているように、背景をオンに設定するかhtml
(body
背景が実際にbody
のみに適用されるように)、または内部でラッパー要素を使用してbody
高さを設定することにより、コンテンツに特定の高さの背景を持たせることができます(特別なルールが適用されるため)body
のみ) 。
WHATWG メーリング リストでこの件について質問したときに CSS 仕様を指摘してくれた Anne van Kesteren に感謝します。(CSS 2.1 を暗記していると思っていましたが、実際にはわかりませんでした。☺)
多くの Web 開発者は、スタイルを body 要素に適用する場合と html 要素に適用する場合の違いを理解していません。ほとんどの場合、これらの作成者は body 要素にのみスタイルを適用します。それが十分でない場合、ページがたまたま正しく見えるようになるまで、html と body の両方にあらゆる種類のスタイルをスパム送信します。
混乱は理解できます。最初はどちらも同じように扱われ、background-color などの属性が body タグに適用され、ページ全体に影響を与えていました。
編集:簡単にするために、背景色がどのように適用されるかを示すためにフィドルを追加しました。したがって、本文の背景色を指定し、それをページ全体に広げたくない場合は、HTML の背景色を指定する必要があります。それも
CSS
html{
background-color:yellow;
}
body{
padding: 0px;
height: 100px;
background-color: red;
}
body は特別な HTML タグで、通常は HTML ページ全体をカバーします。次のことを試してください。
<body>
<div id="content">
Content goes here
</div>
</body>
それに付随する CSS は次のようになります。
body{
/* whatever body related codes you'd like to use go here */
}
#content{
padding: 0px;
height: 100px;
background-color: #e5e5e5;
}