heightプロパティ…ボックスの高さ (平成17年 9月 6日 更新)
CSSで高度なレイアウトを実現するに欠かせない概念としてボックスがあります。
全てのHTML要素はボックスと呼ばれる枠に入れられていると考えます。そして、そのボックスの位置や大きさなどを変えるのがCSSにおけるレイアウトと言う訳です。
要素の内容を囲む枠線をボーダ(border)と呼びます。
ボーダには当該要素に指定された背景色や背景画像は適用されません。ボーダが幅を持つ場合はボーダに指定された色(色が指定されていない場合は要素に指定された前景色)が適用されます。
要素の内容とボーダの間に入る隙間をパディング(padding)と呼びます。
隣接する他の要素から離す余白をマージン(margin)と呼びます。
マージンに当たる領域は、当該要素に指定された背景色や背景画像は適用されません。仕様上はマージンに当たる領域は無色透明となります。
さて、ボックスはブロックレヴェル要素とインライン要素で大きく異なります。
画像, マルティメディア及び入力フォームの入力欄・ボタンなどは、可能ならテキスト以外のもので置き換えられて表示されます。
このようにテキスト以外のものに置き換えられる可能性のあるインライン要素を置換インライン要素と呼びます。
置換インライン要素の場合、横幅や高さなどが置換えとなるものにより定まるため、一般のインライン要素と若干異なった挙動となるプロパティがあります。
尚、実際にはプロパティ操作で、インライン要素のスタイルをブロックレヴェル式にできますし、その逆も可能です(ネットスケープ 4.x及びインターネットエクスプローラ 4.xでは出来ませんが)。
その為、以下のプロパティの説明では例えば「ブロックレヴェル要素云々」と書くべきところを「ブロックレヴェル式スタイル云々」という書き方にします。
それでは、ボックス関連のプロパティを挙げておきます。
displayプロパティは表示形式を指定するプロパティです。
ブロックレヴェル要素をインライン式に表示させたい(前後の改行を無くしたい)とか、インライン要素をブロックレヴェル式に表示したい(前後で改行させたい,横幅を定めたい…など)場合にはdisplayプロパティで表示方式を変更できます。
また、視覚障碍者向けの案内など、通常の視覚系ブラウザでは表示する必要のない要素を、このプロパティで非表示にする事も出来ます。
値には、主に以下のものが使えます。
none非表示にします。表示上この値を当てられた要素は存在しないものとされます。
inlineblocklist-itemdisplay: none;プロパティに関する注意事項。PCでは非表示でも問題無いものの、音声ブラウザや携帯端末でのアクセスには有用なアンカーなどを「display: none;」プロパティで非表示にする事が考えられますが、もっとも普及している音声ブラウザ『ホームページリーダ』では、この方法では折角のコンテンツが読み上げられない事があります。
このため、オフ・レフトと呼ばれるテクニックが考案されております。
実際にはこの他にも表(テーブル)関連要素など向けの独自のプロパティ値が定義されておりますが、実際には現在も殆どのブラウザで実装されておりません。
このため、多くのブラウザでは表(テーブル)関連要素に一回でもdisplayプロパティを当ててしまうとdisplayプロパティの値を元に戻せなくなり、その結果表(テーブル)が表(テーブル)の形に表示出来なくなってしまいます。
表関連要素にdisplayプロパティを当てる場合はその記述をしたスタイル定義ファイルを当てたHTML文書内で表を表示する事は不可能になると承知した上で行いましょう。
widthプロパティ及びheightプロパティは、それぞれボックスの横幅及び高さを指定します。
widthプロパティとheightプロパティの対象となる要素は主に以下のものがあります。
要素の大きさをwidthプロパティとheightプロパティで指定する事が出来ます。
尚、ブロックレヴェル式の要素の場合、横幅を省略した場合は、上位要素の幅に左右マージン等をとった状態で最大に取れる幅(100%の幅)となります。
置換インライン要素の場合、置換されるものが持つ固有の幅と高さを自動的に適用しますが、widthプロパティやheightプロパティにより、この大きさを変更する事も可能です。
尚、実際の幅/高さと異なるwidthプロパティ/heightプロパティを当てた場合、ウェブブラウザは多くの場合適宜拡大縮小します。
値は主に以下の単位を用います。
%上位要素の幅/高さに対する比率です。
pxemこの他、幅・高さを状況に合わせて適宜決める「auto」値もあります。
横幅には要素の入り得る幅となります。左右のボーダ・パディングの幅は横幅には含まれません。従って左右のボーダやパディングを取っている幅50%のブロックが二つ並ぶと実際の横幅は100%からボーダの分だけ越えてしまいます。
widthプロパティとheightプロパティを同時に指定する場合は注意が必要です。文字の大きさを閲覧者が変えるなどして内容が入り切らなくなった場合は仕様上はみ出して表示される事となっております。
画像などの置換インライン要素にwidthプロパティかheightプロパティのうち、どちらか片方だけを指定した場合は、もう片方もそれに合わせて拡大縮小するブラウザが殆どですが、そのような挙動を規定されている訳では無いので、指定するのなら双方ともきちんと指定しておきましょう。
max-widthプロパティ, min-widthプロパティ, max-heightプロパティ及びmin-heightプロパティはボックスの幅及び高さの最大値及び最小値を指定します。
具体的には
尚、最大値と最小値の大小関係が逆になっている場合は事前に入れ替えて考えます(例えば片方の単位が「%」でもう片方が「em」と言うような場合には大小関係が意図的で無くても逆転する可能性があります)。
今後このページで紹介されるプロパティは、値の指定方法は共通となります。
: 値;: 値1 値2;: 値1 値2 値3;: 値1 値2 値3 値4;値1から順に上,右,下,左の値を当てます。
-top: 値;-bottom: 値;-left: 値;-right: 値;borderプロパティ群は、ボーダに関する指定を行います。
実際にはボーダに関しては幅,色,形の違いや上下左右での扱いがバラバラに決められる事から様々なプロパティがあります。
text-decoration: underline」で下線を引くのと違い、色や太さを自由に変える事が出来ます。border-styleプロパティは、ボーダのスタイルを指定するプロパティです。
border-styleプロパティが取れる値には主に以下のものがあります。但し、ブラウザに依っては実装されていないものもありますので注意して下さい(その場合はsolid(実線表示)になることが多いです)。
nonesoliddashdotteddoubleinsetoutsetgrooveridgenone(非表示)なので、必ずボーダの形を指定する必要があります。solid(実線表示)です。solid(実線表示)にしても構わない事になっております(実際、旧型のブラウザでdashedやdottedを実線表示していたものがありました)。border-widthプロパティは、ボーダの幅を指定するプロパティです。
border-widthプロパティの値の単位には主に以下のものがとれます。いずれも0以上となります。
また、border-widthプロパティでは、具体的な値の代わりに以下のキーワードで太さを指定する事も出来ます。
thinmediumthickborder-colorプロパティは、ボーダの色を指定するプロパティです。
border-colorプロパティの値は文字などに適用する色と同じです。
transparentを指定すると背景色が適用されます。尚、ボーダの色をプロパティで指定しない場合は当該要素に当てられている前景色が適用されます。
borderプロパティはボーダ関連のプロパティ群を一括して指定するものです。
borderプロパティでは、必要な値を空白で区切って任意の順番で並べて行きます。
例えば、以下のようなプロパティ定義があったとします。
p.note {border-width: 2px;border-color: #0c0;border-style: solid;}
これは、borderプロパティを用いる事で、以下の様に略記できます。
p.note {border: 2px #0c0 solid;}
同じプロパティの値を複数並べて、上下左右の値を個別に指定することはできません。以下の指定法のみとなります。
paddingプロパティはパディングの幅を指定します。
paddingプロパティの値の単位には主に以下のものがとれます。いずれも0以上となります。
marginプロパティはマージンの幅を指定します。
marginプロパティの値の単位には主に以下のものがとれます。値はマイナスでも構いませんがその場合隣接する他の要素と重なる事になります。
autoボックスの幅に合わせて適宜調整します。