#?SuikaWiki/0.9 * INPUT 要素 WIDTH 属性 (HTML) [1] [[WebTV]] で実装されています。 [2] どういう [[type]] 属性値に対して有効なのかはわかりませんが、 >>1 の記述から、少なくても [CODE(HTML)[text]], [CODE(HTML)[password]], [CODE(HTML)[textarea]] には有効だと思われます。 [CODE(HTML)[image]] やボタン類にもかもしれません。 [[#comment]] * pre 要素型 width 属性 (HTML, XHTML 1) [3] [CODE(HTMLe)[[[pre]]]] [[要素]]の [DFN[[CODE(HTMLa)[width]] [[属性]]]]は、 [[視覚UA]] にその要素を表示するときの望ましい幅についてのヒントを与えます。 [[UA]] は、この情報を適切な文字の[[大きさ]]の選択や、 適当な[[字下げ]]のために使うことができます。 この属性の値の型は [CODE(SGML)[[[NUMBER]]]] です。望ましい幅の文字数を表します。 この属性は[[非推奨]]です。代替として、 [[CSS]] なら [CODE(CSS)[width]] 属性を使うことができます。 [4] 「文字」なんて単位を幅の指定に使えるのは、 [CODE(HTMLe)[pre]] 要素がそもそも[[固定幅フォント]]で表示されることを期待しているからです。 そうはいっても、 HTML 4 は固定幅フォントで表示することを強制していませんし、 現実の UA でも固定幅で表示されるとは限りません。 (今のシステムだと固定幅のフォントが無いことだってあり得るし。) また、「固定幅」そのものが[[ラテン文字]]圏の事情しか考えていない概念で、 漢字圏で一般に固定幅と呼ばれているものは[[半角]]と[[全角]]の二種類の幅があって、全然固定じゃなかったりします。 [[東南亜細亜]]・[[南亜細亜]]・[[亜剌比亜]]で使われている文字体系だと、 そもそも幅を固定することなんて無茶すぎるでしょう。 そんなような事情ですから、たとえこの属性で「文字幅」単位の指定をしたところで、 たぶん、期待した結果は得られないでしょう。しかも、 HTML 4 仕様書によれば、 この属性はあまり実装されていません。 [5] 仕様書: [[HTML 4]] [[#comment]] * 表の幅 ** table 要素 width 属性 (HTML, XHTML 1) [16] [CODE(HTMLe)[[[table]]]] 要素の [DFN[[CODE(HTMLa)[width]] 属性]]は、 [[表]]の幅を表します。この属性は[[視覚UA]] を想定しています。 仕様書: [[HTML 4]] [17] この属性は省略可能です。 省略されている場合には幅は UA が決定します。 [18] この属性は、 HTML 4 では非推奨ではありません ([[Strict]] [[DTD]] でも使えます)。 Strict 思想的には視覚 UA のレンダリングのためだけのこの属性を HTML で使うのは望ましくないのですが、表のレンダリングの特殊性から、 回線の事情や UA の性能のためにやむを得ないと考えられたこともありました。 (現在ではそのような問題はほぼ解消していますから、 もはや必要ないかもしれませんが。) [19] この属性の値の型は [CODE(SGML)[%[[Length]];]] ([[SGML]] 的には [CODE(SGML)[[[CDATA]]]]) です。 従って、無単位の画素数と百分率による割合のいずれかで指定できます。 百分率は利用可能な水平空間に対する割合と見なされます。 [[#comment]] ** colgroup 要素 width 属性 (HTML, XHTML 1) [6] [CODE(HTMLe)[[[colgroup]]]] 要素の [DFN[[CODE(HTMLa)[width]] 属性]]は、 その[[列群]]に含まれる列の幅の既定値を表します。 (列群の幅ではないので注意。) 列群に含まれる列の幅は、 [CODE(HTMLe)[[[col]]]] 要素で別途指定されていればそれが使われます。 そうでない場合は [CODE(HTMLe)[colgroup]] の値が使われます。 仕様書: [[HTML 4]] [9] この属性は省略可能です。 HTML 4 では多くの要素型の [CODE(HTMLa)[width]] 属性は[[非推奨]]とされていますが、 [CODE(HTMLe)[colgroup]] 要素では非推奨ではありません。 (他の表系要素型と同じく、 表のレンダリングにかかわる特殊事情によるものだと思われます。) [7] この値の型は [CODE(SGML)[%[[MultiLength]];]] ([[SGML]] 的には [CODE(SGML)[[[CDATA]]]]) です。 通常の [CODE(SGML)[%MultiLength;]] 型で認められる[[画素]]単位の整数値 ([CODE(SGML)[%[[Pixels]];]] < [CODE(SGML)[%[[Length]];]])、 百分率値 ([CODE(SGML)[%Length;]])、 相対長 ([CODE(SGML)[%MultiLength;]]) の他に、 特別に、 [CODE(HTML)[0*]] という指定ができます。 [8] 値 [CODE(HTML)[0*]] は、列の内容に必要な最小の幅を表します。 この指定があると、表のレンダリングのために列の内容をすべて知らなければならないので、 徐々にレンダリングすることが難しくなります。 HTML 4 仕様書は著者に注意を促しています。 [[#comment]] ** col 要素 width 属性 [10] [CODE(HTMLe)[[[col]]]] 要素の [DFN[[CODE(HTMLa)[width]] 属性]]には、 [[列]]の幅を指定します。 (列の集合の幅ではないことに注意してください。 [CODE(HTMLa)[[[span]]]] 属性が [CODE(HTML)[2]] 以上であっても、適用されるのはそれぞれの列に対してです。) 仕様書: [[HTML 4]] [11] この属性は省略可能です。 省略した場合で、親 [CODE(HTMLe)[[[colgroup]]]] 要素があって、 そこに [CODE(HTMLa)[width]] 属性が指定されていれば、 その値が使われます。 HTML 4 では多くの要素型の [CODE(HTMLa)[width]] 属性は[[非推奨]]とされていますが、 [CODE(HTMLe)[col]] 要素では非推奨ではありません。 (他の表系要素型と同じく、 表のレンダリングにかかわる特殊事情によるものだと思われます。) [12] この値の型は [CODE(SGML)[%[[MultiLength]];]] ([[SGML]] 的には [CODE(SGML)[[[CDATA]]]]) です。 HTML 4 仕様書には、 [CODE(HTMLe)[colgroup]] で使える [CODE(HTML)[0*]] という指定が可能かどうか明記されていませんが、 [CODE(HTMLa)[width]] 属性の意味は [CODE(HTMLe)[colgroup]] 要素のものと同じと書かれていることや、 [CODE(HTMLe)[colgroup]] の属性が [CODE(HTMLa)[col]] の属性の既定値となることから考えても、 使えると取るのが自然でしょう。 [[#comment]] ** 列幅 [13] 仕様書: HTML 4 列幅の指定には 3 (+ 1) 通りの方法があります。 :固定:[[画素]]単位による固定幅の指定。 [SAMP(HTML)[[CODE(HTMLa)[width]]="30"]] のような無単位数の指定がこれにあたります。 固定で指定されていれば、 表を最初の方から徐々に表示していくことができます。 :百分率指定:百分率 (%) 単位による幅の指定。 [SAMP(HTML)[[CODE(HTMLa)[width]]="30%"]] のような指定がこれに当たります。 この割合は表に利用できる空間 (左右の余白の間で、[RUBYB[浮動][float]]を含む。) に対するものです。 この場合も最初の方から徐々に表示していくことができます。 :可変幅:[SAMP(HTML)[3*]] のような星印のついた指定です。 これは表に必要な空間に対するものです。 [CODE(HTMLe)[[[table]]]] 要素に [CODE(HTMLa)[width]] 属性が指定されている時には徐々に表示していくことができますが、 そうで無い場合には表のすべてのデータを読み終わらないと幅を決定できません。 :無指定:列の幅の指定が無い場合、 表のすべてのデータが到着しないと適当な幅を決定できませんから、 徐々に表示することはできません。 UA は、表のレンダリング中にある[[こま]]の表示に必要な幅が足りていない時には再描画してもかまいません。 [14] [PRE(HTML)[
... ...rows...
]PRE] たとえば、 HTML 4 仕様書にあるこの例では、 最初の2つの列の幅は何も考えずに決定できますが、 残りの列の幅はすべてのこまを読まないと決定できません。 3番目の列の幅は、 [CODE(HTML)[0*]] ですから、 必要な最小の幅です。残りの4つは内容に必要な幅を [CODE(math)[2 : 1 : 3]] の割合で取ります。 [15] [PRE(HTML)[
... ...rows...
]PRE] 同じく HTML 4 仕様書にあるこの例は、 [CODE(HTMLe)[table]] 要素に [CODE(HTMLa)[width]] 属性があるので、 [CODE(HTML)[*]] の指定がありながらも表全体を読まずに列幅を決定できます。 この表には12個の列があって、最初の10列はそれぞれ15画素、 最後の2列は25画素ずつ使います。 [[#comment]] * メモ