[1] [[HTML]] の要素型 [CODE(HTMLe)[[[tbody]]]], 
[CODE(HTMLe)[[[thead]]]], [CODE(HTMLe)[[[tfoot]]]], [CODE(HTMLe)[[[colgroup]]]], 
[CODE(HTMLe)[[[col]]]], [CODE(HTMLe)[[[tr]]]], [CODE(HTMLe)[[[th]]]], 
[CODE(HTMLe)[[[td]]]] で定義されている
[DFN[[CODE(HTMLa)[valign]] 属性]]は、
こま内でのデータの位置を指定します。

[9]
:[[要素型]]:[CODE(HTMLe)[[[tbody]]]], 
[CODE(HTMLe)[[[thead]]]], [CODE(HTMLe)[[[tfoot]]]], [CODE(HTMLe)[[[colgroup]]]], 
[CODE(HTMLe)[[[col]]]], [CODE(HTMLe)[[[tr]]]], [CODE(HTMLe)[[[th]]]], 
[CODE(HTMLe)[[[td]]]]
:[[名前空間URI]]:[[null]]
:[[局所名]]:[CODE(HTMLa)[valign]]
:[[属性値]]:[[列挙型]] >>5
:[[既定値]]:[CODE(HTMLa)[middle]] (継承もあり)

* 代替

[2] この属性は HTML 4 では'''非推奨'''とされてはいませんが、
[[スタイル・シート]]を使って指定するべきでしょう。

[3] [[CSS]] では [CODE(CSS)[[[vertical-align]]]] [[特性]]などが使えます。

* 属性値

[5] この属性は[[列挙型]]です。

,属性値	,説明
,[CODE(HTML)[[[top]]]]	,データは上にあわせて流す
,[CODE(HTML)[[[middle]]]]	,データは垂直中央になるように流す
,[CODE(HTML)[[[bottom]]]]	,データは下にあわせて流す
,[CODE(HTML)[[[baseline]]]]	,文データは最初の[RUBYB[文行] [line]]の[[基線]]が同じ[RUBYB[表行] [row]]で一致するように配置 (2[RUBYB[文行] [line]]目以降は無制約)

[6] HTML 4 [[DTD]] 的には既定値はありません。 HTML 4
仕様書によれば既定値は [CODE(HTML)[middle]] です。

一方で上位要素からの継承規則があります。
(継承しても得られないときの既定値が [CODE(HTML)[middle]] なのでしょうか?)
継承規則については [CODE(SGML)[%[[cellvalign]]]]
の説明をみてください。



* %cellvalign 属性集合 (HTML 4)

[11] 
[[HTML 4]] の [[DTD]] で定義されている[[引数実体]]
[DFN[[CODE(SGML)[%cellvalign]]]] は、
[[表]]の[[こま]]内の垂直方向の揃え位置に関する1つの属性を含んでいます。

,属性名	,説明
,[CODE(HTMLa)[[[valign]]]]	,揃え位置

仕様書: [[HTML 4]]
<IW:HTML4:"struct/tables.html#alignment">

[14] 
この属性集合は HTML の要素型 [CODE(HTMLe)[[[tbody]]]], 
[CODE(HTMLe)[[[thead]]]], [CODE(HTMLe)[[[tfoot]]]], [CODE(HTMLe)[[[colgroup]]]], 
[CODE(HTMLe)[[[col]]]], [CODE(HTMLe)[[[tr]]]], [CODE(HTMLe)[[[th]]]], 
[CODE(HTMLe)[[[td]]]] で参照されています。

[15] 
姉妹属性集合 [CODE(SGML)[%[[cellhalign]]]] というのもあります。

** 継承

[16] 
[[表]]では、 [CODE(HTMLa)[valign]], [CODE(HTMLa)[dir]], [CODE(HTMLa)[lang]]
の3つの属性は、直接指定がなければ次の優先順で上位要素から継承します。

= こまのデータ内の要素 (例: [CODE(HTMLe)[[[p]]]]) の指定
= こまの要素 ([CODE(HTMLe)[[[th]]]] または [CODE(HTMLe)[[[td]]]]) の指定
= [[行]]・[[行群]]要素 ([CODE(HTMLe)[[[tr]]]] または [CODE(HTMLe)[[[thead]]]]・
[CODE(HTMLe)[[[tbody]]]]・[CODE(HTMLe)[[[tfoot]]]]) の指定
-- またぎ ([CODE(math)[[CODE(HTMLa)[[[rowspan]]]] ≠ [CODE(HTML)[1]]]])
こまでは、最初のこま位置が所属する行・行群から継承
= [[列]]・[[列群]]要素 ([CODE(HTMLe)[[[col]]]] または [CODE(HTMLe)[[[colgroup]]]])
の指定
-- またぎ ([CODE(math)[[CODE(HTMLa)[[[colspan]]]] ≠ [CODE(HTML)[1]]]])
こまでは、最初のこま位置が所属する列・列群から継承
= 表 ([CODE(HTMLe)[[[table]]]]) の指定
= 既定値

仕様書: HTML 4 Inheritance of alignment specifications
<IW:HTML4:"struct/tables.html#alignment-inheritance">

[17] 
HTML 4 仕様書では [CODE(HTMLa)[[[style]]]]
属性も >>16 の規則で継承することになっていますが・・・。

[18] 
[CODE(SGML)[%[[cellhalign]]]] と継承規則はほとんど同じですが、行と列の優先順序が逆です。


* 歴史

- [8] [[HTML 4]]
-- <IW:HTML4:"struct/tables.html#adef-valign">

** SGML としての HTML

[7] [[HTML4]] までの [[SGML]] として定義されていた仕様に従えば[[属性名]]は省略できるはずでしたが、
現実の[[WWWブラウザ]]は[[属性名]]対応していませんでした。

** 属性集合

[4] この属性は [[HTML 4]] [[DTD]] では[[属性集合]]
[CODE(SGML)[[[%cellvalign;]]]] に属していました。

** 非推奨説

[10] [[HTML]] を解説した [[Webサイト]]の中には、
この[[属性]]が [[HTML 4]] や [[XHTML 1.0]]
で[[非推奨]]とされていると説明しているものがありますが、
事実に反します。

;; [13] [[HTML 4.0]] の[[勧告]]が出版された時点では [[CSS 2]]
が[[勧告]]されていなかったので、 [[CSS 1]]
で扱えない[[表]]系の書式指定属性のほとんどが[[非推奨]]にはなっていません。

* 関連

[12] [[MathML]] の [CODE(XMLe)@en[[[math]]]] [[要素]]には [CODE(XMLa)@en[[[altimg]]]]
[[属性]]に対する [CODE(XMLa)@en[[[altimg-valign]]]] [[属性]]があり、 [[HTML]]
の [CODE(HTMLa)@en[[[valign]]]] [[属性]]と似ていますが、構文的には違っています。
