2008-12-12作成

 ■スタイルシート(CSS)2

 ■ページ内のレイアウト設定

 ここではページ内のレイアウト設定方法について説明します。ここでいうページ内のレイアウトとはどういうものかというと、ページ内をいくつかの区画に分けて、それぞれに異なる内容、あるいは区画毎に一連の内容を集めて表示することを意図しています。

 例えばページ内を次のような区画に分けます。

 区画1

 区画2

 区画3

 区画4

 区画5

 ちょうどあなたが今見ているこのページのような、文章中心なら各区画の意味として例えば

 区画1
 ヘッダ部

 区画2

 索引情報

 区画3

 本文、主たる内容

 区画4

 補足情報

 区画5
 フッタ部

のように割り振るかもしれません。それぞれの区画に、それに応じた内容を書いていく、ということです。

 もしくは入力画面のページを作成するときに、

       入力1:
ラジオ1 選択1
ラジオ1 選択2
ラジオ1 選択3
チェック1 選択1
チェック1 選択2
チェック1 選択3
チェック1 選択4
チェック1 選択5
入力2:
入力3:

 と、一連の入力項目をまとめて配置しておきたいときにも、区画化のレイアウトを利用できます。

 ◇スタイルシートの理由

 ところでなぜレイアウト設定をスタイルシート(CSS)の中で説明するのか、その理由を説明しておきましょう。それは原則としてHTMLだけでは、細かいレイアウト設定が出来ないためです。HTMLはあくまで文書の構造を定義するものであって、文書の見栄え、レイアウトについて細かい設定は出来ません。これを実現するにはCSSの機能を利用して行います。

 原則として、と書いたのは、HTMLの機能であるtableタグを利用する、レイアウトテーブルという方法があるからです。これである程度のレイアウト設定は可能です。

 ここではテーブルを使ったものと、使わないものの、両方について説明していきます。

 ◇レイアウトの制約

 さてページ内のレイアウト設定方法ですが、レイアウトテーブルを使用しない、CSSだけで設定するのが本来の姿です。

 しかしそれには制約があります。その制約は、ブラウザにIE(Internet Explorer)を使うか否かに依存します。

 理由は、とりわけIE6までのInternet ExplorerはCSSに関してバグだらけ、という点にあります。IE以外のどのブラウザでも同じように表示できる内容が、IEだと崩れるというものです。

 ところが残念ながらブラウザシェアは、IEが圧倒的です。ですのでプロのWEBデザイナの人たちは、IEで正しく表示できるように、いろいろな裏技を駆使したりしています(その結果、他のまっとうなブラウザで表示が崩れても)。

 ただし貴方が今見ているこのページでは、IEなんざ気にしません。本来のHTML学習を目的としているからです。ですからIEでここを見ていて、何か表示がおかしいと思うことがあっても、それはあきらめてください(基本的にFirefoxでしか確認していません)。

 そうは言ってもIEの人を放置するのも可哀相なので、各レイアウト設定方法毎に、これはIEでも表示可能、これはIEだと崩れる、とコメントは入れておくことにします。

 ■レイアウトに関連した設定要素

 では始めに、ページレイアウトを設定する際に使用する、スタイルシート設定項目について整理しておきます。ここで説明する設定要素は、レイアウトテーブルを使った場合はもちろん、後述するdivタグを使った方法でも有効です。

 その他の、例えばpタグやh1h5タグ、preタグ等でも指定できるものもあります。ですがここでは、ここで説明するレイアウト設定方法の、テーブル関連タグとdivタグ以外については触れません。

位置、大きさに関連する要素
要素名 設定方法説明
位置指定に関する要素
position  位置指定する値が、相対指定か絶対指定かを指定します。
 相対指定、絶対指定の具体的な例は、divタグを使った区画化によるレイアウト設定のところで説明します。
position: relative;
 対象の配置位置を、相対値で指定します。
position: absolute;
 対象の配置位置を、絶対値で指定します。
 相対値で位置指定をしたときは、これを指定した要素の親要素内での相対位置になります。これはサンプルを見てもらった方が分かりやすいと思います。
 指定値の意味は、position指定と併せて考える必要があります。
 位置指定を指定した対象が、表示開始される基準点をずらします(相対指定、position: relative;のとき)。
 もしくは表示開始される基準点の位置を指定します(絶対指定、position: absolute;のとき)。
 表示開始される基準点とは位置指定をした対象の、キーワード(topbottomleftright)で指定した部分と考えてください。
 次に示す説明では、position: relative;と併せた例で説明しています。
標準
位置指定をしないとき
 ここはdivタグにはborderしか指定していません。
top
top: 指定値px;
 ここはdivタグにposition: relative; top: 10px;を指定しています。
bottom
bottom: 指定値px;
 ここはdivタグにposition: relative; bottom: 10px;を指定しています。
left
left: 指定値px;
 ここはdivタグにposition: relative; left: 10px;を指定しています。
right
right: 指定値px;
 ここはdivタグにposition: relative; right: 10px;を指定しています。

 最初に標準の行を見てください。ここの説明全体はtableで表形式にしています。個々の説明はtdタグで囲まれた、表要素内に書かれています。右側の説明はdivタグで区画指定をしています。

 標準の説明文はdivタグで囲っただけで、位置指定はしていません。そのため縦方向は親要素(この例の場合はtdタグ)内で標準の中央揃えになっています(高さ指定は行に対してするため、tdのさらに親であるtrタグで指定しています)。

 下の4行ではposition: relative;で、それぞれtopbottomleftrightで位置指定をしています。それぞれの指定によって、div指定の区画が標準位置からずれています。

大きさに関する要素
width  要素の幅を指定します。tableタグに指定すればテーブル全体の幅、tdタグに指定すれば、そのセルの幅を指定します。
 同様にdivタグに指定すれば、divで囲った区画の幅を指定します。
width: 指定値px;
 幅をピクセル値で、絶対値指定します。
width: 指定値%;
 幅をピクセル値で、相対値指定します。
 相対値指定の場合は、これを指定した上位レベルの要素の幅に依存します。例えばtdタグでwidth: 60%;と指定し、tableタグでwidth: 600px;と指定しているときは、そのtd(セル)の幅は360ピクセルです。
 同じ理屈でtableタグにwidth: 50%;と指定していて、特に上位レベルの要素タグを定義していないときを考えます。この場合はHTMLのbodyタグに依存しています。ここで幅を指定していればその50%、無指定ならブラウザの表示領域、表示中の横幅の50%です。
height  要素の高さを指定します。tableタグに指定すればテーブル全体の高さ、tdタグに指定すれば、そのセルの高さを指定します。
 同様にdivタグに指定すれば、divで囲った区画の高さを指定します。
height: 指定値px;
 高さをピクセル値で、絶対値指定します。
height: 指定値%;
 高さをピクセル値で、相対値指定します。
 相対値指定の場合はこれを指定した要素の、上位レベルの要素の高さに依存します。例えばtrタグでheight: 60%;と指定し、tableタグでheight: 600px;と指定しているときは、その行の高さは360ピクセルです。
 同じ理屈でtableタグにheight: 50%;と指定していて、特に上位レベルの要素タグを定義していないときを考えます。この場合はHTMLのbodyタグに依存しています。ここで高さを指定していればその50%、無指定ならブラウザの表示領域、表示中の高さの50%です。

枠線、背景に関連する要素
要素名 設定方法説明
枠線表示に関する要素
border-style  枠線の表示形式を指定します。tableタグに指定すればテーブル全体の外枠全体、tdタグに指定すれば、そのセルの枠全体を指定します。
 同様にdivタグに指定すれば、divで囲った区画の枠全体を指定します。
 ここで「全体」と言っているのは、上下左右の枠線全体、という意味です。
border-style: none;
 枠線を表示しません。
border-style: solid;
 枠線を実線で表示します。
border-style: double;
 枠線を二重線で表示します。
border-style: dashed;
 枠線を破線で表示します。
border-style: dotted;
 枠線を点線で表示します。
border-style: groove;
 このセルのような枠線になります。
border-style: ridge;
 このセルのような枠線になります。
border-style: inset;
 このセルのような枠線になります。
border-style: outset;
 このセルのような枠線になります。
border-width  枠線の太さを指定します。単位はpx(ピクセル)で指定します。
 指定したパラメータの数によって、適用される枠線の場所が異なります。
border-width: 1px;
 枠線全体の幅をまとめて設定します。
border-width: 1px 2px;
 1つ目の指定が上下、2つ目が左右の枠線の幅を設定します。
border-width: 1px 2px 3px;
 1つ目の指定が上、2つ目が左右、3つ目が下の枠線の幅を設定します。
border-width: 1px 2px 3px 4px;
 1つ目の指定が上、2つ目が右、3つ目が下、4つ目が左の枠線の幅を設定します。
border-color  枠線の色を指定します。
 色名で指定する方法と、数値(RGB、赤緑青の割合)で指定する方法の2通りあります。
border-color: 色名;
 枠線の色を、色名で指定します。代表的な色名は◇色指定についてを参考にしてください。
border-color: rgb(赤,緑,青);
 色を色毎に0〜255の10進数で指定します。それぞれの色について、0が一番濃く、255が一番薄く(その色を含まない)なります。つまりrgb(0,0,0)が黒で、rgb(255,255,255)が白です。
 この区画は枠線の色をrgb(153,51,153)と設定しています。
border-color: #RRGGBB;  RR:赤、GG:緑、BB:青
 色を色毎に00〜ffの2桁の16進数で指定します。それぞれの色について、00が一番濃く、ffが一番薄く(その色を含まない)なります。つまり#000000が黒で、#ffffffが白です。
 この区画は枠線の色を#339933と設定しています。
border  枠線の形式、幅、色をまとめて指定します。
border: 形式 幅 色;
 形式の指定方法は、border-styleで説明した内容です。
 幅の指定方法は、border-widthで説明した内容です。
 色の指定方法は、border-colorで説明した内容です。
 かならずこの3つをこの順番で指定してください。
border-位置-style  枠線の表示形式を個別に指定します。位置の部分にはtop、bottom、left、rightのいずれかが入ります。
 指定できる内容は、border-styleと同じです。
border-top-style:
 上の枠線の表示形式を設定します。
border-bottom-style:
 下の枠線の表示形式を設定します。
border-left-style:
 左の枠線の表示形式を設定します。
border-right-style:
 右の枠線の表示形式を設定します。
border-位置-width  枠線の幅を個別に指定します。位置の部分にはtop、bottom、left、rightのいずれかが入ります。
 指定できる内容は、border-widthと同じです。
border-top-width:
 上の枠線の幅を設定します。
border-bottom-width:
 下の枠線の幅を設定します。
border-left-width:
 左の枠線の幅を設定します。
border-right-width:
 右の枠線の幅を設定します。
border-位置-color  枠線の色を個別に指定します。位置の部分にはtop、bottom、left、rightのいずれかが入ります。
 指定できる内容は、border-colorと同じです。
border-top-color:
 上の枠線の色を設定します。
border-bottom-color:
 下の枠線の色を設定します。
border-left-color:
 左の枠線の色を設定します。
border-right-color:
 右の枠線の色を設定します。
border-位置  枠線を個別に、形式、幅、色をまとめて指定します。位置の部分にはtop、bottom、left、rightのいずれかが入ります。
 指定できる内容は、borderと同じです。
border-top: 形式 幅 色;
 上の枠線をまとめて設定します。
border-bottom: 形式 幅 色;
 下の枠線をまとめて設定します。
border-left: 形式 幅 色;
 左の枠線をまとめて設定します。
border-right: 形式 幅 色;
 右の枠線をまとめて設定します。
背景表示に関する要素
background-color  背景の色を指定します。
 色名で指定する方法と、数値(RGB、赤緑青の割合)で指定する方法の2通りあります。
background-color: 色名;
 枠線の色を、色名で指定します。代表的な色名は◇色指定についてを参考にしてください。
background-color: rgb(赤,緑,青);
 色を色毎に0〜255の10進数で指定します。それぞれの色について、0が一番濃く、255が一番薄く(その色を含まない)なります。つまりrgb(0,0,0)が黒で、rgb(255,255,255)が白です。
 この区画は枠線の色をrgb(233,147,233)と設定しています。
background-color: #RRGGBB;  RR:赤、GG:緑、BB:青
 色を色毎に00〜ffの2桁の16進数で指定します。それぞれの色について、00が一番濃く、ffが一番薄く(その色を含まない)なります。つまり#000000が黒で、#ffffffが白です。
 この区画は枠線の色を#aaeeaaと設定しています。

表示位置に関連する要素
要素名 設定方法説明
表示位置調整に関連する要素
text-align  指定した区画内の、横方向の文字表示位置を指定します。tableタグに指定すればテーブル全体の横方向表示位置調整、tdタグに指定すれば、そのセルの横方向表示位置調整を指定します。
 同様にdivタグに指定すれば、divで囲った区画全体の水平方向表示位置調整を指定します。
text-align: left;
 左詰の指定です。これが無指定の場合の標準です。
text-align: center;
 中央揃えの指定です。
text-align: right;
 右詰の指定です。
vertical-align  指定した区画内の、縦方向の文字表示位置を指定します。tableタグに指定すればテーブル全体の縦方向表示位置調整、tdタグに指定すれば、そのセルの縦方向表示位置調整を指定します。
 同様にdivタグに指定すれば、divで囲った区画全体の縦方向表示位置調整を指定します。
vertical-align: top;
 上詰の指定です。
vertical-align: middle;
 中央揃えの指定です。
vertical-align: bottom;
 下詰の指定です。
表示域調整に関連する要素
margin  指定した要素と、その上位レベルの要素との間の隙間を指定します。単位はpx(ピクセル)、em(文字数)で指定します。
 指定したパラメータの数によって、適用される隙間の場所が異なります。
margin: 5px;
 空ける隙間の位置をまとめて設定します。
margin: 5px 20px;
 1つ目の指定が上下、2つ目が左右の隙間の幅を設定します。
margin: 5px 20px 30px;
 1つ目の指定が上、2つ目が左右、3つ目が下の隙間の幅を設定します。
margin: 5px 20px 30px 40px;
 1つ目の指定が上、2つ目が右、3つ目が下、4つ目が左の隙間の幅を設定します。
margin-位置  上位レベルの要素との間の隙間を個別に指定します。位置の部分にはtop、bottom、left、rightのいずれかが入ります。
 指定できる内容は、marginと同じです。
margin-top:
 上側の隙間を設定します。
margin-bottom:
 下側の隙間を設定します。
margin-left:
 左側の隙間を設定します。
margin-right:
 右側の隙間を設定します。
padding  指定した要素の枠と、その要素の内容との間の隙間を指定します。単位はpx(ピクセル)、em(文字数)で指定します。
 指定したパラメータの数によって、適用される隙間の場所が異なります。
padding: 5px;
 空ける隙間の位置をまとめて設定します。
padding: 5px 20px;
 1つ目の指定が上下、2つ目が左右の隙間の幅を設定します。
padding: 5px 20px 30px;
 1つ目の指定が上、2つ目が左右、3つ目が下の隙間の幅を設定します。
padding: 5px 20px 30px 40px;
 1つ目の指定が上、2つ目が右、3つ目が下、4つ目が左の隙間の幅を設定します。
padding-位置  指定した要素の枠との間の隙間を個別に指定します。位置の部分にはtop、bottom、left、rightのいずれかが入ります。
 指定できる内容は、paddingと同じです。
padding-top:
 上側の隙間を設定します。
padding-bottom:
 下側の隙間を設定します。
padding-left:
 左側の隙間を設定します。
padding-right:
 右側の隙間を設定します。





このページの先頭  HTML編先頭  サーバーJava入門先頭

Copyright © 2008- YOK. All Rights Reserved.