08 ホームページ基礎講座 CSSのwidthとmargin

今回はwidthを指定した際のmarginを使った中央の設定と、widthと同時に記述する際のborderとpaddingを入れるとwidthが大きくなることをしっかりと確認していきます。
HTML/CSSを入力しよう
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>エコロジーと環境問題 [Computer Technology Groups]</title>
<style>
/* ボディ全体のスタイル */
body {
background: #ffffe0;
font-size: 1em;
line-height: 1.7;
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
}
/* 記事全体のスタイル */
article {
border: 2px solid #333;
width: 700px;
padding: 2em; /* 内側の余白 */
margin: 1em auto; /* 左右中央揃え、上下に1emの余白 */
box-sizing: border-box; /* paddingとborderを含めた幅設定 */
}
/* セクションのスタイル */
section {
border: 1px solid #999;
padding: 1em; /* 内側の余白 */
box-sizing: border-box; /* paddingとborderを含めた幅設定 */
margin-bottom: 1em; /* セクション間の余白 */
}
/* タイトルのスタイル */
h1.title {
background-color: #ff7500;
padding: 0.5em;
border-radius: 5px;
color: #fff;
font-size: 1.5em;
text-align: center;
}
/* 中央揃えクラス */
.center {
text-align: center;
}
/* リストのスタイル */
ul, ol {
margin-left: 20px; /* 左側にインデント */
}
/* フッターのスタイル */
footer {
text-align: center;
margin-top: 2em;
font-size: 0.8em;
}
</style>
</head>
<body>
<article>
<section>
<h1 class="title">ECOLOGY【エコロジー】</h1>
<p>Computer Technology Groupsでは、グループをあげてエコロジー/環境問題に取り組んでいます。成果や実績を地域に還元することもポリシーとしています。</p>
</section>
<section>
<h1>商品のラインナップ</h1>
<p>紙やプラスチック、コンピューター・パーツのリサイクルにも力を入れ、あらゆる面での活動をひろげています。リサイクル商品のラインナップも豊富で、オンラインのショッピングコーナーではもちろんのこと、各地域のリサイクルセンターでもお買い求めいただけます。</p>
</section>
<section>
<h1>リサイクル商品</h1>
<ul>
<li>ノートやメモ帳などの紙製品</li>
<li>ペットボトル</li>
<li>布製品</li>
<li>ダンボール/梱包材</li>
<li>木工製品/割り箸・爪楊枝など</li>
<li>コンピューター基盤/電子機器</li>
</ul>
</section>
<section>
<h1>省エネ商品の使い方</h1>
<ol>
<li>消費電力を計測する機器を設置</li>
<li>電源を自動的にオフにするキットの用意</li>
<li>水量を調節する蛇口セットの準備</li>
<li>家庭用省エネ10点セット</li>
</ol>
</section>
</article>
<footer>
<p class="center"><small>Copyright © Computer Technology Groups All rights reserved.</small></p>
</footer>
</body>
</html>
article要素に線と幅と余白のmargin指定
幅指定のwidthプロパティを使い文字の折り返しを指定します。そのwidthの幅がブラウザの中央に配置するように、外側余白のmarginを使い、上下 1em(1文字分) 左右auto(自動)を使います。そのarticle要素にborderプロパティ(線)を設置し、paddingプロパティで内側の余白を指定します。
article {
width: 700px;
padding: 2em;
margin: 1em auto; /* 左右中央揃え、上下に1emの余白 */
box-sizing: border-box;
}
width: 700px;articleタグの幅を700pxに設定しています。これにより、記事の内容が指定した幅で表示されます。margin: 1em auto;marginの設定で、1em autoを使用しています。autoは左右のマージンを自動で調整し、要素を中央に配置します。1emは上下のマージンを設定し、1emの余白を上下に確保します。この結果、articleタグはページ中央に表示されます。
width、border、paddingの影響とbox-sizing
box-sizing: border-box; は、CSSで要素のサイズを計算する際の挙動を変更するプロパティです。このプロパティの設定により、要素の幅や高さがどう計算されるかに影響を与えます。
通常のbox-sizingの挙動
デフォルトでは、box-sizingの値は content-box です。この場合、要素のwidth(幅)やheight(高さ)は、コンテンツエリアのみを対象に計算されます。つまり、padding や border はその外側に追加され、要素の最終的なサイズは次のように計算されます。
width(幅)= コンテンツの幅 +padding(内側の余白) +border(枠線の幅)height(高さ)= コンテンツの高さ +padding+border
box-sizing: border-box;の場合
box-sizing: border-box; を使用すると、width や height の指定が コンテンツエリア + padding + border を含んだサイズとして計算されます。つまり、指定したwidthやheightが要素全体のサイズとしてそのまま適用されます。

marginの左右autoの意味
marginは外側の余白になります。今回はarticle要素の外です。上下に1em=1文字余白をあけ、左右にautoを指定しています。ショートハンドの記述を1つのプロパティで分けると下記になります。
margin-top:1em; margin-bottom:1em; margin-left:auto; margin-right:auto;
autoを指定することで、article要素のwidth:700pxをブラウザの幅から引いて、二分割にした状態になるため、artcle要素を画面中央に配置することができます。widthで指定された幅を画面中央に配置するためには外側余白のmargin を使う必要があります。

検証画面の使い方

見出し部分に様々なアレンジを加えて練習してみましょう。
次は、header/main/footer/articleのさまざまなパターン 09に移動







