REDLINE MAGAZINE | CSSビギナー向け 陥りがちな罠Vol.04REDLINE MAGAZINEトップページへ

すべてのエントリを見る

CSSビギナー向け 陥りがちな罠Vol.04

『vertical-align』の話を書こうと思ったわけだど、例があった方が分かりやすいかなということで、まずよくありがちなCSSの困りネタから。

画像の下に隙間ができてしまう

例えばこんなソースにすると・・・
<p>
<img src="xxx.gif" />
隙間・・・(テキストとか)
</p>

画像下に隙間

こんな感じで隙間ができるのを回避したいと。
これはブラウザのバグでもなんでもなくてcssの仕様どおりの表示結果。元々この場合img要素はインライン要素なので、その縦方向のどこに配置するかを決める『vertical-align』がデフォルトの値『baseline』として扱われる。ので、その『vertical-align』の値を変更して下にピタっと付くようにすれば解決する。

CSSソース
p img{
	vertical-align:bottom;
	}
XHTMLソース	
<p>
<img src="xxx.gif" />
隙間・・・(テキストとか)
</p>

vertical-alignを指定する場所に注意。

ここでよく最初に間違うのが、このケースの場合、pタグに対して『vertical-align:bottom;』を指定してしまってうまくいかないというケース。『vertical-align』はよく「垂直方向の位置を揃える」として解説されているが、何に対して指定しても効くプロパティではない。

『vertical-align』がちゃんと言う事を聞いてくれるのは、基本的に「行ボックスの中のインライン要素に対して(上のケースの場合pタグの中のimgタグに対して)」と「セル要素(thやtdの事)」だけ。つまり何でもかんでも垂直方向の位置が自由自在になるわけではないという事。

で、その決まりをふまえた上で適応した場合は指定ごとにこちらのサンプルのような場所にテキストが配置されることになる。(ページ下のほうにサンプルがありました。)
>>vertical-align-スタイルシートリファレンス

上記サイトのサンプルでもpタグでの例を挙げられていたが、テーブルのセルに対して指定しても同じような指定が効く。但し、上の方で『vertical-align』のデフォルトの値は『baseline』だと書いたが、こちらのサイトによると『HTML仕様書の都合、セル要素の初期値は[middle]』となるようです。
>>vertical-align - CSS Dencitie

またセル要素にはsuper』sub』text-top』text-bottom』の指定は効かず、デフォルトの『baseline』になる。

そもそもbaselineって何よの話。

画像下に隙間

つまりはココ。上の画像の緑のライン部分。
日本語だとあまり気づかないのだが、英語の場合、gとかjとかqとか、baselineより下に来る文字がある。それらの文字の一番したのラインがbottomの位置になるというわけ。

<< CSSビギナー向け 陥りがちな罠Vol.03 | [B]RLMの作り方・その1 >>

トラックバック

このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/126

このページの一番上へ

その他の情報など

最近のコメント

PHP オブジェクト指向の勉強
  • Red - 2010.01.08
  • hogepage - 2010.01.21
  • Red - 2010.01.22
  • - 2011.11.27
  • houseiii - 2011.11.27
Fireworks トリミング画像を一括書出 CS4編
  • Iper - 2009.06.27
  • Red - 2009.06.27
  • mala - 2011.11.17
  • Red - 2011.11.18
jQueryでボックスを上下左右中央に簡単配置
overflow を使用したボックス背景のこと
  • - 2007.12.13
  • Red - 2007.12.13
  • - 2007.12.13
  • Red - 2007.12.13
  • hj - 2011.09.23
IE6 → 透過PNG+overflow=混ぜるな危険(追記有)

メッセージを送る

こちらのメッセージ送信フォームは閉鎖させて頂きました。
御用の方は新しい方のブログ にコメント頂くか、 連絡用のフォーム もありますので、そちらからご連絡ください。