CSS基礎編

ボックスモデル

ボックスモデルの設定

 これまでにもブロックレベル要素のことを「箱」と表現していましたが、ウェブページデザインの要素を「箱」と捉えて設定する考え方を「ボックスモデル」と言います。実はブロックレベル要素だけではなく、インライン要素も、ブラウザに表示される際に「ボックス」と呼ばれる領域を生成します。それぞれ「ブロックボックス」「インラインボックス」と言ったりしますが、以下のようなイメージでウェブページを構成します。なお以下のイメージでは「ブロックボックス」が青い箱、「インラインボックス」が赤い箱を想定しています。「ボックス」はCSSで設定しますが、ウェブデザインにとってとても重要。ということでボックスモデルについて確認しましょう。

  

SPONSORED LINK

 ボックスモデルについて確認するために、ボックスがどのような形で生成されるか、例を見て確かめましょう。これは見るだけでいいです。プログラムを書く必要はありません。

  

 これはHTMLの段落<p>タグのサンプルですが、これがブラウザで表示されると、実は文字の周りには以下のような、目に見えない「ボックス」が生成されています。

  

 解説すると「このページではニュータイプの物語を・・・」という文字列が、width(ウィズ)とheight(ハイト)つまり幅と高さを持ち、それをpadding(パディング)という内余白が囲み、その周りをborder(ボーダー)つまり枠線が囲んで、さらにその外側をmargin(マージン)という外余白が取り囲む、というボックスです。
 HTMLを書くと、何も設定しなくても、文字や画像、見出しや段落などの周りには一定の余白ができますが、それは初期設定でmarginやpaddingを含むボックスが自動生成されているからなんですね。
 このサンプルでは<p>タグを例にしていますが、確かに<p>タグを設定すると、それ以外の要素との間に隙間ができます。それは、他のタグでも同じです。隙間なく詰まったような状態には普通はなりません。このあたりの話は、兄弟サイト「ウェブ作成入門・ボックスモデル」にもありますので興味がある人は見て下さい。
 そして、これらのwidth、height、margin、padding、borderは、いずれもCSSでスタイルを指定可能。以下、それぞれの主な使い方や値の指定方法です。

SPONSORED LINK

プロパティ概要設定値
widthボックス幅12pxや80%などの数値、auto(自動)
heightボックス高
margin外余白12pxや80%などの数値、auto(自動)。
上右下左(時計回り)の余白の一括指定は以下
padding: 10px 20px 30px 40px;
marginの左右の値をautoにすると中央寄せ
margin: 5px auto 5px auto;
padding内余白
border枠線太さ、形式、色を次のように一括指定。
border: 3px dashed orange;
(形式は、solid実線、duuble二重線、dotted点線、dashed破線など)
border-top上枠線
border-bottom下枠線
border-right右枠線
border-left左枠線

 実際はもっと多くのプロパティがあります。気になる人は兄弟サイト「ウェブ作成入門・ボックスの指定方法」をどうぞ。隣接するマージンが相殺される話とかややこしい話も載ってます。

やってみましょう

 というわけでボックス指定を試してみましょう。
 そこで、CSS基礎編でずっと使ってきた「ren11.html」と「ren11.css」を用意しましょう。 「ren11.html」はブラウザで開き、「ren11.css」はテキストエディタで開きます。これらのファイルがない人は、「CSS基礎編・文字のスタイル」あたりからやり直し・・とはいえそこまで戻るのは面倒なので、両方のファイルの内容を貼っておきます。画像ファイルも「こちら(hai02.jpg)」を右クリックして「名前を付けて保存」し、両方のファイルが保存されたwebkisoフォルダの中にあるgazoフォルダに格納しておいて下さい。

  ren11.html
  

  ren11.css
  

 ところで「ren11.html」と「ren11.css」ですが、前ページまでの段階では、背景を付けた以外は何の設定もしていません。縦横の大きさや横の箱との間隔など、ボックスは初期設定のままです。実際、ブラウザを最大化すると下のイメージのようにデザインが崩れます。横に長い棒に文字が書かれているような状態になります。

  

SPONSORED LINK

 というわけで、ブラウザを大きくしても崩れないように、ページの要素にボックスの設定をしてあげましょう。設定対象は、<h2>ボックスと<p>ボックスでよさそうです。「ren11.css」を、次のように編集しましょう。変更点は「h2」の最後の3行と「p」の最後の2行の追加です。反転表示の行です。「widthプロパティ」「marginプロパティ」「border-bottomプロパティ」が追加されました。設定が追加されたセレクタの箇所だけテキストも貼っておきます。どこに追加されたかよく確認して下さい。

  

  ren11.css(修正箇所以外は省略)
  

 説明しましょう。まず「h2」に追加された3行ですが、追加された「width: 500px;」は、h2ボックスの文字表示領域の幅を500ピクセルにせよ、という意味になります。また「margin: 25px auto 5px auto;」は、h2ボックスの外余白を、時計回りに「上余白25ピクセル、右余白自動、下余白5ピクセル、左余白自動」と設定しています。そして「border-bottom: 3px dotted white;」は、h2ボックスの下側の枠線を、3ピクセルの太さで、点線(dotted)で、白色(white)で引く、という意味です。
 一方、「p」タグに設定された2行ですが、「width: 500px;」は上と同じく文字表示領域の幅500ピクセル、「margin: 5px auto 5px auto;」も上と同様、外余白を時計回りに「上余白5ピクセル、右余白自動、下余白5ピクセル、左余白自動」と指定しています。h2ボックスとpボックスで余白の値が少し違うのは、見やすさのためです。
 ところで「marginプロパティ」に指定された「auto」とは何でしょうか?「外余白が自動って意味わかんないし」と思うかもしれません。確かに一見すると意味わかんないのですが、それらがボックスの右と左の余白設定に指定されていることに注意して下さい。marginの設定値が4つある場合、それらは順に時計回りに「上・右・下・左」の外余白に対応しますので、2番目と4番目の設定値は、ボックスの右余白と左余白です。そして左右の外余白に「auto」を設定するとどうなるか。なんとボックスの左右余白が自動調整されて中央表示になります。

SPONSORED LINK

 CSSではブロック要素の箱を中央寄せしたい場合、左右の余白にautoを設定します。「中央寄せ」と聞いて「text-alignプロパティ」を思い出した人。よく勉強してると思います。でも「text-alignプロパティ」で設定できるのはその名の通りテキスト。文字の中央寄せです。ブロック要素自体を中央寄せしたい場合は、このようにmarginで左右の外余白をauto設定にします。覚えておきましょう。
 というわけで、編集できたら保存して、ブラウザを更新してみてください。そしてブラウザの表示サイズを変えてみてください。どうですか?ボックスが一定サイズに固定され画面中央に表示されましたよね?それからボックスとボックスの間の余白や枠線の様子なども確かめて下さい。

  

 というわけでボックスモデル。わかってきましたか?ウェブページはこのような「箱」を組み立ててできています。これだけでも一応シンプルなウェブページができます。

ページのトップへ戻る
SPONSORED LINK