この文書は
Cascading Style Sheets, level 2 revision 1
CSS 2.1 Specification
W3C Candidate Recommendation 25 February 2004
のAppendix C. Changesの和訳です。
この文書には誤訳による間違いが含まれている可能性がありますので、 参考にする際にはあわせて原文も確認してください。
もし誤訳がありましたら訳者まで連絡を頂ければ修正致しますので、 よろしくお願いします。
また訳者は、あなたがこの邦訳文書によっていかなる損害、不利益を被られても責任はとりませんのでご了承ください。
中野雅之(問い合わせ先)Contents
この付録は資料であり、標準仕様ではない
新しく色に'orange'を追加した
新しくdisplayプロパティの値に'inline-block'を追加した
新しく'content'値に'normal'が追加された. (なぜなら':before {content: ""}' はボックスを生成してしまうからであり, ':before {content: normal}'はそうではない. 'none'ではなく'normal'としたのは, 'content: normal'はCSS3では要素の種類によって様々な意味を持つからである.)
新しく'cursor'プロパティの値に'progress'を追加した
新しく'white-space'プロパティの値に'pre-wrap'と'pre-line'を追加した
現在、ユーザースタイルシートのサポートは推奨ではなく、(たいていの場合)サポートしていなければならない.
プロパティの算出値はパーセント値もまたとることができるようになった. 特に, 次のプロパティでは指定値がパーセント値の場合、パーセント値が継承するようになった:
'text-indent'のみデフォルトで継承され, それ以外は'inherit'キーワードが指定された場合のみ継承されることに注意.
"style"属性は他のどのルールより優先順位が高いように変更された.
UAはCSS以外の他のソースの表示上ヒントを, ユーザーエージェントのデフォルトスタイルシートと同等の重みをもつように扱わなくてはいけない.
'display'プロパティの'compact'値はCSS 2.1から削除された.
絶対配置された要素は"shrink-wrap"することができる 要旨:
'width'と'right' (もしくは 'width'と'left')が共に'auto'の場合, 内容の幅がその要素の幅になり (テーブルセルのアルゴリズムと同様のものを用いる) そして 'right' (もしくは 'left') は決まる. CSS2 はこのケースの場合 'right' (もしくは 'left') に0を設定し,そして幅が決まるとしていた.
通常フローのブロックレベル要素の様に,デフォルトの絶対配置された要素は内容による高さを持っている("shrink-wrap"). 'height' と 'bottom' 共に 'auto'ならば, 'height' の計算値は内容の高さで、それによって 'bottom' が決まる. CSS2はこのケースの場合 'bottom' に0を設定し、そして高さが決まるとしていた.
CSS2の仕様では"rect()"に指定する値はボックスのそれぞれの辺からの距離だが、 現在の(UAの)実装では4つ全て(top,right,bottom,left)の値をボックスの上辺と左辺からの距離と解釈している。 だが、今回の仕様ではこの解釈が正しいようになった。
この問題についてはCSS3のoverflow-clipプロパティの説明(和訳)を見れば簡単です。 CSS2の仕様ではCSS3の"inset-rect()"が正しい解釈でしたが、 現実のメジャーなブラウザが全て現在のような間違った解釈を行っていますので、仕様の方が歩み寄ってこのような結果になりました。
'background-position'において, 文法は"キーワードはパーセント値もしくは長さと組み合わせることができない (上記の組み合わせが可能な組み合わせの全てである)"という部分が削除された. つまり, 'top 25%'といった値も許可される.
'left'値と'right'値を'caption-side'プロパティから削除した.
'text-align'プロパティの<string>値はCSS 2.1から削除された.
有名なブラウザはもしCSSのテーブルモデルではないとしても, 'border-collapse'プロパティの結合ボーダーモデル('collapse')より 分離ボーダーモデル('separate')かその値に近い挙動を初期値とする. 新仕様ではseparateが初期値となった.
'marker'値が'display'プロパティから削除された.
'<uri>'値が削除された.
'size', 'marks', 'page'はCSS 2.1から削除された.
'font-stretch'と'font-size-adjust'プロパティはCSS 2.1から削除された.
フォント記述子と'@font-face'記述子はCSS 2.1から削除された.
'text-shadow'プロパティはCSS 2.1から削除された.
19章にあった音声スタイルシートはCSS 2.1において標準ではなくAppendix Aとなった. 関係のある単位(deg, grad, rad, ms, s, Hz, kHz)もAppendixに移動した,同様に表組みの章にあった'speak-header'プロパティも移動された. 'aural'メディアタイプは無くなった。(代わりに、CSS3では'speech'メディアタイプが追加される予定である。)
以前の資料 appendix C, "フォントのための実装およびパフォーマンス・メモ" がCSS 2.1から削除された.
簡略プロパティはそのサブ・プロパティの値を列挙するかもしくはinherit値を取る. ただし、どのサブ・プロパティ値がinheritの対象なのかわからないことがあるので他のサブ・プロパティ値と共にinherit値を混ぜてはいけない. 多くの簡略プロパティの定義はこの仕様を強制していなかった('border-top', 'border-right', 'border-bottom', 'border-left', 'border', 'background', 'font', 'list-style', 'cue', そして 'outline').
アンダースコア("_")は識別子として有効な文字だ. 単語のマクロ(the lexical macros)の"nmstart"と"nmchar"は今回これも許可された.
リストの三番目に一点追加された:
1.スペース(もくしは他の空白類)で区切る場合: "\26 B" ("&B")
以下のテキストを追加: "この場合, ユーザーエージェントは "CR/LF"のペア(13/10)をひとつの空白類として扱うべきだ."
アンダースコアは識別子として有効だ. "CSS2で識別子に使える文字は [A-Za-z0-9] とISO 10646の161以上、そしてハイフン(-)だ"が次のように変更された。
CSS2で識別子に使える文字は [A-Za-z0-9] とISO 10646の161以上、 そしてハイフン(-)とアンダースコア(_)だ
このセクションのサブセクションで述べられたいくつかの値で 不正確な許可があり"+" or "-"が重複する問題があった.
参考値が示唆された。 ピクセル値は96 dpiが基準で, 90 dpiではない. 視覚角度は0.0227度の代わりに0.0213度, そして腕の長さだけ離れた場合のピクセルサイズは0.28 mmの代わりに0.26 mmとなった.
以下の例の後ろにあったコメントを削除した:
em { color: rgb(255,0,0) } em { color: rgb(100%, 0%, 0%) }
リストの2番目で, 以下の文は不完全だった: "':first-child'は例外で, 文書ツリーから導き出されたものだ." ':lang()'疑似クラスもいくつかのケースで文書から導き出すことができる.
HTMLの例にあった色は画像のなかのそれと一致していなかった.
'transparent'値は'border-top-color', 'border-right-color', 等でも指定可能だ. "Value: <color> | inherit"は次のように変更された.
Value: <color> | transparent | inherit
パディングとして関連づけられた5つのプロパティ ('padding', 'padding-top', 'padding-right', 'padding-bottom', and 'padding-left') は table rows, row groups, header groups, footer groups, columns, と column groupsには適用されない.
次の文が変更された "ボーダーの色はその値が 'groove', 'ridge', 'inset', そして 'outset'の場合はその要素の 'color'プロパティ値を基に描画される"
ボーダーの色はその値が 'groove', 'ridge', 'inset', そして 'outset'の場合はその要素の 'border-color'プロパティ値を基に描画されるべきだが, UAは自身の計算アルゴリズムで実際に使用する色を選択するかもしれない. 例えば, 'border-color'が'silver'の場合, UAは白からダークグレイの間の色で枠線を描画することができる.
'border-top', 'border-right', 'border-bottom', そして'border-left'の最初の値のオプションを<'border-top-width'>から<border-width>に変更した, 更に<'border-style'>を<border-style>に修正している. 'border'では, <'border-width'>を<border-width>に, <'border-style'>を<border-style>に修正している.
'transparent'値は 'border-top', 'border-bottom', 'border-right', 'border-left', と'border'に指定することができる.
"Value: [ <'border-top-width'> || <'border-style'> || <color> | inherit"を次のように修正
Value: [ <border-top-width> || <border-style> || [<color> | transparent] | inherit
'border-top', 'border-right', 'border-bottom', そして'border-left'の最初の値のオプションを<'border-top-width'>から<border-width>に変更した, 更に<'border-style'>を<border-style>に修正している. 'border'では, <'border-width'>を<border-width>に, <'border-style'>を<border-style>に修正している.
'static'値の定義は 'top', 'right', 'bottom', と'left'プロパティの適用を無視するように変更.
'top', 'right', 'bottom', と'left'プロパティで, オフセットの基準がボックスの内容辺というのが不正確だった. 適切な辺は マージン辺だ. 'top'の場合, 次のように修正されている: "このプロパティはボックスのマージン上辺と(そのボックスの)コンテンナブロックの上辺との距離を明示するものである."
最初の文を "一度ボックスを通常フローで配置して、" を"一度ボックスを通常フローのもしくはフロートで配置して、"に修正.
フロート要素の場合,'display'プロパティはブロックレベルに読み替えられるが,必ずしも'block'値をとる必要はない. リスト3番目を "次の場合は別だ, 'float'(の要素が)'none'以外の値を持つ場合, 'display'は'block'値となるそしてフロートする"と変更し、どのような値に読み替えるべきかの一覧表を用意した.
変更前
'width'に'auto'値が指定された場合、その要素の固有の幅をその計算値とする.
変更後
'width'に'auto'値が指定され、なおかつ'height'にも'auto'値が指定された場合, その要素の固有の幅をその計算値とする.もし'width'に'auto'値が指定され、'height'に'auto'値以外が指定された場合, 'width'の計算値は(要素の固有の幅) * ( (heightの計算値) / (要素固有の高さ) )とする.
等式に続く段落の最後の文 ("'direction'が'ltr'値の場合,'margin-left'の代わりにそこで発生する")の'ltr'を'rtl'に修正.
変更前
'height'に'auto'値が指定された場合、その要素の固有の高さをその計算値とする.
変更後
'height'に'auto'値が指定され、なおかつ'width'にも'auto'値が指定された場合, その要素の固有の高さをその計算値とする.もし'height'に'auto'値が指定され、'width'に'auto'値以外が指定された場合, 'height'の計算値は(要素の固有の高さ) * ( (widthの計算値) / (要素固有の幅) )とする.
ブロックレベル要素,通常フローの非置換要素, とフロート要素する非置換要素の高さ計算方法は正しくなかった. マージンの相殺がない事例を考慮するように修正した, それはパディングとボーダーの存在の結果である.
DIV要素の子要素であるBLOCKQUOTE要素の更に子要素のDIV要素の表示例が間違っていた. 最初のスタイル指定では両方のDIV要素に対して指定されている, だから2番目のDIV要素も(赤い)ボーダーが表示されるべきだ. 2番目のDIV要素はCITE要素に変更したので, この要素が赤いボーダーを持つことはなくなった.
"initial"と"inherited"を変更:
Initial: visible
Inherited: yes
これは元の定義と同じ意味を持っている,しかしroot要素の不確定の状態を取り除くことができる (これはDOMの実装上の問題だ).
'list-style'プロパティの下にある例:
ul > ul { list-style: circle outside } /* Any UL child of a UL */
これは正しいHTMLのマークアップではない (UL要素は 他のUL要素の子にはなれない). そのためLI要素を間に挿入した.
'Totum'と'Kodic'は'serif'ではなく'sans-serif'. 'pathang'は'sans-serif'ではなく'serif'.
リストの2番目,"UAは'font-family'記述子を用いる" を"UAは'font-family'プロパティを用いる"に修正.
リストの6番目,"もし3, 4, 5と失敗した場合"を"もし2, 3, 4, 5と失敗した場合"に修正.
'white-space'プロパティは全ての要素に適用可能, ブロックレベル要素だけではない.
table-header-groupの定義で, "ユーザーエージェントはフッタの列をその表(table)を印刷する間は繰り返し出力する."の"フッタ" を "ヘッダ" に修正."
リストの最初の文章を生成規則の前の散文に移動した.また消失規則(missing rules)追加した.
以前のメモ:
メモ. テーブルのセルは相対は位置か絶対配置してもよい, しかしそれを推奨しない: 絶対配置された要素とフローティング要素はフローから取り除かれてしまうので, 表組みに影響が出るからだ.
改められたメモ:
メモ. テーブルのセルは配置してもよい, しかしそれを推奨しない: 絶対もしくは固定配置された要素はフローティング要素と同様に, フローから取り除かれてしまうので, 表の大きさに影響が出るからだ.
変更前:
その文書言語の他の要素のように, 表内部要素は内容、パディング、枠線を持った矩形を生成する.
変更後:
その文書言語の他の要素のように, 表内部要素は内容、枠線を持った矩形を生成する. セルはパディングを持っても良い。しかし、表内部要素はマージンを持たない.
行と列は表が結合ボーダーモデルだった場合は単に全体をカバーするが, 分離ボーダーモデルの場合はそうではない. 2, 3, 4, 5の説明では適用する領域が正され, その領域は列,行,列グループ,行グループ上のセルによってカバーされると定義している.
画像の "cell-spacing" を "border-spacing" に修正.
アンダースコア("_")は識別子として有効だ.単語マクロ(lexical macros)の定義の "nmstart" と "nmchar" が修正された.
トークンは大文字小文字を意識しない, だから大文字の A-Z も含む方が良い.
(同様の修正が section 4.1.1 にも入っている, 上へ.)
XML スタイルシート PIの仕様は
CSS2仕様書が完成してからできたものだ. フルXMLの例の1行目のように
<?XML:stylesheet type="text/css"
href="bach.css"?>
とは書くべきではない, 次のように記述すべきだ
<?xml-stylesheet type="text/css" href="bach.css"?>
DELIMはシングルクォーテーションもダブルクォーテーションも含むべきではなかった. section 4.1.6 の文字列を参考にすると, それらの周りに一致するシングル・ダブルクォーテーションを持たねばならない.
sectionの終わりのほうに, '"*"のどちらかにある空白'とあるがこれは誤解を招く表現だ. このメモは必ずしも"*"の両側に(文法がこの場合必要としないので)余白が必要だとほのめかす必要はなく、 このケースでは空白を使うかもしれないと書くべきだ.
最後の一段落にあった"優先(precedence)"という単語は以前から"特定(specificity)"と書いておくべきだった.
sectionの最後にネストされたブロックレベル要素の場合で疑似要素がどこになるのかという説明を追加した
'inherit'値はそのプロパティの値が継承されることになる つまり、値を継承すべきではないプロパティでも継承できることを意味する.
"与えられたスタイルシートは他のスタイルシートからインポートした規則を上書きする仕様だ."を "与えられたスタイルシートは他のスタイルシートからインポートした同じ重みの規則を上書きする仕様だ."に変更。
以下のメモを追加:
重みはセレクタの形でのみ基準となる. 特に, "
[id=p33]
"という形なら属性セレクタとして計算される (a=0, b=1, c=0), たとえid
属性が"ID"を値に持つとDTDで決められていても、だ.
テキストはメディアタイプが互いに排他的なことを明示するために追加された.
UAは同時にひとつのメディアタイプでレンダリングするということらしいです。 ただし、印刷機能のようにUA自体は別の機能で別のメディアタイプを認識するかもしれません。
'background'プロパティによる背景の指定は内容,パディングとボーダーの領域が対象だ. マージンの背景は常に透明である.
垂直方向のマージンの相殺についてのリストの最初の項目に明確なメモを追加した:
メモ. 兄弟もしくは祖先ではない要素によって隣り合うボックスであってもよい.
"インラインボックスが分割される時, マージン, ボーダー, そしてパディングはその切断面では表示に影響しない."という一文は 既に統括されていた. マージン, ボーダー, そしてパディングは(いくつに分割されようとも)切断面では常に表示に影響しない.
相対配置のボックスは必ずしも新しいコンテナブロックを生成しない. そのため2番目の段落を変更した.
相対配置された'left', 'right', 'top', 'bottom'プロパティに関する例を明文化した.
最後の段落:
HTML ユーザーエージェントとして適合するなら作者もしくはユーザースタイルシートの 'direction'及び'unicode-bidi'プロパティを無視するかもしれない.
"無視"の意味は、もし'unicode-bidi'か'direction'プロパティの値が HTML 4.0の"dir"属性の値と競合した場合である, その時ユーザーエージェントはCSSのプロパティ値より(HTMLの)dir値を採るかもしれない.
ユーザーエージェントはCSS2に順応するために双方向テキストをサポートすることが無い限り'direction'と'unicode-bidi'プロパティのサポートを必要とはされない (HTML 4.0の事例を除いて上述の通り).
この文はよりはっきりと書き直された.
sectionの末尾に次のメモを追加:
メモ。 'width'プロパティ'max-width'プロパティより大きいかもしれないし、 'min-width'プロパティより小さいかもしれない. 特に, それが負でなくても. section 10.4 参照.
UAはルート要素のコンテナブロック自由に選ぶ(see 10.1), そのため、この文は提案として付け加えられた:
UAはルート要素の高さのパーセント値を表示領域との割合で計算するかもしれない.
この段落を明文化した:
メモ。 置換要素は'font-size'と'line-height'プロパティを持つ, しかしこれらはボックスの高さを決めるために直接には使われない. 'font-size'プロパティは'em'と'ex'単位の基準となる,そして'line-height'プロパティは'vertical-align'で移動する範囲となる.
以下のように:
メモ。置換要素は'font-size'と'line-height'プロパティを持つ しかしこれらはボックスの高さを決めるために直接には使われない: 'em'と'ex'値は'font-size'の相対値である,そして 'vertical-align'プロパティのパーセント値は'line-height'プロパティに対する相対値である.
'line-height'プロパティの下,"内容がインラインレベルから成り立っているブロックレベル要素に設定した場合, それはインラインボックスの最小の高さの指定となる," 以下をこれに追加した:
まさに、あたかもそれぞれのラインボックスが'line-height'プロパティと'font-size'プロパティによるゼロ幅のラインボックスで開始されるかのように、 最小限の高さはブロックのベースラインに及ばない最小限の高さ、及びそれの下の最小深さから決まる (TEX では"strut"と呼ぶ).
オーバーフローが起こるかもしれない時のリストの最後の2つへの説明:
'scroll'の下の文から'projection'を削除した
対象メディアが'print'か'projection'でこの値が指定された場合, あふれる内容も印刷されるべきだ.
"rect()"の値はカンマ区切りであるべきだ. 現在の仕様では<shape>の定義はこの下りから始まる:
CSS2では, <shape> の値は: rect (<top>, <right>, <bottom>, <left>) だけが妥当だった.
このあいまいさが原因だ, ユーザーエージェントはカンマ無しであっても"rect()"を解釈してくれるかもしれない.
以下の行の説明:
:before と :after 疑似要素の'display'プロパティの値は追随してもよい:
2番目の段落の末尾に次の文を追加した:
'close-quote'はdepthを負にすることがあるがそれはエラーで無視される: depthは0を保ち引用記号は表示されない('content'プロパティの値がリセットされたにもかかわらずだ).
ヘブライ語の採番を明記した "(Alef, Bet, ... Tet Vav, Tet Zayin, ... Yod Tet, Kaf ...)".
2番目の文章: "ボックスモデルについては, 'background'プロパティはその内容とパディングの背景を指す" で今はボーダーについても言及している. (section 8.1のエラッタ参照.)
ボックスモデルについては, 'background'プロパティはその内容とパディングとボーダーの背景を指す
4番目の段落の末尾に"ユーザーエージェントは以下の背景を塗りつぶす先行規則を見よ"を追加 以下の単語: "キャンバスの".
'background-attachment'の最初の段落の後ろにこのメモを追加:
文書の表示領域は文書毎にひとつだけである. つまり, ある要素がスクロール手段を持っている場合('overflow'プロパティ参照)でも, 'fixed'の指定された背景はそれによって移動しない.
'background-repeat'の下, "内容とパディングの領域をタイリングすることでカバーする [...]"は正しくは
"内容とパディングとボーダーの領域をタイリングすることでカバーする [...]".
'background-attachment'の下, "画像が固定されている場合でもそれが見えるのは要素の背景,パディング領域に限られる"は正しくは
画像が固定されている場合でもそれが見えるのは要素の背景, パディングもしくはボーダー領域に限られる
追加:
'text-indent'の値は負でも良い,しかし実装上の限界があるかもしれない.
以下の説明: "'text-indent'の値は負でもよい,しかし'overflow'の値がテキストを表示するか否かを左右する."
"left, right, center そして justify"の下の文章の"double justify"を"justify"に変更.
印刷用語だと思うのですが"double justify"と"justify"の訳語がわかりません。
リストの6番目'これらの空のセルは透明だ'を次のように変更した
もし'empty-cells'プロパティの値が'hide'なら, それらの"空"セルは透明で, 列(row), 列グループ(row group), 行(column), 行グループ(column group), 表(table)の背景が透けて見える.
列と行の背景に関する曖昧な点を取り除くために, 次の文をリストの6番目の後に追加した:
結合ボーダーモデルにおける列, 行, 列グループ, 行グループの辺はどちらかのセルのボーダーを中心に考えた仮定のグリッド線に一致する. (このように, このモデルでは列はいかなるギャップも残さずにテーブルを覆う.また, 行についてもこれと同様に考える.) 分離ボーダーモデルの場合, 辺はセルのボーダー辺と一致する. (このように, このモデルでは, 列や行の間にはギャップが発生するかもしれない, 'border-spacing' プロパティ参照.)
sectionの最後に以下の段落を追加:
メモ。もし表が'border-collapse: separate'だった場合, 'border-spacing'プロパティが与える領域の背景は常に表の背景である. 17.6.1参照
このsectionの最初の段落の後に以下の段落を追加:
このsectionの内容はsection 10.3で述べられた幅の計算方法規則をオーバーライドする. 特に表のマージンが'0'で幅が'auto'の場合, その表はその内包するブロックを満たすために自動的に大きさを設定しない. しかし, 一度その表の幅の計算値を見つけれれば(使用されるアルゴリズムは 既知の事実かUA依存のアルゴリズムが適当な場合)section 10.3の他の部分が適用される. それゆえに例えば表は左右のマージンが'auto'値ならばセンタリングすることができる.
ワーキンググループは自動的に表が内在ブロックに合わせる方法をCSS3で紹介するかもしれない.
行・列の背景の揃えについて説明を追加した. "この(セル間の)スペースはtable要素の背景が表示される"という文を次のものと置き換えてるいる:
このスペースでは, 列, 行, 列グループ, 行グループの背景は見えず, 表組み自体の背景が透けて見える.
'empty-cells'プロパティはボーダーのみをコントロールするわけではなく,背景色もコントロールする.
文の後に"そして padding-lefti と padding-rightiは左(もしくは右)のセル i のパディングを表す."を追加.
'ButtonHighlight'値の記述を"Dark shadow"から"Highlight color"に変更した.
"'display'プロパティに類似している" は誤解を招く句だった.'speak'プロパティはいくつかの点で'visibility'プロパティに似ているが、'display'プロパティに似ている点もある.
文法に存在しない次の一文をスキャナから削除した:
"@"{ident} {return ATKEYWORD;}
DIMENトークンは識別子の後に数字が続いてもスキャナはそれをふたつのトークンではなくひとつのトークンとして扱う. このケースはCSS2では間違いとされている.
"[URI]" RFCになった草案を参照していたので参照を変更した.